From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jan Kiszka Subject: Re: CPU vendor in KVM Date: Sat, 04 May 2013 11:01:59 +0200 Message-ID: <5184CE87.5050601@web.de> References: <5184C14B.9040100@web.de> <5184CB0D.4010004@web.de> Mime-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="----enig2RQIMPIAQOAOBVNIREEDC" Cc: qemu-devel@nongnu.org, kvm To: =?UTF-8?B?IuadjuaYpeWlhyA8QXJ0aHVyIENodW5xaSBMaT4i?= Return-path: Received: from mout.web.de ([212.227.15.4]:55684 "EHLO mout.web.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751283Ab3EDJCD (ORCPT ); Sat, 4 May 2013 05:02:03 -0400 In-Reply-To: Sender: kvm-owner@vger.kernel.org List-ID: This is an OpenPGP/MIME signed message (RFC 4880 and 3156) ------enig2RQIMPIAQOAOBVNIREEDC Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable On 2013-05-04 10:52, =E6=9D=8E=E6=98=A5=E5=A5=87 wrote= : > On Sat, May 4, 2013 at 4:47 PM, Jan Kiszka wrote: >> Please don't top-post. >> >> On 2013-05-04 10:45, =E6=9D=8E=E6=98=A5=E5=A5=87 wr= ote: >>> 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 wrote:= >>>> On 2013-05-04 09:50, =E6=9D=8E=E6=98=A5=E5=A5=87 = wrote: >>>>> Hi Jan and All, >>>>> I find that when enable KVM with qemu, vendor ID of simulated CPU w= ill be >>>>> set the same as host, but other features such as level, family, mod= el, >>>>> stepping are not changed. This may bring out a confusing result, th= e >>>>> simulated CPU has a vendor name of "GenuineIntel" but with family n= umber >>>>> "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 m= ode and >>>>> * when doing cross vendor migration >>>>> */ >>>>> - if (kvm_enabled()) { >>>>> + //if (kvm_enabled()) { >>>>> + if (0) { >>>>> uint32_t ebx =3D 0, ecx =3D 0, edx =3D 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, e= ven >>>>> 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 c= ode. >>>> >>>> Jan >>>> >>>> >>> >>> >>> >> >> >=20 > 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: >=20 > 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 ------enig2RQIMPIAQOAOBVNIREEDC Content-Type: application/pgp-signature; name="signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="signature.asc" -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.16 (GNU/Linux) Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/ iEYEARECAAYFAlGEzocACgkQitSsb3rl5xSlGwCg11kJYfOIZtxifRCnnfmcEdXS C6UAoMDO2Kid1K6FOXpISQYZXR0CfHYX =tSl2 -----END PGP SIGNATURE----- ------enig2RQIMPIAQOAOBVNIREEDC--