On Fri, Oct 14, 2016 at 03:34:17PM +0200, Laurent Vivier wrote: > On 14/10/2016 15:33, Eduardo Habkost wrote: > > On Thu, Oct 13, 2016 at 06:24:44PM +0200, Laurent Vivier wrote: > >> We have now the cpu_exec_realize() in realize, > >> so the init part must be in init. > >> > >> I've removed the cannot_destroy_with_object_finalize_yet field as > >> unsafe references have been moved to cpu_exec_realize(). > >> (tested with QOM command provided by commit 4c315c27 with > >> "athlon-x86_64-cpu") > >> > >> CC: Eduardo Habkost <ehabk...@redhat.com> > >> Signed-off-by: Laurent Vivier <lviv...@redhat.com> > > > > Resending the question I asked in my reply to v1: > > > > Instead of creating requiring each subclass to manually call > > cpu_exec_init()) on instance_init, why don't we move parts of > > cpu_exec_init()/cpu_exec_realize() code to cpu_common_initfn()? > > (TYPE_CPU's instance_init) > > > > (And if there's any code that needs to be run after the > > subclasses instance_init functions, we can just add a > > instance_post_init function to TYPE_CPU). > > > > It's done in PATCH 20/20. > > Is that what you want?
Yes (except that I would have inlined the the cpu_exec_init() code inside cpu_common_init()). I think I expected this to be done in a single step, that wouldn't require touching code for all architectures three times. Something like: 1) Move cpu->as, cpu->num_ases, cpu->thread_id, cpu->memory initialization, and "memory" property registration from cpu_exec_init() to cpu_common_init() (no architecture code touched). 2) (optional) Rename cpu_exec_init() to cpu_exec_realize() (only trivial changes in architecture code) -- Eduardo