qemu/include/hw
David Gibson 81106ddd1a spapr: Formalize notion of active interrupt controller
spapr now has the mechanism of constructing both XICS and XIVE instances of
the SpaprInterruptController interface.  However, only one of the interrupt
controllers will actually be active at any given time, depending on feature
negotiation with the guest.  This is handled in the current code via
spapr_irq_current() which checks the OV5 vector from feature negotiation to
determine the current backend.

Determining the active controller at the point we need it like this
can be pretty confusing, because it makes it very non obvious at what
points the active controller can change.  This can make it difficult
to reason about the code and where a change of active controller could
appear in sequence with other events.

Make this mechanism more explicit by adding an 'active_intc' pointer
and an explicit spapr_irq_update_active_intc() function to update it
from the CAS state.  We also add hooks on the intc backend which will
get called when it is activated or deactivated.

For now we just introduce the switch and hooks, later patches will
actually start using them.

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Reviewed-by: Greg Kurz <groug@kaod.org>
Reviewed-by: Cédric Le Goater <clg@kaod.org>
2019-10-24 09:36:55 +11:00
..
acpi hw/arm: Use GED for system_powerdown event 2019-10-05 17:12:09 -04:00
adc include: Make headers more self-contained 2019-08-16 13:31:51 +02:00
arm hw/arm/omap1: Create the RAM in the board 2019-10-22 17:44:01 +01:00
audio Include hw/qdev-properties.h less 2019-08-16 13:31:53 +02:00
block Include exec/memory.h slightly less 2019-08-16 13:31:52 +02:00
char escc: introduce a selector for the register bit 2019-09-07 08:32:12 +02:00
core cputlb: Remove cpu->mem_io_vaddr 2019-09-25 10:56:28 -07:00
cpu Include hw/qdev-properties.h less 2019-08-16 13:31:53 +02:00
cris Include hw/qdev-properties.h less 2019-08-16 13:31:53 +02:00
display Include hw/qdev-properties.h less 2019-08-16 13:31:53 +02:00
dma Include hw/hw.h exactly where needed 2019-08-16 13:31:52 +02:00
firmware machine: Refactor smp-related call chains to pass MachineState 2019-07-05 17:07:36 -03:00
gpio hw/gpio: Add basic Aspeed GPIO model for AST2400 and AST2500 2019-09-13 16:05:00 +01:00
hyperv hyperv: process POST_MESSAGE hypercall 2018-10-19 13:44:14 +02:00
i2c aspeed/i2c: Add AST2600 support 2019-10-15 18:09:04 +01:00
i386 hw/acpi: Make ACPI IO address space configurable 2019-10-05 17:12:08 -04:00
ide sysemu: Move the VMChangeStateEntry typedef to qemu/typedefs.h 2019-08-16 13:31:53 +02:00
input Include hw/qdev-properties.h less 2019-08-16 13:31:53 +02:00
intc include: Make headers more self-contained 2019-08-16 13:31:51 +02:00
ipack Include hw/qdev-properties.h less 2019-08-16 13:31:53 +02:00
ipmi ipmi: Allow a size value to be passed for I/O space 2019-09-20 14:08:10 -05:00
isa Include hw/qdev-properties.h less 2019-08-16 13:31:53 +02:00
kvm Supply missing header guards 2019-06-12 13:20:21 +02:00
lm32 Include qemu-common.h exactly where needed 2019-06-12 13:20:20 +02:00
m68k m68k: Add NeXTcube machine 2019-09-07 08:31:51 +02:00
mem Include sysemu/hostmem.h less 2019-08-16 13:31:53 +02:00
mips Include hw/irq.h a lot less 2019-08-16 13:31:52 +02:00
misc aspeed/sdmc: Add AST2600 support 2019-10-15 18:09:04 +01:00
net aspeed: add support for the Aspeed MII controller of the AST2600 2019-10-15 18:09:05 +01:00
nvram include: Make headers more self-contained 2019-08-16 13:31:51 +02:00
pci ipmi: Add PCI IPMI interfaces 2019-09-20 14:08:10 -05:00
pci-bridge Supply missing header guards 2019-06-12 13:20:21 +02:00
pci-host spapr: Fold spapr_phb_lsi_qirq() into its single caller 2019-10-04 19:08:22 +10:00
ppc spapr: Formalize notion of active interrupt controller 2019-10-24 09:36:55 +11:00
rdma {hmp, hw/pvrdma}: Expose device internals via monitor interface 2019-03-16 15:52:44 +02:00
riscv riscv: sifive_u: Remove handcrafted clock nodes for UART and ethernet 2019-09-17 08:42:49 -07:00
s390x Include hw/qdev-properties.h less 2019-08-16 13:31:53 +02:00
scsi sysemu: Move the VMChangeStateEntry typedef to qemu/typedefs.h 2019-08-16 13:31:53 +02:00
sd hw/sd/sdhci: Add dummy Samsung SDHCI controller 2019-10-22 17:44:00 +01:00
semihosting include: Make headers more self-contained 2019-08-16 13:31:51 +02:00
sh4 Include hw/irq.h a lot less 2019-08-16 13:31:52 +02:00
sparc Include hw/qdev-properties.h less 2019-08-16 13:31:53 +02:00
ssi aspeed/smc: Introduce segment operations 2019-10-15 18:09:04 +01:00
timer aspeed/timer: Add support for IRQ status register on the AST2600 2019-10-15 18:09:04 +01:00
tricore Include hw/irq.h a lot less 2019-08-16 13:31:52 +02:00
unicore32 hw/unicore32: restrict hw addr defines to source file 2017-12-18 17:07:02 +03:00
usb usb: Add basic code to emulate Chipidea USB IP 2018-02-09 10:40:30 +00:00
vfio vfio: Turn the container error into an Error handle 2019-10-04 18:49:18 +02:00
virtio virtio: add vhost-user-fs base device 2019-10-05 17:43:55 -04:00
watchdog hw: wdt_aspeed: Add AST2600 support 2019-10-15 18:09:04 +01:00
xen xen: perform XenDevice clean-up in XenBus watch handler 2019-09-24 12:18:47 +01:00
xtensa Include hw/irq.h a lot less 2019-08-16 13:31:52 +02:00
boards.h numa: Introduce MachineClass::auto_enable_numa for implicit NUMA node 2019-10-15 18:18:08 -03:00
bt.h Include hw/irq.h a lot less 2019-08-16 13:31:52 +02:00
elf_ops.h elf-ops.h: fix int overflow in load_elf() 2019-09-16 12:32:21 +02:00
empty_slot.h include: Make headers more self-contained 2019-08-16 13:31:51 +02:00
fw-path-provider.h Include qemu-common.h exactly where needed 2019-06-12 13:20:20 +02:00
hotplug.h qom: make interface types abstract 2018-12-11 15:45:22 -02:00
hw.h Include hw/hw.h exactly where needed 2019-08-16 13:31:52 +02:00
ide.h ide/via: Rename functions to match device name 2019-01-25 14:52:12 -05:00
irq.h Include hw/irq.h a lot less 2019-08-16 13:31:52 +02:00
loader-fit.h Use #include "..." for our own headers, <...> for others 2018-02-09 05:05:11 +01:00
loader.h elf-ops.h: fix int overflow in load_elf() 2019-09-16 12:32:21 +02:00
nmi.h Include qemu-common.h exactly where needed 2019-06-12 13:20:20 +02:00
or-irq.h Include hw/irq.h a lot less 2019-08-16 13:31:52 +02:00
pcmcia.h Include hw/qdev-properties.h less 2019-08-16 13:31:53 +02:00
platform-bus.h platform-bus-device: use device plug callback instead of machine_done notifier 2018-05-10 18:10:56 +01:00
ptimer.h ptimer: Provide new transaction-based API 2019-10-15 18:09:02 +01:00
qdev-core.h qdev/machine: Introduce hotplug_allowed hook 2019-09-16 06:57:24 -04:00
qdev-dma.h Supply missing header guards 2019-06-12 13:20:21 +02:00
qdev-properties.h qdev: Add a no default uuid property 2019-09-20 14:09:02 -05:00
register.h hw: register: Run post_write hook on reset 2018-03-01 11:05:43 +00:00
registerfields.h Use #include "..." for our own headers, <...> for others 2018-02-09 05:05:11 +01:00
stream.h Include qemu-common.h exactly where needed 2019-06-12 13:20:20 +02:00
sysbus.h Include hw/qdev-properties.h less 2019-08-16 13:31:53 +02:00
usb.h Include hw/qdev-properties.h less 2019-08-16 13:31:53 +02:00