spapr_cpu_core: instantiate CPUs separately
commit94ad93bd976841c26af75322301f5aad925114d6
authorGreg Kurz <groug@kaod.org>
Mon, 20 Nov 2017 09:19:54 +0000 (20 10:19 +0100)
committerDavid Gibson <david@gibson.dropbear.id.au>
Thu, 14 Dec 2017 22:49:23 +0000 (15 09:49 +1100)
treeebfc6e7d0cfdd6a696e75777b9c2902c38aa30ad
parent2b6154120cbd7f5514cefd3c6084d39922d26d88
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>
hw/ppc/spapr.c
hw/ppc/spapr_cpu_core.c
include/hw/ppc/spapr_cpu_core.h