From: Alexander Graf Date: Wed, 18 Nov 2009 12:58:00 +0100 Subject: Replace kvm io delay pv-ops with linux magic References: bnc#556135, FATE#306453 Patch-Mainline: Submitted to virtualization list Currently we use pv-ops to tell linux not to do anything on io_delay. While the basic idea is good IMHO, I don't see why we would need pv-ops for that. The io delay function already has a switch that can do nothing if you're so inclined. So here's a patch (stacked on top of the previous pv-ops series) that removes the io delay pv-ops hook and just sets the native io delay variable instead. Signed-off-by: Alexander Graf --- arch/x86/Kconfig | 14 -------------- arch/x86/kernel/kvm.c | 16 +++------------- 2 files changed, 3 insertions(+), 27 deletions(-) --- a/arch/x86/Kconfig +++ b/arch/x86/Kconfig @@ -548,20 +548,6 @@ config KVM_GUEST This option enables various optimizations for running under the KVM hypervisor. -config KVM_IODELAY - bool "KVM IO-delay support" - depends on KVM_GUEST - select PARAVIRT_CPU - ---help--- - Usually we wait for PIO access to complete. When inside KVM there's - no need to do that, as we know that we're not going through a bus, - but process PIO requests instantly. - - This option disables PIO waits, but drags in CPU-bound pv-ops. Thus - you will probably get more speed loss than speedup using this option. - - If in doubt, say N. - config KVM_MMU bool "KVM PV MMU support" depends on KVM_GUEST --- a/arch/x86/kernel/kvm.c +++ b/arch/x86/kernel/kvm.c @@ -29,15 +29,6 @@ #include #include -#ifdef CONFIG_KVM_IODELAY -/* - * No need for any "IO delay" on KVM - */ -static void kvm_io_delay(void) -{ -} -#endif /* CONFIG_KVM_IODELAY */ - #ifdef CONFIG_KVM_MMU #define MMU_QUEUE_SIZE 1024 @@ -201,13 +192,12 @@ static void kvm_leave_lazy_mmu(void) static void __init paravirt_ops_setup(void) { + extern int io_delay_type; pv_info.name = "KVM"; pv_info.paravirt_enabled = 1; -#ifdef CONFIG_KVM_IODELAY - if (kvm_para_has_feature(KVM_FEATURE_NOP_IO_DELAY)) - pv_cpu_ops.io_delay = kvm_io_delay; -#endif + /* Disable IO delay */ + io_delay_type = CONFIG_IO_DELAY_TYPE_NONE; #ifdef CONFIG_KVM_MMU if (kvm_para_has_feature(KVM_FEATURE_MMU_OP)) {