aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorRik van Riel <riel@surriel.com>2024-11-08 19:27:50 -0500
committerIngo Molnar <mingo@kernel.org>2024-11-13 03:42:41 +0100
commit7e33001b8b9a78062679e0fdf5b0842a49063135 (patch)
treea4d43a057f795ab7c76358c7a80ff5a57b1526c2
parentMerge tag 'v6.12-rc7' into x86/mm, to pick up fixes before applying new patches (diff)
downloadwireguard-linux-7e33001b8b9a78062679e0fdf5b0842a49063135.tar.xz
wireguard-linux-7e33001b8b9a78062679e0fdf5b0842a49063135.zip
x86/mm/tlb: Put cpumask_test_cpu() check in switch_mm_irqs_off() under CONFIG_DEBUG_VM
On a web server workload, the cpumask_test_cpu() inside the WARN_ON_ONCE() in the 'prev == next branch' takes about 17% of all the CPU time of switch_mm_irqs_off(). On a large fleet, this WARN_ON_ONCE() has not fired in at least a month, possibly never. Move this test under CONFIG_DEBUG_VM so it does not get compiled in production kernels. Signed-off-by: Rik van Riel <riel@surriel.com> Signed-off-by: Ingo Molnar <mingo@kernel.org> Cc: Andy Lutomirski <luto@kernel.org> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Linus Torvalds <torvalds@linux-foundation.org> Link: https://lore.kernel.org/r/20241109003727.3958374-4-riel@surriel.com
Diffstat (limited to '')
-rw-r--r--arch/x86/mm/tlb.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/arch/x86/mm/tlb.c b/arch/x86/mm/tlb.c
index 86593d1b787d..b0d5a644fc84 100644
--- a/arch/x86/mm/tlb.c
+++ b/arch/x86/mm/tlb.c
@@ -568,7 +568,7 @@ void switch_mm_irqs_off(struct mm_struct *unused, struct mm_struct *next,
* mm_cpumask. The TLB shootdown code can figure out from
* cpu_tlbstate_shared.is_lazy whether or not to send an IPI.
*/
- if (WARN_ON_ONCE(prev != &init_mm &&
+ if (IS_ENABLED(CONFIG_DEBUG_VM) && WARN_ON_ONCE(prev != &init_mm &&
!cpumask_test_cpu(cpu, mm_cpumask(next))))
cpumask_set_cpu(cpu, mm_cpumask(next));