From: Sean Christopherson <sean.j.christopherson@intel.com>
To: Paolo Bonzini <pbonzini@redhat.com>
Cc: kvm@vger.kernel.org
Subject: [kvm-unit-tests PATCH 2/4] nVMX: Refactor the EPT/VPID MSR cap check to make it readable
Date: Fri, 7 Feb 2020 09:42:42 -0800 [thread overview]
Message-ID: <20200207174244.6590-3-sean.j.christopherson@intel.com> (raw)
In-Reply-To: <20200207174244.6590-1-sean.j.christopherson@intel.com>
Use the EPT_CAP_* and VPID_CAP_* defines to declare which bits are
reserved in MSR_IA32_VMX_EPT_VPID_CAP. Encoding the reserved bits in
a 64-bit literal is difficult to read, even more difficult to update,
and error prone, as evidenced by the check allowing bit 39 to be '1',
despite it being reserved to zero in Intel's SDM.
No functional change intended.
Signed-off-by: Sean Christopherson <sean.j.christopherson@intel.com>
---
x86/vmx.c | 21 ++++++++++++++++++++-
x86/vmx.h | 3 ++-
2 files changed, 22 insertions(+), 2 deletions(-)
diff --git a/x86/vmx.c b/x86/vmx.c
index 0f2521b..3a99d27 100644
--- a/x86/vmx.c
+++ b/x86/vmx.c
@@ -1537,8 +1537,27 @@ static void test_vmx_caps(void)
(val & 0xfffffffffffffc01Ull) == 0,
"MSR_IA32_VMX_VMCS_ENUM");
+ fixed0 = -1ull;
+ fixed0 &= ~(EPT_CAP_WT |
+ EPT_CAP_PWL4 |
+ EPT_CAP_UC |
+ EPT_CAP_WB |
+ EPT_CAP_2M_PAGE |
+ EPT_CAP_1G_PAGE |
+ EPT_CAP_INVEPT |
+ EPT_CAP_AD_FLAG |
+ EPT_CAP_ADV_EPT_INFO |
+ EPT_CAP_INVEPT_SINGLE |
+ EPT_CAP_INVEPT_ALL |
+ VPID_CAP_INVVPID |
+ (1ull << 39) |
+ VPID_CAP_INVVPID_ADDR |
+ VPID_CAP_INVVPID_CXTGLB |
+ VPID_CAP_INVVPID_ALL |
+ VPID_CAP_INVVPID_CXTLOC);
+
val = rdmsr(MSR_IA32_VMX_EPT_VPID_CAP);
- report((val & 0xfffff07ef98cbebeUll) == 0,
+ report((val & fixed0) == 0,
"MSR_IA32_VMX_EPT_VPID_CAP");
}
diff --git a/x86/vmx.h b/x86/vmx.h
index e8035fc..44f0fdd 100644
--- a/x86/vmx.h
+++ b/x86/vmx.h
@@ -587,9 +587,10 @@ enum vm_instruction_error_number {
#define EPT_CAP_2M_PAGE (1ull << 16)
#define EPT_CAP_1G_PAGE (1ull << 17)
#define EPT_CAP_INVEPT (1ull << 20)
+#define EPT_CAP_AD_FLAG (1ull << 21)
+#define EPT_CAP_ADV_EPT_INFO (1ull << 22)
#define EPT_CAP_INVEPT_SINGLE (1ull << 25)
#define EPT_CAP_INVEPT_ALL (1ull << 26)
-#define EPT_CAP_AD_FLAG (1ull << 21)
#define VPID_CAP_INVVPID (1ull << 32)
#define VPID_CAP_INVVPID_ADDR (1ull << 40)
#define VPID_CAP_INVVPID_CXTGLB (1ull << 41)
--
2.24.1
next prev parent reply other threads:[~2020-02-07 17:43 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-02-07 17:42 [kvm-unit-tests PATCH 0/4] nVMX: 5-level nested EPT support Sean Christopherson
2020-02-07 17:42 ` [kvm-unit-tests PATCH 1/4] nVMX: Extend EPTP test to allow 5-level EPT Sean Christopherson
2020-02-07 17:42 ` Sean Christopherson [this message]
2020-02-07 17:42 ` [kvm-unit-tests PATCH 3/4] nVMX: Mark bit 39 of MSR_IA32_VMX_EPT_VPID_CAP as reserved Sean Christopherson
2020-02-07 17:42 ` [kvm-unit-tests PATCH 4/4] nVMX: Extend EPT cap MSR test to allow 5-level EPT Sean Christopherson
2020-06-22 17:42 ` [kvm-unit-tests PATCH 0/4] nVMX: 5-level nested EPT support Sean Christopherson
2020-06-22 17:44 ` Paolo Bonzini
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20200207174244.6590-3-sean.j.christopherson@intel.com \
--to=sean.j.christopherson@intel.com \
--cc=kvm@vger.kernel.org \
--cc=pbonzini@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.