Resending with correct David's email s/[email protected]/[email protected]/ (it's incorrect in signed-off-by line)
On 01/15/2018 05:31 PM, Andrey Ryabinin wrote: > > > On 01/15/2018 03:35 PM, Greg Kroah-Hartman wrote: >> 4.9-stable review patch. If anyone has any objections, please let me know. >> >> ------------------ >> >> From: Andrey Ryabinin <[email protected]> >> >> commit 196bd485ee4f03ce4c690bfcf38138abfcd0a4bc upstream. >> >> Currently we use current_stack_pointer() function to get the value >> of the stack pointer register. Since commit: >> >> f5caf621ee35 ("x86/asm: Fix inline asm call constraints for Clang") >> >> ... we have a stack register variable declared. It can be used instead of >> current_stack_pointer() function which allows to optimize away some >> excessive "mov %rsp, %<dst>" instructions: >> >> -mov %rsp,%rdx >> -sub %rdx,%rax >> -cmp $0x3fff,%rax >> -ja ffffffff810722fd <ist_begin_non_atomic+0x2d> >> >> +sub %rsp,%rax >> +cmp $0x3fff,%rax >> +ja ffffffff810722fa <ist_begin_non_atomic+0x2a> >> >> Remove current_stack_pointer(), rename __asm_call_sp to current_stack_pointer >> and use it instead of the removed function. >> >> Signed-off-by: Andrey Ryabinin <[email protected]> >> Reviewed-by: Josh Poimboeuf <[email protected]> >> Cc: Andy Lutomirski <[email protected]> >> Cc: Linus Torvalds <[email protected]> >> Cc: Peter Zijlstra <[email protected]> >> Cc: Thomas Gleixner <[email protected]> >> Link: http://lkml.kernel.org/r/[email protected] >> Signed-off-by: Ingo Molnar <[email protected]> >> [dwmw2: We want ASM_CALL_CONSTRAINT for retpoline] > > If we want ASM_CALL_CONSTRAINT it would be more correct to backport > f5caf621ee35 ("x86/asm: Fix inline asm call constraints for Clang") > and some fixes for it: > 520a13c530ae ("x86/asm: Fix inline asm call constraints for GCC 4.4") > ca26cffa4e4a ("x86/asm: Allow again using asm.h when building for the 'bpf' > clang target") > > Because ASM_CALL_CONSTRAINT added in f5caf621ee35, not in this patch. > > The end result looks fine though. So it's ok to keep it that way. > > >> Signed-off-by: David Woodhouse <[email protected]> >> Signed-off-by: Greg Kroah-Hartman <[email protected]> >> --- >> arch/x86/include/asm/asm.h | 11 +++++++++++ >> arch/x86/include/asm/thread_info.h | 11 ----------- >> arch/x86/kernel/irq_32.c | 6 +++--- >> arch/x86/kernel/traps.c | 2 +- >> arch/x86/mm/tlb.c | 2 +- >> 5 files changed, 16 insertions(+), 16 deletions(-) >> >> --- a/arch/x86/include/asm/asm.h >> +++ b/arch/x86/include/asm/asm.h >> @@ -125,4 +125,15 @@ >> /* For C file, we already have NOKPROBE_SYMBOL macro */ >> #endif >> >> +#ifndef __ASSEMBLY__ >> +/* >> + * This output constraint should be used for any inline asm which has a >> "call" >> + * instruction. Otherwise the asm may be inserted before the frame pointer >> + * gets set up by the containing function. If you forget to do this, >> objtool >> + * may print a "call without frame pointer save/setup" warning. >> + */ >> +register unsigned long current_stack_pointer asm(_ASM_SP); >> +#define ASM_CALL_CONSTRAINT "+r" (current_stack_pointer) >> +#endif >> + >> #endif /* _ASM_X86_ASM_H */

