Via implementing ACPI standard methods _EJ0 in bios, after Guest OS hot remove one vCPU, it is able to send a signal to QEMU, then QEMU could notify the assigned vCPU of exiting. meanwhile, and intruduce the QOM command 'cpu-del' to remove vCPU from QEMU itself.
this work is based on Andreas Färber's qom-cpu branch tree. git://github.com/afaerber/qemu-cpu.git this series patches must be used with seabios patch and KVM patch together. for KVM patches: http://comments.gmane.org/gmane.comp.emulators.kvm.devel/114347 for seabios patches: http://comments.gmane.org/gmane.comp.emulators.qemu/230460 Chen Fan (10): x86: move apic_state field from CPUX86State to X86CPU apic: remove redundant variable 'apic_no' from apic_init_common() apic: remove local_apics array and using CPU_FOREACH instead x86: add x86_cpu_unrealizefn() for cpu apic remove qmp: add 'cpu-del' command support qom cpu: rename variable 'cpu_added_notifier' to 'cpu_hotplug_notifier' qom cpu: add UNPLUG cpu notifier support i386: implement pc interface pc_hot_del_cpu() piix4: implement function cpu_status_write() for vcpu ejection cpus: reclaim allocated vCPU objects cpu-exec.c | 2 +- cpus.c | 51 ++++++++++++++++++++++++-- hw/acpi/piix4.c | 66 +++++++++++++++++++++++++++------ hw/i386/kvm/apic.c | 8 ++++ hw/i386/kvmvapic.c | 8 ++-- hw/i386/pc.c | 51 +++++++++++++++++++++----- hw/i386/pc_piix.c | 1 + hw/intc/apic.c | 81 ++++++++++++++++++++--------------------- hw/intc/apic_common.c | 6 +-- include/hw/boards.h | 2 + include/hw/i386/apic_internal.h | 2 - include/hw/i386/pc.h | 1 + include/qom/cpu.h | 20 ++++++++++ include/sysemu/kvm.h | 1 + include/sysemu/sysemu.h | 2 +- kvm-all.c | 25 +++++++++++++ qapi-schema.json | 12 ++++++ qmp-commands.hx | 23 ++++++++++++ qmp.c | 9 +++++ qom/cpu.c | 26 ++++++++++--- target-i386/cpu-qom.h | 5 +++ target-i386/cpu.c | 57 +++++++++++++++++++++++------ target-i386/cpu.h | 4 -- target-i386/helper.c | 9 ++--- target-i386/kvm.c | 23 +++++------- target-i386/misc_helper.c | 8 ++-- 26 files changed, 380 insertions(+), 123 deletions(-) -- 1.8.1.4