On 2013-05-04 10:52, 李春奇 <Arthur Chunqi Li> wrote: > On Sat, May 4, 2013 at 4:47 PM, Jan Kiszka <jan.kiszka@xxxxxx> wrote: >> Please don't top-post. >> >> On 2013-05-04 10:45, 李春奇 <Arthur Chunqi Li> wrote: >>> But will the difference between the vendor ID and family number cause >>> confusion to the OS in VM? >> >> The confusion is not yet clear to me. About which "-cpu ..." were you >> talking? >> >> Jan >> >>> >>> On Sat, May 4, 2013 at 4:05 PM, Jan Kiszka <jan.kiszka@xxxxxx> wrote: >>>> On 2013-05-04 09:50, 李春奇 <Arthur Chunqi Li> wrote: >>>>> Hi Jan and All, >>>>> I find that when enable KVM with qemu, vendor ID of simulated CPU will be >>>>> set the same as host, but other features such as level, family, model, >>>>> stepping are not changed. This may bring out a confusing result, the >>>>> simulated CPU has a vendor name of "GenuineIntel" but with family number >>>>> "16". >>>>> >>>>> I disabled the related code in function cpu_x86_find_by_name: >>>>> diff --git a/target-i386/cpu.c b/target-i386/cpu.c >>>>> index e2302d8..df0e82e 100644 >>>>> --- a/target-i386/cpu.c >>>>> +++ b/target-i386/cpu.c >>>>> @@ -1295,7 +1295,8 @@ static int cpu_x86_find_by_name(x86_def_t >>>>> *x86_cpu_def, const char *name) >>>>> * KVM's sysenter/syscall emulation in compatibility mode and >>>>> * when doing cross vendor migration >>>>> */ >>>>> - if (kvm_enabled()) { >>>>> + //if (kvm_enabled()) { >>>>> + if (0) { >>>>> uint32_t ebx = 0, ecx = 0, edx = 0; >>>>> host_cpuid(0, 0, NULL, &ebx, &ecx, &edx); >>>>> x86_cpu_vendor_words2str(x86_cpu_def->vendor, ebx, edx, >>>>> ecx); >>>>> >>>>> And the information of CPU remains consistent and the VM runs OK, even >>>>> though with nested environment. >>>>> >>>>> Why should qemu set simulated cpu's vendor same as the host in KVM >>>>> environment? >>>> >>>> The reason (and a way out) is given in the comment above the cited code. >>>> >>>> Jan >>>> >>>> >>> >>> >>> >> >> > > I use -cpu Opteron_G1, and got the following message in VM: > root@kvm1:~# cat /proc/cpuinfo > processor : 0 > vendor_id : GenuineIntel > cpu family : 15 > model : 6 > model name : AMD Opteron 240 (Gen 1 Class Opteron) > stepping : 1 > microcode : 0x1 > cpu MHz : 2393.998 > cache size : 4096 KB > fpu : yes > fpu_exception : yes > cpuid level : 5 > wp : yes > flags : fpu de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat > pse36 clflush mmx fxsr sse sse2 syscall nx lm constant_tsc nopl pni > hypervisor > bogomips : 4787.99 > clflush size : 64 > cache_alignment : 128 > address sizes : 40 bits physical, 48 bits virtual > power management: > > The vendor_id is not consistent to the following messages. The reason is what the comment says: Avoid that the guest picks a suboptimal syscall mechanism that may have to be emulated by KVM all the time. Obviously, this causes no problems with common guests as it is done like this since day #1. Jan
Attachment:
signature.asc
Description: OpenPGP digital signature