On Tue, Nov 24, 2020 at 09:13:13PM +0100, Paolo Bonzini wrote: > On 24/11/20 17:22, Claudio Fontana wrote: > > +static void x86_cpu_accel_init(void) > > { > > - X86CPUAccelClass *acc; > > + const char *ac_name; > > + ObjectClass *ac; > > + char *xac_name; > > + ObjectClass *xac; > > - acc = X86_CPU_ACCEL_CLASS(object_class_by_name(accel_name)); > > - g_assert(acc != NULL); > > + ac = object_get_class(OBJECT(current_accel())); > > + g_assert(ac != NULL); > > + ac_name = object_class_get_name(ac); > > + g_assert(ac_name != NULL); > > - object_class_foreach(x86_cpu_accel_init_aux, TYPE_X86_CPU, false, > > &acc); > > + xac_name = g_strdup_printf("%s-%s", ac_name, TYPE_X86_CPU); > > + xac = object_class_by_name(xac_name); > > + g_free(xac_name); > > + > > + if (xac) { > > + object_class_foreach(x86_cpu_accel_init_aux, TYPE_X86_CPU, false, > > xac); > > + } > > } > > + > > +accel_cpu_init(x86_cpu_accel_init); > > If this and cpus_accel_ops_init are the only call to accel_cpu_init, I'd > rather make them functions in CPUClass (which you find and call via > CPU_RESOLVING_TYPE) and AccelClass respectively.
Making x86_cpu_accel_init() be a CPUClass method sounds like a good idea. This way we won't need a arch_cpu_accel_init() stub for non-x86. accel.c can't use cpu.h, correct? We can add a: CPUClass *arch_base_cpu_type(void) { return object_class_by_name(CPU_RESOLVING_TYPE); } function to arch_init.c, to allow target-independent code call target-specific code. -- Eduardo