qemu/hw/ppc
David Gibson 307b7715d0 spapr: Eliminate DRC 'signalled' state variable
The 'signalled' field in the DRC appears to be entirely a torturous
workaround for the fact that PCI devices were started in UNISOLATED state
for unclear reasons.

1) 'signalled' is already meaningless for logical (so far, all non PCI)
DRCs.  It's always set to true (at least at any point it might be tested),
and can't be assigned any real meaning due to the way signalling works for
logical DRCs.

2) For PCI DRCs, the only time signalled would be false is when non-zero
functions of a multifunction device are hotplugged, followed by function
zero (the other way around is explicitly not permitted). In that case the
secondary function DRCs are attached, but the notification isn't sent to
the guest until function 0 is plugged.

3) signalled being false is used to allow a DRC detach to switch mode
back to ISOLATED state, which allows a secondary function to be hotplugged
then unplugged with function 0 never inserted.  Without this a secondary
function starting in UNISOLATED state couldn't be detached again without
function 0 being inserted, all the functions configured by the guest, then
sent back to ISOLATED state.

4) But now that PCI DRCs start in ISOLATED state, there's nothing to be
done.  If the guest doesn't get the notification, it won't switch the
device to UNISOLATED state, so nothing prevents it from being unplugged.
If the guest does move it to UNISOLATED state without the signal (due to
a manual drmgr call, for instance) then it really isn't safe to unplug it.

So, this patch removes the signalled variable and all code related to it.

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Reviewed-by: Greg Kurz <groug@kaod.org>
Reviewed-by: Michael Roth <mdroth@linux.vnet.ibm.com>
2017-06-30 14:03:32 +10:00
..
e500-ccsr.h ppc: do not use ../ in include files 2013-03-01 13:57:33 +01:00
e500.c shutdown: Add source information to SHUTDOWN and RESET 2017-05-23 13:28:17 +02:00
e500.h target-ppc: Eliminate redundant and incorrect function booke206_page_size_to_tlb 2016-07-01 09:57:01 +10:00
e500plat.c dma: do not depend on kvm_enabled() 2016-05-19 16:42:28 +02:00
fdt.c Move target-* CPU file into a target/ folder 2016-12-20 21:52:12 +01:00
mac_newworld.c ppc: add qemu_vga.ndrv ROM to fw_cfg interface for NewWorld Macs 2017-05-11 09:45:15 +10:00
mac_oldworld.c ppc: add qemu_vga.ndrv ROM to fw_cfg interface for OldWorld Macs 2017-05-11 09:45:15 +10:00
mac.h Clean up ill-advised or unusual header guards 2016-07-12 16:20:46 +02:00
Makefile.objs ppc/pnv: add initial IPMI sensors for the BMC simulator 2017-04-26 12:41:56 +10:00
mpc8544_guts.c shutdown: Add source information to SHUTDOWN and RESET 2017-05-23 13:28:17 +02:00
mpc8544ds.c ppc: Clean up includes 2016-01-29 15:07:22 +00:00
pnv_bmc.c ppc/pnv: generate an OEM SEL event on shutdown 2017-04-26 12:41:56 +10:00
pnv_core.c pnv-core: use get_uint() for "core-pir" property 2017-06-20 14:31:33 +02:00
pnv_lpc.c ppc/pnv: enable only one LPC bus 2017-04-26 12:41:55 +10:00
pnv_occ.c ppc/pnv: Add OCC model stub with interrupt support 2017-04-26 12:00:42 +10:00
pnv_psi.c xics: introduce macros for ICP/ICS link properties 2017-06-09 12:12:34 +10:00
pnv_xscom.c kvm: move cpu synchronization code 2017-01-19 22:07:46 +01:00
pnv.c object: use more specific property type names 2017-06-20 14:31:32 +02:00
ppc4xx_devs.c qemu-common: push cpu.h inclusion out of qemu-common.h 2016-05-19 16:42:29 +02:00
ppc4xx_pci.c qdev: Replace cannot_instantiate_with_device_add_yet with !user_creatable 2017-05-17 10:37:00 -03:00
ppc405_boards.c clean-up: removed duplicate #includes 2016-10-28 18:17:24 +03:00
ppc405_uc.c shutdown: Add source information to SHUTDOWN and RESET 2017-05-23 13:28:17 +02:00
ppc405.h Remove unused function declarations 2016-09-15 15:32:22 +03:00
ppc440_bamboo.c target-ppc: Add MMU model check for booke machines 2017-02-02 09:30:06 +11:00
ppc_booke.c ppc_booke: drop useless assignment 2017-05-07 09:57:51 +03:00
ppc.c shutdown: Add source information to SHUTDOWN and RESET 2017-05-23 13:28:17 +02:00
ppce500_spin.c hw/ppc: QOM'ify ppce500_spin.c 2017-01-31 10:10:13 +11:00
prep_systemio.c prep: add PReP System I/O 2017-01-31 10:10:13 +11:00
prep.c hw/ppc/prep: Remove superfluous call to soundhw_init() 2017-06-30 14:03:31 +10:00
rs6000_mc.c prep: add IBM RS/6000 7020 (40p) memory controller 2017-01-31 10:10:13 +11:00
spapr_cpu_core.c spapr: prevent QEMU crash when CPU realization fails 2017-06-30 14:03:31 +10:00
spapr_drc.c spapr: Eliminate DRC 'signalled' state variable 2017-06-30 14:03:32 +10:00
spapr_events.c spapr: Eliminate DRC 'signalled' state variable 2017-06-30 14:03:32 +10:00
spapr_hcall.c pseries: Move CPU compatibility property to machine 2017-06-30 14:03:31 +10:00
spapr_iommu.c vmstate: error hint for failed equal checks 2017-06-28 11:18:44 +02:00
spapr_ovec.c spapr: replace debug printf with trace points 2017-02-22 11:28:28 +11:00
spapr_pci_vfio.c Use #include "..." for our own headers, <...> for others 2016-07-12 16:19:16 +02:00
spapr_pci.c vmstate: error hint for failed equal checks 2017-06-28 11:18:44 +02:00
spapr_rng.c hw: explicitly include qemu-common.h and cpu.h 2016-03-22 22:20:17 +01:00
spapr_rtas_ddw.c spapr_pci/spapr_pci_vfio: Support Dynamic DMA Windows (DDW) 2016-07-05 14:31:08 +10:00
spapr_rtas.c pseries: Correct panic behaviour for pseries machine type 2017-06-08 14:38:18 +10:00
spapr_rtc.c ppc/spapr: QOM'ify sPAPRRTCState 2017-04-26 12:00:41 +10:00
spapr_vio.c vmstate: error hint for failed equal checks 2017-06-28 11:18:44 +02:00
spapr.c hw/ppc/spapr.c: consecutive 'spapr->patb_entry = 0' statements 2017-06-30 14:03:31 +10:00
trace-events spapr: Clean up handling of DR-indicator 2017-06-08 14:38:26 +10:00
virtex_ml507.c target-ppc: Add MMU model check for booke machines 2017-02-02 09:30:06 +11:00