c04d6cfa3f
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 |