From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jan Kiszka Subject: Re: [PATCH v2 1/5] KVM: nVMX: Advertise support for MSR_IA32_VMX_TRUE_*_CTLS Date: Tue, 17 Jun 2014 08:13:28 +0200 Message-ID: <539FDC88.9070103@web.de> References: Mime-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="2dn3xn4A58XwgdvokGfLF7AUVXj3wBOsD" Cc: Paolo Bonzini , kvm To: Bandan Das Return-path: Received: from mout.web.de ([212.227.17.12]:60383 "EHLO mout.web.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755772AbaFQGNf (ORCPT ); Tue, 17 Jun 2014 02:13:35 -0400 In-Reply-To: Sender: kvm-owner@vger.kernel.org List-ID: This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --2dn3xn4A58XwgdvokGfLF7AUVXj3wBOsD Content-Type: text/plain; charset=ISO-8859-15 Content-Transfer-Encoding: quoted-printable On 2014-06-16 18:54, Bandan Das wrote: > Jan Kiszka writes: >=20 >> We already implemented them but failed to advertise them. Currently th= ey >> all return the identical values to the capability MSRs they are >> augmenting. So there is no change in exposed features yet. >> >> Drop related comments at this chance that are partially incorrect and >> redundant anyway. >> >> Signed-off-by: Jan Kiszka >> --- >> arch/x86/include/uapi/asm/msr-index.h | 1 + >> arch/x86/kvm/vmx.c | 13 ++----------- >> 2 files changed, 3 insertions(+), 11 deletions(-) >> >> diff --git a/arch/x86/include/uapi/asm/msr-index.h b/arch/x86/include/= uapi/asm/msr-index.h >> index fcf2b3a..eaefcc6 100644 >> --- a/arch/x86/include/uapi/asm/msr-index.h >> +++ b/arch/x86/include/uapi/asm/msr-index.h >> @@ -558,6 +558,7 @@ >> =20 >> /* VMX_BASIC bits and bitmasks */ >> #define VMX_BASIC_VMCS_SIZE_SHIFT 32 >> +#define VMX_BASIC_TRUE_CTLS (1ULL << 55) >=20 > Curiosity question - know of any case that failed since we didn't > set this bit ? None. But that is likely due to the fact that we exposed a broken PROCBASED_CTLS value. Jan >=20 >> #define VMX_BASIC_64 0x0001000000000000LLU >> #define VMX_BASIC_MEM_TYPE_SHIFT 50 >> #define VMX_BASIC_MEM_TYPE_MASK 0x003c000000000000LLU >> diff --git a/arch/x86/kvm/vmx.c b/arch/x86/kvm/vmx.c >> index 801332e..536f341 100644 >> --- a/arch/x86/kvm/vmx.c >> +++ b/arch/x86/kvm/vmx.c >> @@ -2265,21 +2265,13 @@ static __init void nested_vmx_setup_ctls_msrs(= void) >> /* pin-based controls */ >> rdmsr(MSR_IA32_VMX_PINBASED_CTLS, >> nested_vmx_pinbased_ctls_low, nested_vmx_pinbased_ctls_high); >> - /* >> - * According to the Intel spec, if bit 55 of VMX_BASIC is off (as it= is >> - * in our case), bits 1, 2 and 4 (i.e., 0x16) must be 1 in this MSR.= >> - */ >> nested_vmx_pinbased_ctls_low |=3D PIN_BASED_ALWAYSON_WITHOUT_TRUE_MS= R; >> nested_vmx_pinbased_ctls_high &=3D PIN_BASED_EXT_INTR_MASK | >> PIN_BASED_NMI_EXITING | PIN_BASED_VIRTUAL_NMIS; >> nested_vmx_pinbased_ctls_high |=3D PIN_BASED_ALWAYSON_WITHOUT_TRUE_M= SR | >> PIN_BASED_VMX_PREEMPTION_TIMER; >> =20 >> - /* >> - * Exit controls >> - * If bit 55 of VMX_BASIC is off, bits 0-8 and 10, 11, 13, 14, 16 an= d >> - * 17 must be 1. >> - */ >> + /* exit controls */ >> rdmsr(MSR_IA32_VMX_EXIT_CTLS, >> nested_vmx_exit_ctls_low, nested_vmx_exit_ctls_high); >> nested_vmx_exit_ctls_low =3D VM_EXIT_ALWAYSON_WITHOUT_TRUE_MSR; >> @@ -2299,7 +2291,6 @@ static __init void nested_vmx_setup_ctls_msrs(vo= id) >> /* entry controls */ >> rdmsr(MSR_IA32_VMX_ENTRY_CTLS, >> nested_vmx_entry_ctls_low, nested_vmx_entry_ctls_high); >> - /* If bit 55 of VMX_BASIC is off, bits 0-8 and 12 must be 1. */ >> nested_vmx_entry_ctls_low =3D VM_ENTRY_ALWAYSON_WITHOUT_TRUE_MSR; >> nested_vmx_entry_ctls_high &=3D >> #ifdef CONFIG_X86_64 >> @@ -2394,7 +2385,7 @@ static int vmx_get_vmx_msr(struct kvm_vcpu *vcpu= , u32 msr_index, u64 *pdata) >> * guest, and the VMCS structure we give it - not about the >> * VMX support of the underlying hardware. >> */ >> - *pdata =3D VMCS12_REVISION | >> + *pdata =3D VMCS12_REVISION | VMX_BASIC_TRUE_CTLS | >> ((u64)VMCS12_SIZE << VMX_BASIC_VMCS_SIZE_SHIFT) | >> (VMX_BASIC_MEM_TYPE_WB << VMX_BASIC_MEM_TYPE_SHIFT); >> break; > -- > To unsubscribe from this list: send the line "unsubscribe kvm" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html >=20 --2dn3xn4A58XwgdvokGfLF7AUVXj3wBOsD 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.19 (GNU/Linux) Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/ iEYEARECAAYFAlOf3IgACgkQitSsb3rl5xSQywCeOdYQ3M+OEUNiYXaQx3MuCLEV K20An052lWtO8B6cAp0cldHNu9JtMPmu =zpgo -----END PGP SIGNATURE----- --2dn3xn4A58XwgdvokGfLF7AUVXj3wBOsD--