diff options
Diffstat (limited to 'common/recipes-kernel/linux/linux-yocto-4.9.21/0025-KVM-x86-Reduce-retpoline-performance-impact-in-slot_.patch')
-rw-r--r-- | common/recipes-kernel/linux/linux-yocto-4.9.21/0025-KVM-x86-Reduce-retpoline-performance-impact-in-slot_.patch | 103 |
1 files changed, 0 insertions, 103 deletions
diff --git a/common/recipes-kernel/linux/linux-yocto-4.9.21/0025-KVM-x86-Reduce-retpoline-performance-impact-in-slot_.patch b/common/recipes-kernel/linux/linux-yocto-4.9.21/0025-KVM-x86-Reduce-retpoline-performance-impact-in-slot_.patch deleted file mode 100644 index eb633c9c..00000000 --- a/common/recipes-kernel/linux/linux-yocto-4.9.21/0025-KVM-x86-Reduce-retpoline-performance-impact-in-slot_.patch +++ /dev/null @@ -1,103 +0,0 @@ -From 15ca5afe3e56a0f80151aa4b6f06233b39736a2e Mon Sep 17 00:00:00 2001 -From: David Woodhouse <dwmw@amazon.co.uk> -Date: Sat, 10 Feb 2018 23:39:24 +0000 -Subject: [PATCH 25/33] KVM/x86: Reduce retpoline performance impact in - slot_handle_level_range(), by always inlining iterator helper methods -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -commit 928a4c39484281f8ca366f53a1db79330d058401 upstream. - -With retpoline, tight loops of "call this function for every XXX" are -very much pessimised by taking a prediction miss *every* time. This one -is by far the biggest contributor to the guest launch time with retpoline. - -By marking the iterator slot_handle_…() functions always_inline, we can -ensure that the indirect function call can be optimised away into a -direct call and it actually generates slightly smaller code because -some of the other conditionals can get optimised away too. - -Performance is now pretty close to what we see with nospectre_v2 on -the command line. - -Suggested-by: Linus Torvalds <torvalds@linux-foundation.org> -Tested-by: Filippo Sironi <sironi@amazon.de> -Signed-off-by: David Woodhouse <dwmw@amazon.co.uk> -Reviewed-by: Filippo Sironi <sironi@amazon.de> -Acked-by: Paolo Bonzini <pbonzini@redhat.com> -Cc: Andy Lutomirski <luto@kernel.org> -Cc: Arjan van de Ven <arjan@linux.intel.com> -Cc: Borislav Petkov <bp@alien8.de> -Cc: Dan Williams <dan.j.williams@intel.com> -Cc: Dave Hansen <dave.hansen@linux.intel.com> -Cc: David Woodhouse <dwmw2@infradead.org> -Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org> -Cc: Josh Poimboeuf <jpoimboe@redhat.com> -Cc: Peter Zijlstra <peterz@infradead.org> -Cc: Thomas Gleixner <tglx@linutronix.de> -Cc: arjan.van.de.ven@intel.com -Cc: dave.hansen@intel.com -Cc: jmattson@google.com -Cc: karahmed@amazon.de -Cc: kvm@vger.kernel.org -Cc: rkrcmar@redhat.com -Link: http://lkml.kernel.org/r/1518305967-31356-4-git-send-email-dwmw@amazon.co.uk -Signed-off-by: Ingo Molnar <mingo@kernel.org> -Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> ---- - arch/x86/kvm/mmu.c | 10 +++++----- - 1 file changed, 5 insertions(+), 5 deletions(-) - -diff --git a/arch/x86/kvm/mmu.c b/arch/x86/kvm/mmu.c -index d9c7e98..ee4af7a 100644 ---- a/arch/x86/kvm/mmu.c -+++ b/arch/x86/kvm/mmu.c -@@ -4636,7 +4636,7 @@ void kvm_mmu_uninit_vm(struct kvm *kvm) - typedef bool (*slot_level_handler) (struct kvm *kvm, struct kvm_rmap_head *rmap_head); - - /* The caller should hold mmu-lock before calling this function. */ --static bool -+static __always_inline bool - slot_handle_level_range(struct kvm *kvm, struct kvm_memory_slot *memslot, - slot_level_handler fn, int start_level, int end_level, - gfn_t start_gfn, gfn_t end_gfn, bool lock_flush_tlb) -@@ -4666,7 +4666,7 @@ slot_handle_level_range(struct kvm *kvm, struct kvm_memory_slot *memslot, - return flush; - } - --static bool -+static __always_inline bool - slot_handle_level(struct kvm *kvm, struct kvm_memory_slot *memslot, - slot_level_handler fn, int start_level, int end_level, - bool lock_flush_tlb) -@@ -4677,7 +4677,7 @@ slot_handle_level(struct kvm *kvm, struct kvm_memory_slot *memslot, - lock_flush_tlb); - } - --static bool -+static __always_inline bool - slot_handle_all_level(struct kvm *kvm, struct kvm_memory_slot *memslot, - slot_level_handler fn, bool lock_flush_tlb) - { -@@ -4685,7 +4685,7 @@ slot_handle_all_level(struct kvm *kvm, struct kvm_memory_slot *memslot, - PT_MAX_HUGEPAGE_LEVEL, lock_flush_tlb); - } - --static bool -+static __always_inline bool - slot_handle_large_level(struct kvm *kvm, struct kvm_memory_slot *memslot, - slot_level_handler fn, bool lock_flush_tlb) - { -@@ -4693,7 +4693,7 @@ slot_handle_large_level(struct kvm *kvm, struct kvm_memory_slot *memslot, - PT_MAX_HUGEPAGE_LEVEL, lock_flush_tlb); - } - --static bool -+static __always_inline bool - slot_handle_leaf(struct kvm *kvm, struct kvm_memory_slot *memslot, - slot_level_handler fn, bool lock_flush_tlb) - { --- -2.7.4 - |