x86/HAP: Add global enable/disable command line option
authorAndrew Cooper <andrew.cooper3@citrix.com>
Tue, 12 Feb 2013 10:12:22 +0000 (11:12 +0100)
committerAndrew Cooper <andrew.cooper3@citrix.com>
Tue, 12 Feb 2013 10:12:22 +0000 (11:12 +0100)
Also, correct a copy&paste error in the documentation.

Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
Acked-by: Tim Deegan <tim@xen.org>
Committed-by: Jan Beulich <jbeulich@suse.com>
docs/misc/xen-command-line.markdown
xen/arch/x86/hvm/hvm.c

index 32443b0d0c87d31ccd10efee1d6872f84e114895..81b86613dcae427a8469ab6bb2b2805022989ad2 100644 (file)
@@ -521,6 +521,14 @@ more importance will be printed.
 The optional `<rate-limited level>` option instructs which severities
 should be rate limited.
 
+### hap
+> `= <boolean>`
+
+> Default: `true`
+
+Flag to globally enable or disable support for Hardware Assisted
+Paging (HAP)
+
 ### hap\_1gb
 > `= <boolean>`
 
@@ -534,7 +542,7 @@ Paging (HAP).
 
 > Default: `true`
 
-Flag to enable 1 GB host page table support for Hardware Assisted
+Flag to enable 2 MB host page table support for Hardware Assisted
 Paging (HAP).
 
 ### hpetbroadcast
index 34b86f4f3984d34db55e6be06d6989b0baedf4c4..fcea52c73776975f7bff66a42153c52e101a800c 100644 (file)
@@ -78,6 +78,10 @@ struct hvm_function_table hvm_funcs __read_mostly;
 unsigned long __attribute__ ((__section__ (".bss.page_aligned")))
     hvm_io_bitmap[3*PAGE_SIZE/BYTES_PER_LONG];
 
+/* Xen command-line option to enable HAP */
+static bool_t __initdata opt_hap_enabled = 1;
+boolean_param("hap", opt_hap_enabled);
+
 static int cpu_callback(
     struct notifier_block *nfb, unsigned long action, void *hcpu)
 {
@@ -123,7 +127,14 @@ static int __init hvm_enable(void)
     hvm_enabled = 1;
 
     printk("HVM: %s enabled\n", hvm_funcs.name);
-    if ( hvm_funcs.hap_supported )
+    if ( !hvm_funcs.hap_supported )
+        printk("HVM: Hardware Assisted Paging (HAP) not detected\n");
+    else if ( !opt_hap_enabled )
+    {
+        hvm_funcs.hap_supported = 0;
+        printk("HVM: Hardware Assisted Paging (HAP) detected but disabled\n");
+    }
+    else
     {
         printk("HVM: Hardware Assisted Paging (HAP) detected\n");
         printk("HVM: HAP page sizes: 4kB");