Am 21.01.2013 15:06, schrieb Igor Mammedov: > commit 8935499831312 makes cpuid return to guest host's vendor value > instead of built-in one by default if kvm_enabled() == true and allows > to override this behavior if 'vendor' is specified on -cpu command line. > > But every time guest calls cpuid to get 'vendor' value, host's value is > read again and again in default case. > > It complicates semantic of vendor property and makes it harder to use. > > Instead of reading 'vendor' value from host every time cpuid[vendor] is > called, override 'vendor' value only once in cpu_x86_find_by_name(), when > built-in CPU model is found and if(kvm_enabled() == true). > > It provides the same default semantic > if (kvm_enabled() == true) vendor = host's vendor > else vendor = built-in vendor > > and then later: > if (custom vendor) vendor = custom vendor > > 'vendor' value is overridden when user provides it on -cpu command line, > and there isn't need in vendor_override field anymore, remove it. > > Signed-off-by: Igor Mammedov <imamm...@redhat.com> > --- > v4: > - rebased with "target-i386: move out CPU features initialization > in separate func" dropped. So remove vendor_override in > cpu_x86_register() instead. > - replace x86cpu_vendor_words2str() with x86_cpu_vendor_words2str() > due to renaming of the last in previous patch > --- > target-i386/cpu.c | 27 ++++++++++++--------------- > target-i386/cpu.h | 1 - > 2 files changed, 12 insertions(+), 16 deletions(-) > > diff --git a/target-i386/cpu.c b/target-i386/cpu.c > index 93da9b2..768ca69 100644 > --- a/target-i386/cpu.c > +++ b/target-i386/cpu.c [...] > @@ -1283,6 +1280,18 @@ static int cpu_x86_find_by_name(x86_def_t > *x86_cpu_def, const char *name) > return -1; > } else { > memcpy(x86_cpu_def, def, sizeof(*def)); > + /* sysenter isn't supported on compatibility mode on AMD, syscall > + * isn't supported in compatibility mode on Intel. > + * Normally we advertise the actual cpu vendor, but you can override > + * this using the 'vendor' property if you want to use KVM's > + * sysenter/syscall emulation in compatibility mode and when doing > + * cross vendor migration > + */ [snip]
Thanks, rebased and applied 2-3 to qom-cpu (rebreaking the text due to new indentation and fixing a typo present in the original): https://github.com/afaerber/qemu-cpu/commits/qom-cpu Andreas -- SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg, Germany GF: Jeff Hawn, Jennifer Guild, Felix Imendörffer; HRB 16746 AG Nürnberg