[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [RFC PATCH v1 03/10] cpu: Reclaim vCPU objects
From: |
Bharata B Rao |
Subject: |
Re: [Qemu-devel] [RFC PATCH v1 03/10] cpu: Reclaim vCPU objects |
Date: |
Wed, 9 Mar 2016 10:29:53 +0530 |
User-agent: |
Mutt/1.5.23 (2014-03-12) |
On Mon, Mar 07, 2016 at 08:05:58PM +0100, Thomas Huth wrote:
> On 04.03.2016 07:54, Bharata B Rao wrote:
> > From: Gu Zheng <address@hidden>
> >
> > 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/address@hidden/msg102839.html
> >
> > Signed-off-by: Chen Fan <address@hidden>
> > Signed-off-by: Gu Zheng <address@hidden>
> > Signed-off-by: Zhu Guihua <address@hidden>
> > Signed-off-by: Bharata B Rao <address@hidden>
> > [- 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)]
> > Reviewed-by: David Gibson <address@hidden>
> > ---
> > 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 9592163..07cc054 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");
> > + exit(EXIT_FAILURE);
> > + }
> > +}
> > +
> > +static void qemu_tcg_destroy_vcpu(CPUState *cpu)
> > +{
> > +}
> > +
> > static void flush_queued_work(CPUState *cpu)
> > {
> > struct qemu_work_item *wi;
> > @@ -1053,6 +1065,11 @@ static void *qemu_kvm_cpu_thread_fn(void *arg)
> > }
> > }
> > qemu_kvm_wait_io_event(cpu);
> > + if (cpu->exit && !cpu_can_run(cpu)) {
> > + qemu_kvm_destroy_vcpu(cpu);
> > + qemu_mutex_unlock_iothread();
> > + return NULL;
> > + }
>
> My comment from last time still applies:
>
> You could increase readability of the code by changing the condition of
> the loop instead - currently it is a "while (1)" ... you could turn that
> into a "do { ... } while (!cpu->exit || cpu_can_run(cpu))" and then
> destroy the cpu after the loop.
Sorry for missing this, will take of this and the other comment in this
thread in the next version.
Regards,
Bharata.
- [Qemu-devel] [RFC PATCH v1 00/10] Core based CPU hotplug for PowerPC sPAPR, Bharata B Rao, 2016/03/04
- [Qemu-devel] [RFC PATCH v1 01/10] exec: Remove cpu from cpus list during cpu_exec_exit(), Bharata B Rao, 2016/03/04
- [Qemu-devel] [RFC PATCH v1 02/10] exec: Do vmstate unregistration from cpu_exec_exit(), Bharata B Rao, 2016/03/04
- [Qemu-devel] [RFC PATCH v1 03/10] cpu: Reclaim vCPU objects, Bharata B Rao, 2016/03/04
- [Qemu-devel] [RFC PATCH v1 05/10] cpu: Abstract CPU core type, Bharata B Rao, 2016/03/04
- Re: [Qemu-devel] [RFC PATCH v1 05/10] cpu: Abstract CPU core type, Igor Mammedov, 2016/03/04
- Re: [Qemu-devel] [RFC PATCH v1 05/10] cpu: Abstract CPU core type, Bharata B Rao, 2016/03/04
- Re: [Qemu-devel] [RFC PATCH v1 05/10] cpu: Abstract CPU core type, Igor Mammedov, 2016/03/04
- Re: [Qemu-devel] [RFC PATCH v1 05/10] cpu: Abstract CPU core type, David Gibson, 2016/03/06
- Re: [Qemu-devel] [RFC PATCH v1 05/10] cpu: Abstract CPU core type, Bharata B Rao, 2016/03/07
- Re: [Qemu-devel] [RFC PATCH v1 05/10] cpu: Abstract CPU core type, Igor Mammedov, 2016/03/07
- Re: [Qemu-devel] [RFC PATCH v1 05/10] cpu: Abstract CPU core type, David Gibson, 2016/03/07
- Re: [Qemu-devel] [RFC PATCH v1 05/10] cpu: Abstract CPU core type, Igor Mammedov, 2016/03/08
- Re: [Qemu-devel] [RFC PATCH v1 05/10] cpu: Abstract CPU core type, David Gibson, 2016/03/08