Re: [uq/master PATCH 2/7] target-i386: Don't change x86_def_t struct on cpu_x86_register()

Paolo Bonzini
2014-01-31T11:42:39Z

Il 30/01/2014 20:48, Eduardo Habkost ha scritto:
> As eventually the x86_def_t data is going to be provided by the CPU
> class, it's better to not touch it, and handle the special cases on the
> X86CPU object itself.
>
> Current behavior of the code should stay exactly the same.
>
> Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
> ---
> target-i386/cpu.c | 11 ++++++-----
> 1 file changed, 6 insertions(+), 5 deletions(-)
>
> diff --git a/target-i386/cpu.c b/target-i386/cpu.c
> index 8425212..be54f84 100644
> --- a/target-i386/cpu.c
> +++ b/target-i386/cpu.c
> @@ -1841,11 +1841,6 @@ static void cpu_x86_register(X86CPU *cpu, const char *name, Error **errp)
> return;
> }
>
> - if (kvm_enabled()) {
> - def->features[FEAT_KVM] |= kvm_default_features;
> - }
> - def->features[FEAT_1_ECX] |= CPUID_EXT_HYPERVISOR;
> -
> object_property_set_str(OBJECT(cpu), def->vendor, "vendor", errp);
> object_property_set_int(OBJECT(cpu), def->level, "level", errp);
> object_property_set_int(OBJECT(cpu), def->family, "family", errp);
> @@ -1864,6 +1859,12 @@ static void cpu_x86_register(X86CPU *cpu, const char *name, Error **errp)
> cpu->cache_info_passthrough = def->cache_info_passthrough;
>
> object_property_set_str(OBJECT(cpu), def->model_id, "model-id", errp);
> +
> + /* Special cases not set in the x86_def_t structs: */
> + if (kvm_enabled()) {
> + env->features[FEAT_KVM] |= kvm_default_features;
> + }
> + env->features[FEAT_1_ECX] |= CPUID_EXT_HYPERVISOR;
> }
>
> X86CPU *cpu_x86_create(const char *cpu_model, DeviceState *icc_bridge,
>

Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>