sPAPR supports only Core level CPU plug and unplug, but nothing prevents user from issuing a device_del on the underlying thread device by using its qom path directly. This hits g_assert(hotplug_ctrl) in qdev_unplug().
Gracefully reject such unplug requests from ->unplug() handler Reported-by: Shivaprasad G Bhat <sb...@linux.vnet.ibm.com> Signed-off-by: Bharata B Rao <bhar...@linux.vnet.ibm.com> --- hw/ppc/spapr.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c index 30d6800..0e89d7d 100644 --- a/hw/ppc/spapr.c +++ b/hw/ppc/spapr.c @@ -2344,6 +2344,9 @@ static void spapr_machine_device_unplug(HotplugHandler *hotplug_dev, return; } spapr_core_unplug(hotplug_dev, dev, errp); + } else { + error_setg(errp, "Unplug not supported for device type: %s", + object_get_typename(OBJECT(dev))); } } @@ -2359,6 +2362,7 @@ static HotplugHandler *spapr_get_hotpug_handler(MachineState *machine, DeviceState *dev) { if (object_dynamic_cast(OBJECT(dev), TYPE_PC_DIMM) || + object_dynamic_cast(OBJECT(dev), TYPE_CPU) || object_dynamic_cast(OBJECT(dev), TYPE_SPAPR_CPU_CORE)) { return HOTPLUG_HANDLER(machine); } -- 2.7.4