summaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorGreg Kurz2017-11-20 10:19:54 +0100
committerDavid Gibson2017-12-14 23:49:23 +0100
commit94ad93bd976841c26af75322301f5aad925114d6 (patch)
treeebfc6e7d0cfdd6a696e75777b9c2902c38aa30ad /include
parentspapr: Add pseries-2.12 machine type (diff)
downloadqemu-94ad93bd976841c26af75322301f5aad925114d6.tar.gz
qemu-94ad93bd976841c26af75322301f5aad925114d6.tar.xz
qemu-94ad93bd976841c26af75322301f5aad925114d6.zip
spapr_cpu_core: instantiate CPUs separately
The current code assumes that only the CPU core object holds a reference on each individual CPU object, and happily frees their allocated memory when the core is unrealized. This is dangerous as some other code can legitimely keep a pointer to a CPU if it calls object_ref(), but it would end up with a dangling pointer. Let's allocate all CPUs with object_new() and let QOM free them when their reference count reaches zero. This greatly simplify the code as we don't have to fiddle with the instance size anymore. Signed-off-by: Greg Kurz <groug@kaod.org> Acked-by: Igor Mammedov <imammedo@redhat.com> Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Diffstat (limited to 'include')
-rw-r--r--include/hw/ppc/spapr_cpu_core.h2
1 files changed, 1 insertions, 1 deletions
diff --git a/include/hw/ppc/spapr_cpu_core.h b/include/hw/ppc/spapr_cpu_core.h
index f2d48d6a67..1129f344aa 100644
--- a/include/hw/ppc/spapr_cpu_core.h
+++ b/include/hw/ppc/spapr_cpu_core.h
@@ -28,7 +28,7 @@ typedef struct sPAPRCPUCore {
CPUCore parent_obj;
/*< public >*/
- void *threads;
+ PowerPCCPU **threads;
int node_id;
} sPAPRCPUCore;