x86/entry/64: Avoid pointless code when CONTEXT_TRACKING=n
authorThomas Gleixner <tglx@linutronix.de>
Tue, 25 Feb 2020 22:16:08 +0000 (23:16 +0100)
committerThomas Gleixner <tglx@linutronix.de>
Thu, 11 Jun 2020 13:14:34 +0000 (15:14 +0200)
GAS cannot optimize out the test and conditional jump when context tracking
is disabled and CALL_enter_from_user_mode is an empty macro.

Wrap it in #ifdeffery. Will go away once all this is moved to C.

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Reviewed-by: Alexandre Chartre <alexandre.chartre@oracle.com>
Acked-by: Frederic Weisbecker <frederic@kernel.org>
Acked-by: Andy Lutomirski <luto@kernel.org>
Acked-by: Peter Zijlstra <peterz@infradead.org>
Link: https://lkml.kernel.org/r/20200505134058.955968069@linutronix.de
arch/x86/entry/entry_64.S

index 87ffa792bc99ee0f968d1c2ddedd8f3c3699b863..a15b70ac87b53ef7e9959e3e222c54ad483d37f1 100644 (file)
@@ -889,12 +889,14 @@ apicinterrupt IRQ_WORK_VECTOR                     irq_work_interrupt              smp_irq_work_interrupt
        TRACE_IRQS_OFF
        .endif
 
+#ifdef CONFIG_CONTEXT_TRACKING
        .if \paranoid == 0
        testb   $3, CS(%rsp)
        jz      .Lfrom_kernel_no_context_tracking_\@
        CALL_enter_from_user_mode
 .Lfrom_kernel_no_context_tracking_\@:
        .endif
+#endif
 
        movq    %rsp, %rdi                      /* pt_regs pointer */