| MPIC interrupt controller | |
| ========================= | |
| Device types supported: | |
| KVM_DEV_TYPE_FSL_MPIC_20 Freescale MPIC v2.0 | |
| KVM_DEV_TYPE_FSL_MPIC_42 Freescale MPIC v4.2 | |
| Only one MPIC instance, of any type, may be instantiated. The created | |
| MPIC will act as the system interrupt controller, connecting to each | |
| vcpu's interrupt inputs. | |
| Groups: | |
| KVM_DEV_MPIC_GRP_MISC | |
| Attributes: | |
| KVM_DEV_MPIC_BASE_ADDR (rw, 64-bit) | |
| Base address of the 256 KiB MPIC register space. Must be | |
| naturally aligned. A value of zero disables the mapping. | |
| Reset value is zero. | |
| KVM_DEV_MPIC_GRP_REGISTER (rw, 32-bit) | |
| Access an MPIC register, as if the access were made from the guest. | |
| "attr" is the byte offset into the MPIC register space. Accesses | |
| must be 4-byte aligned. | |
| MSIs may be signaled by using this attribute group to write | |
| to the relevant MSIIR. | |
| KVM_DEV_MPIC_GRP_IRQ_ACTIVE (rw, 32-bit) | |
| IRQ input line for each standard openpic source. 0 is inactive and 1 | |
| is active, regardless of interrupt sense. | |
| For edge-triggered interrupts: Writing 1 is considered an activating | |
| edge, and writing 0 is ignored. Reading returns 1 if a previously | |
| signaled edge has not been acknowledged, and 0 otherwise. | |
| "attr" is the IRQ number. IRQ numbers for standard sources are the | |
| byte offset of the relevant IVPR from EIVPR0, divided by 32. | |
| IRQ Routing: | |
| The MPIC emulation supports IRQ routing. Only a single MPIC device can | |
| be instantiated. Once that device has been created, it's available as | |
| irqchip id 0. | |
| This irqchip 0 has 256 interrupt pins, which expose the interrupts in | |
| the main array of interrupt sources (a.k.a. "SRC" interrupts). | |
| The numbering is the same as the MPIC device tree binding -- based on | |
| the register offset from the beginning of the sources array, without | |
| regard to any subdivisions in chip documentation such as "internal" | |
| or "external" interrupts. | |
| Access to non-SRC interrupts is not implemented through IRQ routing mechanisms. |