On Sat, May 29, 2021 at 11:13:13AM +0200, Claudio Fontana wrote: > This partially fixes host and max cpu initialization, > by running the accel cpu initialization only after all instance > init functions are called for all X86 cpu subclasses. Can you describe what exactly are the initialization ordering dependencies that were broken? > > Partial Fix. What does "partial fix" mean? > > Fixes: 48afe6e4eabf ("i386: split cpu accelerators from cpu.c, using AccelCPUClass") > Signed-off-by: Claudio Fontana <cfontana@xxxxxxx> The fix looks simple and may be obvious, my only concerns are: 1. Testing. Luckily we are a bit early in the release cycle so we have some time for that. 2. Describing more clearly what exactly was wrong. This can be fixed manually in the commit message when applying the patch. An even better long term solution would be removing the initialization ordering dependencies and make accel_cpu_instance_init() safe to be called earlier. Would that be doable? > --- > target/i386/cpu.c | 10 +++++++--- > 1 file changed, 7 insertions(+), 3 deletions(-) > > diff --git a/target/i386/cpu.c b/target/i386/cpu.c > index 6bcb7dbc2c..ae148fbd2f 100644 > --- a/target/i386/cpu.c > +++ b/target/i386/cpu.c > @@ -6422,6 +6422,11 @@ static void x86_cpu_register_feature_bit_props(X86CPUClass *xcc, > x86_cpu_register_bit_prop(xcc, name, w, bitnr); > } > > +static void x86_cpu_post_initfn(Object *obj) > +{ > + accel_cpu_instance_init(CPU(obj)); > +} > + > static void x86_cpu_initfn(Object *obj) > { > X86CPU *cpu = X86_CPU(obj); > @@ -6473,9 +6478,6 @@ static void x86_cpu_initfn(Object *obj) > if (xcc->model) { > x86_cpu_load_model(cpu, xcc->model); > } > - > - /* if required, do accelerator-specific cpu initializations */ > - accel_cpu_instance_init(CPU(obj)); > } > > static int64_t x86_cpu_get_arch_id(CPUState *cs) > @@ -6810,6 +6812,8 @@ static const TypeInfo x86_cpu_type_info = { > .parent = TYPE_CPU, > .instance_size = sizeof(X86CPU), > .instance_init = x86_cpu_initfn, > + .instance_post_init = x86_cpu_post_initfn, > + > .abstract = true, > .class_size = sizeof(X86CPUClass), > .class_init = x86_cpu_common_class_init, > -- > 2.26.2 > -- Eduardo