summaryrefslogtreecommitdiff
path: root/arch/x86/kvm/mmu
diff options
context:
space:
mode:
authorDavid Matlack <dmatlack@google.com>2023-01-26 21:40:21 +0300
committerSean Christopherson <seanjc@google.com>2023-03-18 01:08:41 +0300
commit28e4b4597d65927f8147c493d66aa0fe006e364c (patch)
tree9ff0eb57b45819280cbeaf7051dc88e1a4296246 /arch/x86/kvm/mmu
parent141705b78381ab1dcb52c84ebb396e434e86b624 (diff)
downloadlinux-28e4b4597d65927f8147c493d66aa0fe006e364c.tar.xz
KVM: x86/mmu: Collapse kvm_flush_remote_tlbs_with_{range,address}() together
Collapse kvm_flush_remote_tlbs_with_range() and kvm_flush_remote_tlbs_with_address() into a single function. This eliminates some lines of code and a useless NULL check on the range struct. Opportunistically switch from ENOTSUPP to EOPNOTSUPP to make checkpatch happy. Signed-off-by: David Matlack <dmatlack@google.com> Link: https://lore.kernel.org/r/20230126184025.2294823-4-dmatlack@google.com Signed-off-by: Sean Christopherson <seanjc@google.com>
Diffstat (limited to 'arch/x86/kvm/mmu')
-rw-r--r--arch/x86/kvm/mmu/mmu.c19
1 files changed, 6 insertions, 13 deletions
diff --git a/arch/x86/kvm/mmu/mmu.c b/arch/x86/kvm/mmu/mmu.c
index 9655656dce50..ed1df733f12a 100644
--- a/arch/x86/kvm/mmu/mmu.c
+++ b/arch/x86/kvm/mmu/mmu.c
@@ -261,27 +261,20 @@ static inline bool kvm_available_flush_tlb_with_range(void)
return kvm_x86_ops.tlb_remote_flush_with_range;
}
-static void kvm_flush_remote_tlbs_with_range(struct kvm *kvm,
- struct kvm_tlb_range *range)
-{
- int ret = -ENOTSUPP;
-
- if (range && kvm_x86_ops.tlb_remote_flush_with_range)
- ret = static_call(kvm_x86_tlb_remote_flush_with_range)(kvm, range);
-
- if (ret)
- kvm_flush_remote_tlbs(kvm);
-}
-
void kvm_flush_remote_tlbs_with_address(struct kvm *kvm,
u64 start_gfn, u64 pages)
{
struct kvm_tlb_range range;
+ int ret = -EOPNOTSUPP;
range.start_gfn = start_gfn;
range.pages = pages;
- kvm_flush_remote_tlbs_with_range(kvm, &range);
+ if (kvm_x86_ops.tlb_remote_flush_with_range)
+ ret = static_call(kvm_x86_tlb_remote_flush_with_range)(kvm, &range);
+
+ if (ret)
+ kvm_flush_remote_tlbs(kvm);
}
static gfn_t kvm_mmu_page_get_gfn(struct kvm_mmu_page *sp, int index);