We gain nothing by having the core code enable IRQs right before calling
activate_mm() only for us to turn them right back off again in switch_mm().
This will save a few cycles, so execve() should be blazingly fast with this
patch applied!
Signed-off-by: Andy Lutomirski <luto@kernel.org>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Cc: Rik van Riel <riel@surriel.com>
Cc: "H. Peter Anvin" <hpa@zytor.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Andrew Morton <akpm@linux-foundation.org>
Link: https://lore.kernel.org/r/20250402094540.3586683-8-mingo@kernel.org
        select ARCH_WANT_HUGETLB_VMEMMAP_PREINIT if X86_64
        select ARCH_WANTS_THP_SWAP              if X86_64
        select ARCH_HAS_PARANOID_L1D_FLUSH
+       select ARCH_WANT_IRQS_OFF_ACTIVATE_MM
        select BUILDTIME_TABLE_SORT
        select CLKEVT_I8253
        select CLOCKSOURCE_WATCHDOG
 
 #define activate_mm(prev, next)                        \
 do {                                           \
        paravirt_enter_mmap(next);              \
-       switch_mm((prev), (next), NULL);        \
+       switch_mm_irqs_off((prev), (next), NULL);       \
 } while (0);
 
 #ifdef CONFIG_X86_32