Message ID | 1475696333-8706-17-git-send-email-lvivier@redhat.com |
---|---|
State | New |
Headers | show |
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. 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 <gang.chen.5i5j@gmail.com> > Signed-off-by: Laurent Vivier <lvivier@redhat.com> > --- > 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 = { >
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 <gang.chen.5i5j@gmail.com> > > Signed-off-by: Laurent Vivier <lvivier@redhat.com> > > --- > > 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 = { > > >
On 06/10/2016 01:57, 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. See PATCH 1/19 exec: split cpu_exec_init() Thanks, Laurent
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 = {
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) CC: Chen Gang <gang.chen.5i5j@gmail.com> Signed-off-by: Laurent Vivier <lvivier@redhat.com> --- target-tilegx/cpu.c | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-)