]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
x86/tlb: Move __flush_tlb_all() out of line
authorThomas Gleixner <tglx@linutronix.de>
Tue, 21 Apr 2020 09:20:37 +0000 (11:20 +0200)
committerBorislav Petkov <bp@suse.de>
Sun, 26 Apr 2020 16:17:31 +0000 (18:17 +0200)
Reduce the number of required exports to one and make flush_tlb_global()
static to the TLB code.

flush_tlb_local() cannot be confined to the TLB code as the MTRR
handling requires a PGE-less flush.

Suggested-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Borislav Petkov <bp@suse.de>
Link: https://lkml.kernel.org/r/20200421092559.740388137@linutronix.de
arch/x86/include/asm/tlbflush.h
arch/x86/mm/tlb.c

index d064ae8a0f2a8c6671a3053c806386a93a4b6eb7..7401c6cd1ffcc02ddb9db68636d2847d7f01795d 100644 (file)
@@ -142,8 +142,8 @@ static inline unsigned long build_cr3_noflush(pgd_t *pgd, u16 asid)
 
 struct flush_tlb_info;
 
+void __flush_tlb_all(void);
 void flush_tlb_local(void);
-void flush_tlb_global(void);
 void flush_tlb_one_user(unsigned long addr);
 void flush_tlb_one_kernel(unsigned long addr);
 void flush_tlb_others(const struct cpumask *cpumask,
@@ -341,27 +341,6 @@ static inline void cr4_set_bits_and_update_boot(unsigned long mask)
 
 extern void initialize_tlbstate_and_flush(void);
 
-/*
- * flush everything
- */
-static inline void __flush_tlb_all(void)
-{
-       /*
-        * This is to catch users with enabled preemption and the PGE feature
-        * and don't trigger the warning in __native_flush_tlb().
-        */
-       VM_WARN_ON_ONCE(preemptible());
-
-       if (boot_cpu_has(X86_FEATURE_PGE)) {
-               flush_tlb_global();
-       } else {
-               /*
-                * !PGE -> !PCID (setup_pcid()), thus every flush is total.
-                */
-               flush_tlb_local();
-       }
-}
-
 #define TLB_FLUSH_ALL  -1UL
 
 /*
index 209799dabc7014e8ba859e2b51b9b780a3858341..aabf8c7377e3e51533ba7fbcc4dfe0043fceb4f9 100644 (file)
@@ -1018,12 +1018,6 @@ STATIC_NOPV void native_flush_tlb_global(void)
        raw_local_irq_restore(flags);
 }
 
-void flush_tlb_global(void)
-{
-       __flush_tlb_global();
-}
-EXPORT_SYMBOL_GPL(flush_tlb_global);
-
 /*
  * Flush the entire current user mapping
  */
@@ -1046,7 +1040,28 @@ void flush_tlb_local(void)
 {
        __flush_tlb_local();
 }
-EXPORT_SYMBOL_GPL(flush_tlb_local);
+
+/*
+ * Flush everything
+ */
+void __flush_tlb_all(void)
+{
+       /*
+        * This is to catch users with enabled preemption and the PGE feature
+        * and don't trigger the warning in __native_flush_tlb().
+        */
+       VM_WARN_ON_ONCE(preemptible());
+
+       if (boot_cpu_has(X86_FEATURE_PGE)) {
+               __flush_tlb_global();
+       } else {
+               /*
+                * !PGE -> !PCID (setup_pcid()), thus every flush is total.
+                */
+               flush_tlb_local();
+       }
+}
+EXPORT_SYMBOL_GPL(__flush_tlb_all);
 
 /*
  * arch_tlbbatch_flush() performs a full TLB flush regardless of the active mm.