x86/mm: Remove pv_ops.mmu.tlb_remove_table call
authorRik van Riel <riel@surriel.com>
Thu, 13 Feb 2025 16:13:53 +0000 (11:13 -0500)
committerIngo Molnar <mingo@kernel.org>
Fri, 21 Feb 2025 15:20:12 +0000 (16:20 +0100)
Every pv_ops.mmu.tlb_remove_table call ends up calling tlb_remove_table.

Get rid of the indirection by simply calling tlb_remove_table directly,
and not going through the paravirt function pointers.

Suggested-by: Qi Zheng <zhengqi.arch@bytedance.com>
Signed-off-by: Rik van Riel <riel@surriel.com>
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Tested-by: Manali Shukla <Manali.Shukla@amd.com>
Tested-by: Brendan Jackman <jackmanb@google.com>
Tested-by: Michael Kelley <mhklinux@outlook.com>
Link: https://lore.kernel.org/r/20250213161423.449435-3-riel@surriel.com
arch/x86/hyperv/mmu.c
arch/x86/include/asm/paravirt.h
arch/x86/include/asm/paravirt_types.h
arch/x86/kernel/kvm.c
arch/x86/kernel/paravirt.c
arch/x86/xen/mmu_pv.c

index cc8c3bd..1f7c308 100644 (file)
@@ -239,5 +239,4 @@ void hyperv_setup_mmu_ops(void)
 
        pr_info("Using hypercall for remote TLB flush\n");
        pv_ops.mmu.flush_tlb_multi = hyperv_flush_tlb_multi;
-       pv_ops.mmu.tlb_remove_table = tlb_remove_table;
 }
index 041aff5..38a632a 100644 (file)
@@ -91,11 +91,6 @@ static inline void __flush_tlb_multi(const struct cpumask *cpumask,
        PVOP_VCALL2(mmu.flush_tlb_multi, cpumask, info);
 }
 
-static inline void paravirt_tlb_remove_table(struct mmu_gather *tlb, void *table)
-{
-       PVOP_VCALL2(mmu.tlb_remove_table, tlb, table);
-}
-
 static inline void paravirt_arch_exit_mmap(struct mm_struct *mm)
 {
        PVOP_VCALL1(mmu.exit_mmap, mm);
index fea56b0..e26633c 100644 (file)
@@ -134,8 +134,6 @@ struct pv_mmu_ops {
        void (*flush_tlb_multi)(const struct cpumask *cpus,
                                const struct flush_tlb_info *info);
 
-       void (*tlb_remove_table)(struct mmu_gather *tlb, void *table);
-
        /* Hook for intercepting the destruction of an mm_struct. */
        void (*exit_mmap)(struct mm_struct *mm);
        void (*notify_page_enc_status_changed)(unsigned long pfn, int npages, bool enc);
index 7a422a6..3be9b33 100644 (file)
@@ -838,7 +838,6 @@ static void __init kvm_guest_init(void)
 #ifdef CONFIG_SMP
        if (pv_tlb_flush_supported()) {
                pv_ops.mmu.flush_tlb_multi = kvm_flush_tlb_multi;
-               pv_ops.mmu.tlb_remove_table = tlb_remove_table;
                pr_info("KVM setup pv remote TLB flush\n");
        }
 
index 527f560..2aa251d 100644 (file)
@@ -180,7 +180,6 @@ struct paravirt_patch_template pv_ops = {
        .mmu.flush_tlb_kernel   = native_flush_tlb_global,
        .mmu.flush_tlb_one_user = native_flush_tlb_one_user,
        .mmu.flush_tlb_multi    = native_flush_tlb_multi,
-       .mmu.tlb_remove_table   = tlb_remove_table,
 
        .mmu.exit_mmap          = paravirt_nop,
        .mmu.notify_page_enc_status_changed     = paravirt_nop,
index d078de2..38971c6 100644 (file)
@@ -2189,7 +2189,6 @@ static const typeof(pv_ops) xen_mmu_ops __initconst = {
                .flush_tlb_kernel = xen_flush_tlb,
                .flush_tlb_one_user = xen_flush_tlb_one_user,
                .flush_tlb_multi = xen_flush_tlb_multi,
-               .tlb_remove_table = tlb_remove_table,
 
                .pgd_alloc = xen_pgd_alloc,
                .pgd_free = xen_pgd_free,