qemu/hw/ppc
Michael Roth 5c0139a8c2 spapr: fix default DRC state for coldplugged LMBs
Currently we set the initial isolation/allocation state for DRCs
associated with coldplugged LMBs to ISOLATED/UNUSABLE,
respectively, under the assumption that the guest will move this
state to UNISOLATED/USABLE.

In fact, this is only the case for LMBs added via hotplug. For
coldplugged LMBs, the guest actually assumes the initial state to
be UNISOLATED/USABLE.

In practice, this only becomes an issue when we attempt to unplug
one of these LMBs, where the guest kernel will issue an
rtas-get-sensor-state call to check that the corresponding DRC is
in an USABLE state before it will release the LMB back to
QEMU. If the returned state is otherwise, the guest will assume no
further action is needed, which bypasses the QEMU-side cleanup that
occurs during the USABLE->UNUSABLE transition. This results in
LMBs and their corresponding pc-dimm devices to stick around
indefinitely.

This patch fixes the issue by manually setting DRCs associated with
cold-plugged LMBs to UNISOLATED/ALLOCATED, but leaving the hotplug
state untouched. As it turns out, this is analogous to the handling
for cold-plugged CPUs in spapr_core_plug().

Cc: qemu-ppc@nongnu.org
Cc: David Gibson <david@gibson.dropbear.id.au>
Cc: Bharata B Rao <bharata@linux.vnet.ibm.com>
Cc: Greg Kurz <gkurz@linux.vnet.ibm.com>
Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2016-12-01 13:41:00 +11:00
..
e500-ccsr.h ppc: do not use ../ in include files 2013-03-01 13:57:33 +01:00
e500.c sysbus: Remove ignored return value of FindSysbusDeviceFunc 2016-09-27 17:03:34 -03: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 hw/ppc: add a ppc_create_page_sizes_prop() helper routine 2016-09-07 12:40:12 +10:00
mac_newworld.c fw_cfg: move FW_CFG_NB_CPUS out of fw_cfg_init1() 2016-11-16 12:09:58 -02:00
mac_oldworld.c fw_cfg: move FW_CFG_NB_CPUS out of fw_cfg_init1() 2016-11-16 12:09:58 -02:00
mac.h Clean up ill-advised or unusual header guards 2016-07-12 16:20:46 +02:00
Makefile.objs spapr_ovec: initial implementation of option vector helpers 2016-10-28 09:38:26 +11:00
mpc8544_guts.c hw: explicitly include qemu-common.h and cpu.h 2016-03-22 22:20:17 +01:00
mpc8544ds.c ppc: Clean up includes 2016-01-29 15:07:22 +00:00
pnv_core.c ppc/pnv: fix compile breakage on old gcc 2016-11-15 10:05:51 +11:00
pnv_lpc.c ppc/pnv: fix compile breakage on old gcc 2016-11-15 10:05:51 +11:00
pnv_xscom.c ppc/pnv: fix xscom address translation for POWER9 2016-11-15 10:08:43 +11:00
pnv.c ppc/pnv: Fix fatal bug on 32-bit hosts 2016-11-15 10:08:43 +11: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 ppc: Clean up includes 2016-01-29 15:07:22 +00:00
ppc405_boards.c clean-up: removed duplicate #includes 2016-10-28 18:17:24 +03:00
ppc405_uc.c Replaced get_tick_per_sec() by NANOSECONDS_PER_SECOND 2016-03-22 22:20:17 +01:00
ppc405.h Remove unused function declarations 2016-09-15 15:32:22 +03:00
ppc440_bamboo.c loader: Add data swap option to load-elf 2016-03-04 11:30:21 +00:00
ppc_booke.c Replaced get_tick_per_sec() by NANOSECONDS_PER_SECOND 2016-03-22 22:20:17 +01:00
ppc.c ppc: parse cpu features once 2016-08-13 17:32:58 +10:00
ppce500_spin.c *_run_on_cpu: introduce run_on_cpu_data type 2016-10-31 15:00:25 +01:00
prep.c vl: Eliminate usb_enabled() 2016-06-13 13:24:41 +02:00
spapr_cpu_core.c pseries: Split device tree construction from device tree load 2016-10-28 09:38:25 +11:00
spapr_drc.c spapr: Memory hot-unplug support 2016-10-28 11:17:35 +11:00
spapr_events.c spapr: Add DRC count indexed hotplug identifier type 2016-10-28 11:17:35 +11:00
spapr_hcall.c Base patches for MTTCG enablement. 2016-10-31 15:29:12 +00:00
spapr_iommu.c memory: introduce IOMMUOps.notify_flag_changed 2016-09-27 09:00:04 +02:00
spapr_ovec.c spapr: migration support for CAS-negotiated option vectors 2016-11-23 12:00:48 +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 spapr: Fix 2.7<->2.8 migration of PCI host bridge 2016-11-23 12:00:48 +11: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: Consolidate construction of /rtas device tree node 2016-10-28 09:38:26 +11:00
spapr_rtc.c util: move declarations out of qemu-common.h 2016-03-22 22:20:17 +01:00
spapr_vio.c pseries: Consolidate construction of /vdevice device tree node 2016-10-28 09:38:26 +11:00
spapr.c spapr: fix default DRC state for coldplugged LMBs 2016-12-01 13:41:00 +11:00
trace-events spapr_vio: convert to trace framework instead of DPRINTF 2016-09-23 10:29:40 +10:00
virtex_ml507.c qemu-common: push cpu.h inclusion out of qemu-common.h 2016-05-19 16:42:29 +02:00