Message ID | 20121207180031.GJ4986@otherpad.lan.raisama.net |
---|---|
State | New |
Headers | show |
Am 07.12.2012 19:00, schrieb Eduardo Habkost: > From: Igor Mammedov <imammedo@redhat.com> > > Delay capping cpuid_level to 7 to realize time so property setters > for cpuid_7_0_ebx_features and "level" could be used in any order/time > between x86_cpu_initfn() and x86_cpu_realize(). > > Signed-off-by: Igor Mammedov <imammedo@redhat.com> > Reviewed-by: Eduardo Habkost <ehabkost@redhat.com> > Signed-off-by: Eduardo Habkost <ehabkost@redhat.com> > --- > The patch in the pull request sent by Andreas is not the right one (a > patch chunk is missing). I'm resending the correct patch. Igor's patch didn't apply cleanly despite --3way, seems one hunk got lost. Sorry! > diff --git a/target-i386/cpu.c b/target-i386/cpu.c > index a631ae9..7be3ad8 100644 > --- a/target-i386/cpu.c > +++ b/target-i386/cpu.c [...] > @@ -2074,6 +2071,11 @@ static void x86_cpu_apic_init(X86CPU *cpu, Error **errp) > void x86_cpu_realize(Object *obj, Error **errp) > { > X86CPU *cpu = X86_CPU(obj); > + CPUX86State *env = &cpu->env; > + > + if (env->cpuid_7_0_ebx_features && env->cpuid_level < 7) { > + env->cpuid_level = 7; > + } > > #ifndef CONFIG_USER_ONLY > qemu_register_reset(x86_cpu_machine_reset_cb, cpu); I manually patch'ed in this missing hunk and made you a Signed-off-by. Pull was updated with new commit hash and stats already. Thanks, Andreas
diff --git a/target-i386/cpu.c b/target-i386/cpu.c index a631ae9..7be3ad8 100644 --- a/target-i386/cpu.c +++ b/target-i386/cpu.c @@ -1381,9 +1381,6 @@ static int cpu_x86_parse_featurestr(x86_def_t *x86_cpu_def, char *features) if (kvm_check_features_against_host(x86_cpu_def) && enforce_cpuid) goto error; } - if (x86_cpu_def->cpuid_7_0_ebx_features && x86_cpu_def->level < 7) { - x86_cpu_def->level = 7; - } return 0; error: @@ -2074,6 +2071,11 @@ static void x86_cpu_apic_init(X86CPU *cpu, Error **errp) void x86_cpu_realize(Object *obj, Error **errp) { X86CPU *cpu = X86_CPU(obj); + CPUX86State *env = &cpu->env; + + if (env->cpuid_7_0_ebx_features && env->cpuid_level < 7) { + env->cpuid_level = 7; + } #ifndef CONFIG_USER_ONLY qemu_register_reset(x86_cpu_machine_reset_cb, cpu);