From: Paolo Bonzini <pbonz...@redhat.com>

KVM's optimization of guest port 80 accesses was removed last May 11
in commit 99f85a.  However, this probably has speed penalties.  I don't
have a machine to test but the equivalent VMX patch (fdef3ad) reported
a speedup of 3-5%, and on the Xen mailing list it was mentioned that on
Xen passing port 80 through had positive effects on startup speed.

We can enable passthrough to the same port the host kernel uses instead.

Signed-off-by: Paolo Bonzini <pbonz...@redhat.com>
---
 arch/x86/kernel/io_delay.c |    1 +
 arch/x86/kvm/svm.c         |    5 +++++
 2 files changed, 6 insertions(+), 0 deletions(-)

diff --git a/arch/x86/kernel/io_delay.c b/arch/x86/kernel/io_delay.c
index a979b5b..a478cb2 100644
--- a/arch/x86/kernel/io_delay.c
+++ b/arch/x86/kernel/io_delay.c
@@ -129,3 +129,4 @@ static int __init io_delay_param(char *s)
 }
 
 early_param("io_delay", io_delay_param);
+EXPORT_SYMBOL_GPL(io_delay_type);
diff --git a/arch/x86/kvm/svm.c b/arch/x86/kvm/svm.c
index 1f8510c..c49f4db 100644
--- a/arch/x86/kvm/svm.c
+++ b/arch/x86/kvm/svm.c
@@ -26,6 +26,7 @@
 #include <linux/highmem.h>
 #include <linux/sched.h>
 
+#include <asm/io.h>
 #include <asm/desc.h>
 
 #include <asm/virtext.h>
@@ -411,6 +412,10 @@ static __init int svm_hardware_setup(void)
 
        iopm_va = page_address(iopm_pages);
        memset(iopm_va, 0xff, PAGE_SIZE * (1 << IOPM_ALLOC_ORDER));
+       if (io_delay_type == CONFIG_IO_DELAY_TYPE_0X80)
+               clear_bit(0x80, iopm_va);
+       else if (io_delay_type == CONFIG_IO_DELAY_TYPE_0XED)
+               clear_bit(0xED, iopm_va);
        iopm_base = page_to_pfn(iopm_pages) << PAGE_SHIFT;
 
        if (boot_cpu_has(X86_FEATURE_NX))
-- 
1.6.0.3

--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to