After initializing the object from its x86_def_t and before setting any additional -cpu arguments, set any global properties for the designated subclass <name>-{i386,x86_64}-cpu.
Signed-off-by: Andreas Färber <afaer...@suse.de> --- target-i386/cpu.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/target-i386/cpu.c b/target-i386/cpu.c index bba41fe..8a9563b 100644 --- a/target-i386/cpu.c +++ b/target-i386/cpu.c @@ -1626,6 +1626,7 @@ X86CPU *cpu_x86_create(const char *cpu_model, DeviceState *icc_bridge, CPUX86State *env; gchar **model_pieces; char *name, *features; + char *typename; Error *error = NULL; model_pieces = g_strsplit(cpu_model, ",", 2); @@ -1653,6 +1654,14 @@ X86CPU *cpu_x86_create(const char *cpu_model, DeviceState *icc_bridge, goto out; } + /* Emulate per-model subclasses for global properties */ + typename = g_strdup_printf("%s-" TYPE_X86_CPU, name); + qdev_prop_set_custom_globals(DEVICE(cpu), typename, &error); + g_free(typename); + if (error) { + goto out; + } + cpu_x86_parse_featurestr(cpu, features, &error); if (error) { goto out; -- 1.8.1.4