mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-12-22 07:28:36 -07:00
Basically, in HW the layout of the interrupt network is:
- One ICP per processor thread (the "presenter"). This contains the
registers to fetch a pending interrupt (ack), EOI, and control the
processor priority.
- One ICS per logical source of interrupts (ie, one per PCI host
bridge, and a few others here or there). This contains the per-interrupt
source configuration (target processor(s), priority, mask) and the
per-interrupt internal state.
Under PAPR, there is a single "virtual" ICS ... somewhat (it's a bit
oddball what pHyp does here, arguably there are two but we can ignore
that distinction). There is no register level access. A pair of firmware
(RTAS) calls is used to configure each virtual interrupt.
So our model here is somewhat the same. We have one ICS in the emulated
XICS which arguably *is* the emulated XICS, there's no point making it a
separate "device", that would just be gross, and each VCPU has an
associated ICP.
Yet we call the "XICS" struct icp_state and then the ICPs
'struct icp_server_state'. It's particularly confusing when all of the
functions have xics_prefixes yet take *icp arguments.
Rename:
struct icp_state -> XICSState
struct icp_server_state -> ICPState
struct ics_state -> ICSState
struct ics_irq_state -> ICSIRQState
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
Message-id: 1374175984-8930-12-git-send-email-aliguori@us.ibm.com
[aik: added ics_resend() on post_load]
Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
|
||
|---|---|---|
| .. | ||
| acpi | ||
| arm | ||
| audio | ||
| block | ||
| char | ||
| cpu | ||
| cris | ||
| i2c | ||
| i386 | ||
| input | ||
| isa | ||
| kvm | ||
| lm32 | ||
| m68k | ||
| mips | ||
| misc | ||
| nvram | ||
| pci | ||
| pci-host | ||
| ppc | ||
| s390x | ||
| scsi | ||
| sh4 | ||
| sparc | ||
| timer | ||
| unicore32 | ||
| virtio | ||
| xen | ||
| boards.h | ||
| bt.h | ||
| devices.h | ||
| elf_ops.h | ||
| empty_slot.h | ||
| hw.h | ||
| ide.h | ||
| irq.h | ||
| loader.h | ||
| pcmcia.h | ||
| ptimer.h | ||
| qdev-core.h | ||
| qdev-dma.h | ||
| qdev-properties.h | ||
| qdev.h | ||
| sd.h | ||
| ssi.h | ||
| stream.h | ||
| sysbus.h | ||
| usb.h | ||
| xilinx.h | ||