diff options
author | Thomas Gleixner <tglx@linutronix.de> | 2017-12-30 16:13:53 -0500 |
---|---|---|
committer | Ingo Molnar <mingo@kernel.org> | 2017-12-31 06:12:51 -0500 |
commit | 322f8b8b340c824aef891342b0f5795d15e11562 (patch) | |
tree | 3b4d1881e6ca88f531c3a45c2589468f86799f03 | |
parent | 9f5cb6b32d9e0a3a7453222baaf15664d92adbf2 (diff) |
x86/smpboot: Remove stale TLB flush invocations
smpboot_setup_warm_reset_vector() and smpboot_restore_warm_reset_vector()
invoke local_flush_tlb() for no obvious reason.
Digging in history revealed that the original code in the 2.1 era added
those because the code manipulated a swapper_pg_dir pagetable entry. The
pagetable manipulation was removed long ago in the 2.3 timeframe, but the
TLB flush invocations stayed around forever.
Remove them along with the pointless pr_debug()s which come from the same 2.1
change.
Reported-by: Dominik Brodowski <linux@dominikbrodowski.net>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Cc: <stable@vger.kernel.org>
Cc: Andy Lutomirski <luto@kernel.org>
Cc: Borislav Petkov <bp@alien8.de>
Cc: Dave Hansen <dave.hansen@linux.intel.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Linus Torvalds <torvalds@linuxfoundation.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Link: http://lkml.kernel.org/r/20171230211829.586548655@linutronix.de
Signed-off-by: Ingo Molnar <mingo@kernel.org>
-rw-r--r-- | arch/x86/kernel/smpboot.c | 9 |
1 files changed, 0 insertions, 9 deletions
diff --git a/arch/x86/kernel/smpboot.c b/arch/x86/kernel/smpboot.c index 33d6000265aa..c3402fc30865 100644 --- a/arch/x86/kernel/smpboot.c +++ b/arch/x86/kernel/smpboot.c | |||
@@ -128,14 +128,10 @@ static inline void smpboot_setup_warm_reset_vector(unsigned long start_eip) | |||
128 | spin_lock_irqsave(&rtc_lock, flags); | 128 | spin_lock_irqsave(&rtc_lock, flags); |
129 | CMOS_WRITE(0xa, 0xf); | 129 | CMOS_WRITE(0xa, 0xf); |
130 | spin_unlock_irqrestore(&rtc_lock, flags); | 130 | spin_unlock_irqrestore(&rtc_lock, flags); |
131 | local_flush_tlb(); | ||
132 | pr_debug("1.\n"); | ||
133 | *((volatile unsigned short *)phys_to_virt(TRAMPOLINE_PHYS_HIGH)) = | 131 | *((volatile unsigned short *)phys_to_virt(TRAMPOLINE_PHYS_HIGH)) = |
134 | start_eip >> 4; | 132 | start_eip >> 4; |
135 | pr_debug("2.\n"); | ||
136 | *((volatile unsigned short *)phys_to_virt(TRAMPOLINE_PHYS_LOW)) = | 133 | *((volatile unsigned short *)phys_to_virt(TRAMPOLINE_PHYS_LOW)) = |
137 | start_eip & 0xf; | 134 | start_eip & 0xf; |
138 | pr_debug("3.\n"); | ||
139 | } | 135 | } |
140 | 136 | ||
141 | static inline void smpboot_restore_warm_reset_vector(void) | 137 | static inline void smpboot_restore_warm_reset_vector(void) |
@@ -143,11 +139,6 @@ static inline void smpboot_restore_warm_reset_vector(void) | |||
143 | unsigned long flags; | 139 | unsigned long flags; |
144 | 140 | ||
145 | /* | 141 | /* |
146 | * Install writable page 0 entry to set BIOS data area. | ||
147 | */ | ||
148 | local_flush_tlb(); | ||
149 | |||
150 | /* | ||
151 | * Paranoid: Set warm reset code and vector here back | 142 | * Paranoid: Set warm reset code and vector here back |
152 | * to default values. | 143 | * to default values. |
153 | */ | 144 | */ |