qemu-devel
[Top][All Lists]
Advanced

[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




reply via email to

[Prev in Thread] Current Thread [Next in Thread]