[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH 11/20] target-i386: do not set vendor_override i
From: |
Eduardo Habkost |
Subject: |
Re: [Qemu-devel] [PATCH 11/20] target-i386: do not set vendor_override in x86_cpuid_set_vendor() |
Date: |
Wed, 19 Dec 2012 15:38:09 -0200 |
User-agent: |
Mutt/1.5.21 (2010-09-15) |
On Mon, Dec 17, 2012 at 05:01:23PM +0100, Igor Mammedov wrote:
> commit d480e1af which introduced vendor property was setting
> env->cpuid_vendor_override = 1, which prevents using vendor property
> on its own without triggering vendor override.
> Fix it by removing setting cpuid_vendor_override in x86_cpuid_set_vendor()
> to allow to use vendor property in other places that doesn't require
> cpuid_vendor_override to be set to 1.
By making "vendor" not force override, you are making "-cpu vendor=xxx"
behave differently from setting "vendor" using all other interfaces
(e.g. -device, -global, QMP commands).
What about taking the opposite approach? Setting "vendor" could always
force vendor override, but the code that initialize the defaults would
take care of not overriding the vendor ID if unsafe. e.g.: it could just
do this:
if (!kvm_enabled() || def->vendor_override) {
object_property_set_str(OBJECT(cpu), def->vendor, "vendor", errp);
} /* else, leave the "vendor" property untouched" */
(something equivalent could be done inside class_init() when we
introduce subclasses)
On all I cases I can think of somebody setting the "vendor" property
(e.g. using -cpu, QMP, -device, or -global), it means they want vendor
override (otherwise, what's the point of setting the property?). Setting
vendor in no-override mode is the special case, not the other way
around.
>
> Signed-off-by: Igor Mammedov <address@hidden>
> ---
> target-i386/cpu.c | 1 -
> 1 files changed, 0 insertions(+), 1 deletions(-)
>
> diff --git a/target-i386/cpu.c b/target-i386/cpu.c
> index a74d74b..c6c074f 100644
> --- a/target-i386/cpu.c
> +++ b/target-i386/cpu.c
> @@ -1163,7 +1163,6 @@ static void x86_cpuid_set_vendor(Object *obj, const
> char *value,
> env->cpuid_vendor2 |= ((uint8_t)value[i + 4]) << (8 * i);
> env->cpuid_vendor3 |= ((uint8_t)value[i + 8]) << (8 * i);
> }
> - env->cpuid_vendor_override = 1;
> }
>
> static char *x86_cpuid_get_model_id(Object *obj, Error **errp)
> --
> 1.7.1
>
>
--
Eduardo
- [Qemu-devel] [PATCH 09/20] target-i386: move kvm_check_features_against_host() check to realize time, (continued)
- [Qemu-devel] [PATCH 09/20] target-i386: move kvm_check_features_against_host() check to realize time, Igor Mammedov, 2012/12/17
- [Qemu-devel] [PATCH 13/20] target-i386: convert [cpuid_]vendor_override to bool, Igor Mammedov, 2012/12/17
- [Qemu-devel] [PATCH 06/20] target-i386: move out CPU features initialization in separate func, Igor Mammedov, 2012/12/17
- [Qemu-devel] [PATCH 05/20] target-i386: move setting defaults out of cpu_x86_parse_featurestr(), Igor Mammedov, 2012/12/17
- [Qemu-devel] [PATCH 10/20] target-i386: prepare cpu_x86_parse_featurestr() to return a set of key, value property pairs, Igor Mammedov, 2012/12/17
- [Qemu-devel] [PATCH 11/20] target-i386: do not set vendor_override in x86_cpuid_set_vendor(), Igor Mammedov, 2012/12/17
- Re: [Qemu-devel] [PATCH 11/20] target-i386: do not set vendor_override in x86_cpuid_set_vendor(),
Eduardo Habkost <=
- [Qemu-devel] target-i386: Remove *vendor_override fields from x86_def_t and CPUX86State, Igor Mammedov, 2012/12/19
- [Qemu-devel] [PATCH 12/20 v2] target-i386: replace uint32_t vendor fields by vendor string in x86_def_t, Igor Mammedov, 2012/12/19
- Re: [Qemu-devel] [PATCH 12/20 v2] target-i386: replace uint32_t vendor fields by vendor string in x86_def_t, Eduardo Habkost, 2012/12/20
- [Qemu-devel] [PATCH 13/20] target-i386: remove vendor_override field from CPUX86State, Igor Mammedov, 2012/12/19
- Re: [Qemu-devel] [PATCH 13/20] target-i386: remove vendor_override field from CPUX86State, Eduardo Habkost, 2012/12/20