On 01/08/2016 01:55 AM, Bharata B Rao wrote: > From: Gu Zheng <guz.f...@cn.fujitsu.com> > > In order to deal well with the kvm vcpus (which can not be removed without any > protection), we do not close KVM vcpu fd, just record and mark it as stopped > into a list, so that we can reuse it for the appending cpu hot-add request if > possible. It is also the approach that kvm guys suggested: > https://www.mail-archive.com/kvm@vger.kernel.org/msg102839.html > > Signed-off-by: Chen Fan <chen.fan.f...@cn.fujitsu.com> > Signed-off-by: Gu Zheng <guz.f...@cn.fujitsu.com> > Signed-off-by: Zhu Guihua <zhugh.f...@cn.fujitsu.com> > Signed-off-by: Bharata B Rao <bhar...@linux.vnet.ibm.com> > [- Explicit CPU_REMOVE() from qemu_kvm/tcg_destroy_vcpu() > isn't needed as it is done from cpu_exec_exit() > - Use iothread mutex instead of global mutex during > destroy > - Don't cleanup vCPU object from vCPU thread context > but leave it to the callers (device_add/device_del)] > --- > cpus.c | 38 +++++++++++++++++++++++++++++++++++ > include/qom/cpu.h | 10 +++++++++ > include/sysemu/kvm.h | 1 + > kvm-all.c | 57 > +++++++++++++++++++++++++++++++++++++++++++++++++++- > kvm-stub.c | 5 +++++ > 5 files changed, 110 insertions(+), 1 deletion(-) > > diff --git a/cpus.c b/cpus.c > index ea29584..12374af 100644 > --- a/cpus.c > +++ b/cpus.c > @@ -953,6 +953,18 @@ void async_run_on_cpu(CPUState *cpu, void (*func)(void > *data), void *data) > qemu_cpu_kick(cpu); > } > > +static void qemu_kvm_destroy_vcpu(CPUState *cpu) > +{ > + if (kvm_destroy_vcpu(cpu) < 0) { > + error_report("kvm_destroy_vcpu failed.\n");
FYI, checkpatch fails here -- no need for the newline. Matt