qemu-e2k/target/ppc
Greg Kurz f1023d21e8 spapr: Unrealize vCPUs with qdev_unrealize()
Since we introduced CPU hot-unplug in sPAPR, we don't unrealize the
vCPU objects explicitly. Instead, we let QOM handle that for us under
object_property_del_all() when the CPU core object is finalized. The
only thing we do is calling cpu_remove_sync() to tear the vCPU thread
down.

This happens to work but it is ugly because:
- we call qdev_realize() but the corresponding qdev_unrealize() is
  buried deep in the QOM code
- we call cpu_remove_sync() to undo qemu_init_vcpu() called by
  ppc_cpu_realize() in target/ppc/translate_init.c.inc
- the CPU init and teardown paths aren't really symmetrical

The latter didn't bite us so far but a future patch that greatly
simplifies the CPU core realize path needs it to avoid a crash
in QOM.

For all these reasons, have ppc_cpu_unrealize() to undo the changes
of ppc_cpu_realize() by calling cpu_remove_sync() at the right place,
and have the sPAPR CPU core code to call qdev_unrealize().

This requires to add a missing stub because translate_init.c.inc is
also compiled for user mode.

Signed-off-by: Greg Kurz <groug@kaod.org>
Message-Id: <160279671236.1808373.14732005038172874990.stgit@bahia.lan>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2020-10-28 01:08:53 +11:00
..
translate ppc patch queue 2020-08-18 2020-08-24 09:35:21 +01:00
arch_dump.c
compat.c ppc: Add a return value to ppc_set_compat() and ppc_set_compat_all() 2020-10-09 10:15:06 +11:00
cpu-models.c
cpu-models.h
cpu-param.h
cpu-qom.h qom: Remove module_obj_name parameter from OBJECT_DECLARE* macros 2020-09-18 14:12:32 -04:00
cpu.c
cpu.h ppc: Add a return value to ppc_set_compat() and ppc_set_compat_all() 2020-10-09 10:15:06 +11:00
dfp_helper.c
excp_helper.c ppc/spapr: Add hotremovable flag on DIMM LMBs on drmem_v2 2020-05-27 15:29:36 +10:00
fpu_helper.c
gdbstub.c gdbstub: Introduce gdb_get_float64() to get 64-bit float registers 2020-05-06 09:29:26 +01:00
helper_regs.h
helper.h target/ppc: add vmulh{su}d instructions 2020-08-12 13:16:27 +10:00
int_helper.c ppc patch queue 2020-08-18 2020-08-24 09:35:21 +01:00
internal.h
kvm_ppc.h pseries: fix kvmppc_set_fwnmi() 2020-07-27 11:09:25 +10:00
kvm-stub.c
kvm.c pseries: fix kvmppc_set_fwnmi() 2020-07-27 11:09:25 +10:00
machine.c ppc: Fix return value in cpu_post_load() error path 2020-10-09 10:15:06 +11:00
mem_helper.c
meson.build meson: target 2020-08-21 06:30:35 -04:00
mfrom_table_gen.c
mfrom_table.c.inc meson: rename included C source files to .c.inc 2020-08-21 06:18:30 -04:00
misc_helper.c target/ppc: Remove superfluous breaks 2020-09-01 08:34:08 +02:00
mmu_helper.c target: Remove unnecessary CPU() cast 2020-05-15 07:08:14 +02:00
mmu-book3s-v3.c
mmu-book3s-v3.h
mmu-hash32.c
mmu-hash32.h
mmu-hash64.c error: Strip trailing '\n' from error string arguments (again) 2020-07-24 12:56:44 +02:00
mmu-hash64.h
mmu-radix64.c target/ppc: Fix argument to ppc_radix64_partition_scoped_xlate() again 2020-05-27 15:29:36 +10:00
mmu-radix64.h target/ppc: Pass const pointer to ppc_radix64_get_prot_amr() 2020-05-27 15:29:36 +10:00
monitor.c
timebase_helper.c hw/ppc: Take QEMU lock when calling ppc_dcr_read/write() 2020-03-24 11:56:37 +11:00
trace-events trace-events: Delete unused trace points 2020-09-09 17:17:02 +01:00
trace.h trace: switch position of headers to what Meson requires 2020-08-21 06:18:24 -04:00
translate_init.c.inc spapr: Unrealize vCPUs with qdev_unrealize() 2020-10-28 01:08:53 +11:00
translate.c ppc patch queue 2020-08-18 2020-08-24 09:35:21 +01:00
user_only_helper.c