WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-devel

[Xen-devel] [PATCH] EPT: fix handling of super page level limit

To: <xen-devel@xxxxxxxxxxxxxxxxxxx>
Subject: [Xen-devel] [PATCH] EPT: fix handling of super page level limit
From: "Jan Beulich" <JBeulich@xxxxxxxxxx>
Date: Wed, 05 May 2010 16:38:40 +0100
Delivery-date: Wed, 05 May 2010 08:38:35 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
List-help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-id: Xen developer discussion <xen-devel.lists.xensource.com>
List-post: <mailto:xen-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
Just like for other global VMX controls, the maximum super page level
used must be globally consistent (and not change post-init).

Additionally, the original patch yet again introduced a message
printed on each CPU, which this patch moves to a place where it gets
issued just once.

Signed-off-by: Jan Beulich <jbeulich@xxxxxxxxxx>

--- 2010-05-04.orig/xen/arch/x86/hvm/vmx/vmcs.c 2010-04-12 11:28:20.000000000 
+0200
+++ 2010-05-04/xen/arch/x86/hvm/vmx/vmcs.c      2010-05-05 16:28:23.000000000 
+0200
@@ -91,6 +91,10 @@ static void __init vmx_display_features(
 
     if ( !printed )
         printk(" - none\n");
+
+    if ( vmx_ept_super_page_level_limit )
+        printk("EPT supports %s super page.\n",
+               vmx_ept_super_page_level_limit > 1 ? "1G" : "2M");
 }
 
 static u32 adjust_vmx_controls(u32 ctl_min, u32 ctl_opt, u32 msr)
@@ -114,6 +118,7 @@ static void vmx_init_vmcs_config(void)
     u32 _vmx_pin_based_exec_control;
     u32 _vmx_cpu_based_exec_control;
     u32 _vmx_secondary_exec_control = 0;
+    u8 ept_super_page_level_limit = 0;
     u32 _vmx_vmexit_control;
     u32 _vmx_vmentry_control;
 
@@ -189,15 +194,9 @@ static void vmx_init_vmcs_config(void)
             uint64_t cap;
             rdmsrl(MSR_IA32_VMX_EPT_VPID_CAP, cap);
             if ( cap & VMX_EPT_SUPER_PAGE_1G )
-            {
-                vmx_ept_super_page_level_limit = 2;
-                printk("EPT support 1G super page.\n");
-            }
+                ept_super_page_level_limit = 2;
             else if ( cap & VMX_EPT_SUPER_PAGE_2M )
-            {
-                vmx_ept_super_page_level_limit = 1; 
-                printk("EPT support 2M super page.\n");
-            }
+                ept_super_page_level_limit = 1;
         }
     }
 
@@ -235,6 +234,7 @@ static void vmx_init_vmcs_config(void)
         vmx_pin_based_exec_control = _vmx_pin_based_exec_control;
         vmx_cpu_based_exec_control = _vmx_cpu_based_exec_control;
         vmx_secondary_exec_control = _vmx_secondary_exec_control;
+        vmx_ept_super_page_level_limit = ept_super_page_level_limit;
         vmx_vmexit_control         = _vmx_vmexit_control;
         vmx_vmentry_control        = _vmx_vmentry_control;
         cpu_has_vmx_ins_outs_instr_info = !!(vmx_basic_msr_high & (1U<<22));
@@ -247,6 +247,7 @@ static void vmx_init_vmcs_config(void)
         BUG_ON(vmx_pin_based_exec_control != _vmx_pin_based_exec_control);
         BUG_ON(vmx_cpu_based_exec_control != _vmx_cpu_based_exec_control);
         BUG_ON(vmx_secondary_exec_control != _vmx_secondary_exec_control);
+        BUG_ON(vmx_ept_super_page_level_limit > ept_super_page_level_limit);
         BUG_ON(vmx_vmexit_control != _vmx_vmexit_control);
         BUG_ON(vmx_vmentry_control != _vmx_vmentry_control);
         BUG_ON(cpu_has_vmx_ins_outs_instr_info !=



Attachment: ept-super-page.patch
Description: Text document

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
<Prev in Thread] Current Thread [Next in Thread>
  • [Xen-devel] [PATCH] EPT: fix handling of super page level limit, Jan Beulich <=