qemu-e2k/hw/ppc
Greg Kurz 0990ce6a2e ppc: Add intc_destroy() handlers to SpaprInterruptController/PnvChip
SpaprInterruptControllerClass and PnvChipClass have an intc_create() method
that calls the appropriate routine, ie. icp_create() or xive_tctx_create(),
to establish the link between the VCPU and the presenter component of the
interrupt controller during realize.

There aren't any symmetrical call to be called when the VCPU gets unrealized
though. It is assumed that object_unparent() is the only thing to do.

This is questionable because the parenting logic around the CPU and
presenter objects is really an implementation detail of the interrupt
controller. It shouldn't be open-coded in the machine code.

Fix this by adding an intc_destroy() method that undoes what was done in
intc_create(). Also NULLify the presenter pointers to avoid having
stale pointers around. This will allow to reliably check if a vCPU has
a valid presenter.

Signed-off-by: Greg Kurz <groug@kaod.org>
Message-Id: <157192724208.3146912.7254684777515287626.stgit@bahia.lan>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Signed-off-by: Laurent Vivier <lvivier@redhat.com>
2019-11-18 11:49:11 +01:00
..
e500-ccsr.h
e500.c sysemu: Split sysemu/runstate.h off sysemu/sysemu.h 2019-08-16 13:37:36 +02:00
e500.h
e500plat.c
fdt.c
fw_cfg.c
Kconfig
mac_newworld.c core: replace getpagesize() with qemu_real_host_page_size 2019-10-26 15:38:06 +02:00
mac_oldworld.c
mac.h
Makefile.objs hw/ppc/pnv_homer: add PowerNV homer device model 2019-10-04 10:25:23 +10:00
mpc8544_guts.c sysemu: Split sysemu/runstate.h off sysemu/sysemu.h 2019-08-16 13:37:36 +02:00
mpc8544ds.c
pnv_bmc.c ppc/pnv: fix "bmc" node name in DT 2019-10-04 10:25:23 +10:00
pnv_core.c ppc: Add intc_destroy() handlers to SpaprInterruptController/PnvChip 2019-11-18 11:49:11 +01:00
pnv_homer.c hw/ppc/pnv_homer: add PowerNV homer device model 2019-10-04 10:25:23 +10:00
pnv_lpc.c
pnv_occ.c hw/ppc/pnv_occ: add sram device model for occ common area 2019-10-04 10:25:23 +10:00
pnv_psi.c ppc/pnv: Use address_space_stq_be() when triggering an interrupt from PSI 2019-10-24 09:36:55 +11:00
pnv_xscom.c hw/ppc/pnv_xscom: retrieve homer/occ base address from PBA BARs 2019-10-04 10:25:23 +10:00
pnv.c ppc: Add intc_destroy() handlers to SpaprInterruptController/PnvChip 2019-11-18 11:49:11 +01:00
ppc4xx_devs.c
ppc4xx_pci.c
ppc405_boards.c hw: Move M48T59 device from hw/timer/ to hw/rtc/ subdirectory 2019-10-24 20:20:45 +02:00
ppc405_uc.c
ppc405.h
ppc440_bamboo.c
ppc440_pcix.c
ppc440_uc.c
ppc440.h
ppc_booke.c sysemu: Split sysemu/runstate.h off sysemu/sysemu.h 2019-08-16 13:37:36 +02:00
ppc.c migration: Do not re-read the clock on pre_save in case of paused guest 2019-08-21 17:17:11 +10:00
ppce500_spin.c
prep_systemio.c sysemu: Split sysemu/runstate.h off sysemu/sysemu.h 2019-08-16 13:37:36 +02:00
prep.c hw: Move M48T59 device from hw/timer/ to hw/rtc/ subdirectory 2019-10-24 20:20:45 +02:00
rs6000_mc.c ppc: rs6000_mc: drop usage of memory_region_allocate_system_memory() 2019-10-23 23:37:42 -03:00
sam460ex.c
spapr_caps.c ppc: fix memory leak in spapr_caps_add_properties 2019-08-21 17:17:11 +10:00
spapr_cpu_core.c ppc: Add intc_destroy() handlers to SpaprInterruptController/PnvChip 2019-11-18 11:49:11 +01:00
spapr_drc.c ppc: fix memory leak in spapr_dt_drc() 2019-08-21 17:17:11 +10:00
spapr_events.c spapr_events: Rewrite a fall through comment 2019-08-21 10:59:10 +02:00
spapr_hcall.c spapr: Use less cryptic representation of which irq backends are supported 2019-10-04 19:08:23 +10:00
spapr_iommu.c memory: allow memory_region_register_iommu_notifier() to fail 2019-10-04 18:49:18 +02:00
spapr_irq.c ppc: Add intc_destroy() handlers to SpaprInterruptController/PnvChip 2019-11-18 11:49:11 +01:00
spapr_ovec.c
spapr_pci_nvlink2.c spapr/pci: Convert types to QEMU coding style 2019-08-29 09:46:07 +10:00
spapr_pci_vfio.c
spapr_pci.c core: replace getpagesize() with qemu_real_host_page_size 2019-10-26 15:38:06 +02:00
spapr_rng.c
spapr_rtas_ddw.c
spapr_rtas.c spapr: Stop providing RTAS blob 2019-10-04 10:25:23 +10:00
spapr_rtc.c
spapr_tpm_proxy.c spapr-tpm-proxy: Drop misleading check 2019-10-04 10:25:23 +10:00
spapr_vio.c spapr: Replace spapr_vio_qirq() helper with spapr_vio_irq_pulse() helper 2019-10-04 19:08:22 +10:00
spapr.c spapr: Don't request to unplug the same core twice 2019-10-24 09:37:54 +11:00
trace-events spapr: Remove unhelpful tracepoints from spapr_irq_free_xics() 2019-10-04 19:08:22 +10:00
virtex_ml507.c