qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH 16/19] target-tilegx: move cpu_exec_realize() to


From: David Gibson
Subject: Re: [Qemu-devel] [PATCH 16/19] target-tilegx: move cpu_exec_realize() to realize function
Date: Thu, 6 Oct 2016 16:04:40 +1100
User-agent: Mutt/1.7.0 (2016-08-17)

On Thu, Oct 06, 2016 at 07:57:34AM +0800, Chen Gang wrote:
> 
> On 10/6/16 03:38, Laurent Vivier wrote:
> > I've removed the cannot_destroy_with_object_finalize_yet field as
> > cpu_exec_init() is not called by tilegx_cpu_initfn() anymore
> > (not tested with QOM command as tilegx is only available in linux-user
> >  mode)
> > 
> 
> 
> For master branch, I can not find cpu_exec_realize in total source code,
> I am not quite sure whether it is ok or not.

It's a new function introduced in the first patch of this series.  The
old cpu_exec_init() was split into cpu_exec_init() which contains
things which are safe at init time, and cpu_exec_realize() which is
supposed to be called at realize() time.

> 
> And in honest, now, tilegx-linux-user is not implemented completely, the
> floating point insns are not supported by our main branch (which should
> be one of main feature for tilegx) -- which I should try.
> 
> Thanks.
> 
> > CC: Chen Gang <address@hidden>
> > Signed-off-by: Laurent Vivier <address@hidden>
> > ---
> >  target-tilegx/cpu.c | 15 +++++++--------
> >  1 file changed, 7 insertions(+), 8 deletions(-)
> > 
> > diff --git a/target-tilegx/cpu.c b/target-tilegx/cpu.c
> > index f7ec920..6be69ef 100644
> > --- a/target-tilegx/cpu.c
> > +++ b/target-tilegx/cpu.c
> > @@ -92,6 +92,13 @@ static void tilegx_cpu_realizefn(DeviceState *dev, Error 
> > **errp)
> >  {
> >      CPUState *cs = CPU(dev);
> >      TileGXCPUClass *tcc = TILEGX_CPU_GET_CLASS(dev);
> > +    Error *local_err = NULL;
> > +
> > +    cpu_exec_realize(cs, &local_err);
> > +    if (local_err != NULL) {
> > +        error_propagate(errp, local_err);
> > +        return;
> > +    }
> >  
> >      cpu_reset(cs);
> >      qemu_init_vcpu(cs);
> > @@ -108,7 +115,6 @@ static void tilegx_cpu_initfn(Object *obj)
> >  
> >      cs->env_ptr = env;
> >      cpu_exec_init(cs, &error_abort);
> > -    cpu_exec_realize(cs, &error_abort);
> >  
> >      if (tcg_enabled() && !tcg_initialized) {
> >          tcg_initialized = true;
> > @@ -163,13 +169,6 @@ static void tilegx_cpu_class_init(ObjectClass *oc, 
> > void *data)
> >      cc->set_pc = tilegx_cpu_set_pc;
> >      cc->handle_mmu_fault = tilegx_cpu_handle_mmu_fault;
> >      cc->gdb_num_core_regs = 0;
> > -
> > -    /*
> > -     * Reason: tilegx_cpu_initfn() calls cpu_exec_init(), which saves
> > -     * the object in cpus -> dangling pointer after final
> > -     * object_unref().
> > -     */
> > -    dc->cannot_destroy_with_object_finalize_yet = true;
> >  }
> >  
> >  static const TypeInfo tilegx_cpu_type_info = {
> > 
> 

-- 
David Gibson                    | I'll have my music baroque, and my code
david AT gibson.dropbear.id.au  | minimalist, thank you.  NOT _the_ _other_
                                | _way_ _around_!
http://www.ozlabs.org/~dgibson

Attachment: signature.asc
Description: PGP signature


reply via email to

[Prev in Thread] Current Thread [Next in Thread]