diff mbox

[1/2] KVM: VMX: clean up declaration of VPID/EPT invalidation types

Message ID 1476830705-19269-1-git-send-email-jan.dakinevich@gmail.com (mailing list archive)
State New, archived
Headers show

Commit Message

Jan Dakinevich Oct. 18, 2016, 10:45 p.m. UTC
- Remove VMX_EPT_EXTENT_INDIVIDUAL_ADDR, since there is no such type of
   EPT invalidation

 - Rename VMX_VPID_EXTENT_ALL_CONTEXT to VMX_VPID_EXTENT_GLOBAL_CONTEXT
   for consitency: all-context VPID invalidation is referenced  by
   "global" keyword in all other places of code

 - Add missing VPID types names

Signed-off-by: Jan Dakinevich <jan.dakinevich@gmail.com>
---
 arch/x86/include/asm/vmx.h | 7 +++++--
 arch/x86/kvm/vmx.c         | 4 ++--
 2 files changed, 7 insertions(+), 4 deletions(-)

Comments

Radim Krčmář Oct. 21, 2016, 7:40 p.m. UTC | #1
2016-10-19 01:45+0300, Jan Dakinevich:
>  - Remove VMX_EPT_EXTENT_INDIVIDUAL_ADDR, since there is no such type of
>    EPT invalidation
> 
>  - Rename VMX_VPID_EXTENT_ALL_CONTEXT to VMX_VPID_EXTENT_GLOBAL_CONTEXT
>    for consitency: all-context VPID invalidation is referenced  by
>    "global" keyword in all other places of code

SDM names this invalidation as "all contexts" and global translations
have a different meaning, so I would keep it, for clarity.

We already use the other meaning in SINGLE_CONTEXT_RETAINING_GLOBALS and
for example INVPCID has type for "all contexts, including globals" and
"all contexts, excluding globals", so we will have to really distinguish
global and global at some point ...

>  - Add missing VPID types names
> 
> Signed-off-by: Jan Dakinevich <jan.dakinevich@gmail.com>
> ---
--
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
diff mbox

Patch

diff --git a/arch/x86/include/asm/vmx.h b/arch/x86/include/asm/vmx.h
index a002b07..785390f 100644
--- a/arch/x86/include/asm/vmx.h
+++ b/arch/x86/include/asm/vmx.h
@@ -399,10 +399,11 @@  enum vmcs_field {
 #define IDENTITY_PAGETABLE_PRIVATE_MEMSLOT	(KVM_USER_MEM_SLOTS + 2)
 
 #define VMX_NR_VPIDS				(1 << 16)
+#define VMX_VPID_EXTENT_INDIVIDUAL_ADDR		0
 #define VMX_VPID_EXTENT_SINGLE_CONTEXT		1
-#define VMX_VPID_EXTENT_ALL_CONTEXT		2
+#define VMX_VPID_EXTENT_GLOBAL_CONTEXT		2
+#define VMX_VPID_EXTENT_SINGLE_CONTEXT_RETAINING_GLOBALS 3
 
-#define VMX_EPT_EXTENT_INDIVIDUAL_ADDR		0
 #define VMX_EPT_EXTENT_CONTEXT			1
 #define VMX_EPT_EXTENT_GLOBAL			2
 #define VMX_EPT_EXTENT_SHIFT			24
@@ -419,8 +420,10 @@  enum vmcs_field {
 #define VMX_EPT_EXTENT_GLOBAL_BIT		(1ull << 26)
 
 #define VMX_VPID_INVVPID_BIT                    (1ull << 0) /* (32 - 32) */
+#define VMX_VPID_EXTENT_INDIVIDUAL_ADDR_BIT     (1ull << 8) /* (40 - 32) */
 #define VMX_VPID_EXTENT_SINGLE_CONTEXT_BIT      (1ull << 9) /* (41 - 32) */
 #define VMX_VPID_EXTENT_GLOBAL_CONTEXT_BIT      (1ull << 10) /* (42 - 32) */
+#define VMX_VPID_EXTENT_SINGLE_CONTEXT_RETAINING_GLOBALS_BIT (1ull << 11) /* (43 - 32) */
 
 #define VMX_EPT_DEFAULT_GAW			3
 #define VMX_EPT_MAX_GAW				0x4
diff --git a/arch/x86/kvm/vmx.c b/arch/x86/kvm/vmx.c
index af1168e8..b727028 100644
--- a/arch/x86/kvm/vmx.c
+++ b/arch/x86/kvm/vmx.c
@@ -1521,7 +1521,7 @@  static inline void vpid_sync_vcpu_single(int vpid)
 static inline void vpid_sync_vcpu_global(void)
 {
 	if (cpu_has_vmx_invvpid_global())
-		__invvpid(VMX_VPID_EXTENT_ALL_CONTEXT, 0, 0);
+		__invvpid(VMX_VPID_EXTENT_GLOBAL_CONTEXT, 0, 0);
 }
 
 static inline void vpid_sync_context(int vpid)
@@ -7747,7 +7747,7 @@  static int handle_invvpid(struct kvm_vcpu *vcpu)
 		 * Old versions of KVM use the single-context version so we
 		 * have to support it; just treat it the same as all-context.
 		 */
-	case VMX_VPID_EXTENT_ALL_CONTEXT:
+	case VMX_VPID_EXTENT_GLOBAL_CONTEXT:
 		__vmx_flush_tlb(vcpu, to_vmx(vcpu)->nested.vpid02);
 		nested_vmx_succeed(vcpu);
 		break;