[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-ppc] [RFC PATCH v4 04/11] cpus: Add a sync version of cpu_remo
From: |
Bharata B Rao |
Subject: |
Re: [Qemu-ppc] [RFC PATCH v4 04/11] cpus: Add a sync version of cpu_remove() |
Date: |
Wed, 9 Sep 2015 11:27:22 +0530 |
User-agent: |
Mutt/1.5.23 (2014-03-12) |
On Fri, Sep 04, 2015 at 04:11:38PM +1000, David Gibson wrote:
> On Thu, Aug 06, 2015 at 10:57:10AM +0530, Bharata B Rao wrote:
> > This sync API will be used by the CPU hotplug code to wait for the CPU to
> > completely get removed before flagging the failure to the device_add
> > command.
> >
> > Sync version of this call is needed to correctly recover from CPU
> > realization failures when ->plug() handler fails.
> >
> > Signed-off-by: Bharata B Rao <address@hidden>
> > ---
> > cpus.c | 14 ++++++++++++++
> > include/qom/cpu.h | 8 ++++++++
> > 2 files changed, 22 insertions(+)
> >
> > diff --git a/cpus.c b/cpus.c
> > index 73ae2e7..9d9644e 100644
> > --- a/cpus.c
> > +++ b/cpus.c
> > @@ -999,6 +999,8 @@ 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);
> > + cpu->created = false;
> > + qemu_cond_signal(&qemu_cpu_cond);
> > qemu_mutex_unlock(&qemu_global_mutex);
> > return NULL;
> > }
> > @@ -1104,6 +1106,8 @@ static void *qemu_tcg_cpu_thread_fn(void *arg)
> > }
> > if (remove_cpu) {
> > qemu_tcg_destroy_vcpu(remove_cpu);
> > + cpu->created = false;
> > + qemu_cond_signal(&qemu_cpu_cond);
> > remove_cpu = NULL;
> > }
> > }
> > @@ -1283,6 +1287,16 @@ void cpu_remove(CPUState *cpu)
> > qemu_cpu_kick(cpu);
> > }
> >
> > +void cpu_remove_sync(CPUState *cpu)
> > +{
> > + cpu->stop = true;
> > + cpu->exit = true;
> > + qemu_cpu_kick(cpu);
>
> It would be nicer for this to call the async cpu_remove() above, to
> ensure they stay in sync.
Makes sense, will incorporate this in the next iteration.
Regards,
Bharata.