[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [RFC PATCH v2 20/23] spapr: Remove vCPU objects after CPU h
From: |
Bharata B Rao |
Subject: |
[Qemu-devel] [RFC PATCH v2 20/23] spapr: Remove vCPU objects after CPU hot unplug |
Date: |
Mon, 23 Mar 2015 19:06:01 +0530 |
Release the vCPU objects after CPU hot unplug so that vCPU fd
can be parked and reused.
Signed-off-by: Bharata B Rao <address@hidden>
---
hw/ppc/spapr.c | 19 ++++++++++++++++++-
1 file changed, 18 insertions(+), 1 deletion(-)
diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
index 7b8784d..3e56d9e 100644
--- a/hw/ppc/spapr.c
+++ b/hw/ppc/spapr.c
@@ -1886,6 +1886,23 @@ static void spapr_cpu_hotplug_add(DeviceState *dev,
CPUState *cs, Error **errp)
}
}
+static void spapr_cpu_release(DeviceState *dev, void *opaque)
+{
+ CPUState *cs;
+ int i;
+ int id = ppc_get_vcpu_dt_id(POWERPC_CPU(CPU(dev)));
+
+ for (i = id; i < id + smp_threads; i++) {
+ CPU_FOREACH(cs) {
+ PowerPCCPU *cpu = POWERPC_CPU(cs);
+
+ if (i == ppc_get_vcpu_dt_id(cpu)) {
+ cpu_remove(cs);
+ }
+ }
+ }
+}
+
static void spapr_cpu_hotplug_remove(DeviceState *dev, CPUState *cs,
Error **errp)
{
@@ -1895,7 +1912,7 @@ static void spapr_cpu_hotplug_remove(DeviceState *dev,
CPUState *cs,
spapr_dr_connector_by_id(SPAPR_DR_CONNECTOR_TYPE_CPU, id);
sPAPRDRConnectorClass *drck = SPAPR_DR_CONNECTOR_GET_CLASS(drc);
- drck->detach(drc, dev, NULL, NULL, errp);
+ drck->detach(drc, dev, spapr_cpu_release, NULL, errp);
}
static void spapr_cpu_plug(HotplugHandler *hotplug_dev, DeviceState *dev,
--
2.1.0
[Qemu-devel] [RFC PATCH v2 23/23] spapr: Memory hotplug support, Bharata B Rao, 2015/03/23