linux_old1/arch
Tom Lendacky 28d437d550 x86/retpoline: Add LFENCE to the retpoline/RSB filling RSB macros
The PAUSE instruction is currently used in the retpoline and RSB filling
macros as a speculation trap.  The use of PAUSE was originally suggested
because it showed a very, very small difference in the amount of
cycles/time used to execute the retpoline as compared to LFENCE.  On AMD,
the PAUSE instruction is not a serializing instruction, so the pause/jmp
loop will use excess power as it is speculated over waiting for return
to mispredict to the correct target.

The RSB filling macro is applicable to AMD, and, if software is unable to
verify that LFENCE is serializing on AMD (possible when running under a
hypervisor), the generic retpoline support will be used and, so, is also
applicable to AMD.  Keep the current usage of PAUSE for Intel, but add an
LFENCE instruction to the speculation trap for AMD.

The same sequence has been adopted by GCC for the GCC generated retpolines.

Signed-off-by: Tom Lendacky <thomas.lendacky@amd.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Reviewed-by: Borislav Petkov <bp@alien8.de>
Acked-by: David Woodhouse <dwmw@amazon.co.uk>
Acked-by: Arjan van de Ven <arjan@linux.intel.com>
Cc: Rik van Riel <riel@redhat.com>
Cc: Andi Kleen <ak@linux.intel.com>
Cc: Paul Turner <pjt@google.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Tim Chen <tim.c.chen@linux.intel.com>
Cc: Jiri Kosina <jikos@kernel.org>
Cc: Dave Hansen <dave.hansen@intel.com>
Cc: Andy Lutomirski <luto@kernel.org>
Cc: Josh Poimboeuf <jpoimboe@redhat.com>
Cc: Dan Williams <dan.j.williams@intel.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Greg Kroah-Hartman <gregkh@linux-foundation.org>
Cc: Kees Cook <keescook@google.com>
Link: https://lkml.kernel.org/r/20180113232730.31060.36287.stgit@tlendack-t1.amdoffice.net
2018-01-15 00:32:55 +01:00
..
alpha License cleanup: add SPDX license identifiers to some files 2017-11-02 10:04:46 -07:00
arc License cleanup: add SPDX license identifiers to some files 2017-11-02 10:04:46 -07:00
arm Merge branch 'fixes' of git://git.armlinux.org.uk/~rmk/linux-arm 2017-11-09 17:41:39 -08:00
arm64 Merge branch 'upstream-acpi-fixes' into WIP.x86/pti.base 2017-12-17 13:09:31 +01:00
blackfin License cleanup: add SPDX license identifier to uapi header files with a license 2017-11-02 11:20:11 +01:00
c6x License cleanup: add SPDX license identifier to uapi header files with a license 2017-11-02 11:20:11 +01:00
cris License cleanup: add SPDX license identifier to uapi header files with no license 2017-11-02 11:19:54 +01:00
frv License cleanup: add SPDX license identifier to uapi header files with a license 2017-11-02 11:20:11 +01:00
h8300 License cleanup: add SPDX license identifier to uapi header files with no license 2017-11-02 11:19:54 +01:00
hexagon License cleanup: add SPDX license identifier to uapi header files with a license 2017-11-02 11:20:11 +01:00
ia64 Merge branch 'x86-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2017-11-05 12:14:50 -08:00
m32r License cleanup: add SPDX license identifier to uapi header files with a license 2017-11-02 11:20:11 +01:00
m68k License cleanup: add SPDX license identifier to uapi header files with a license 2017-11-02 11:20:11 +01:00
metag License cleanup: add SPDX license identifier to uapi header files with a license 2017-11-02 11:20:11 +01:00
microblaze License cleanup: add SPDX license identifier to uapi header files with a license 2017-11-02 11:20:11 +01:00
mips MIPS: AR7: Ensure that serial ports are properly set up 2017-11-08 14:57:55 +00:00
mn10300 License cleanup: add SPDX license identifier to uapi header files with a license 2017-11-02 11:20:11 +01:00
nios2 License cleanup: add SPDX license identifier to uapi header files with a license 2017-11-02 11:20:11 +01:00
openrisc License cleanup: add SPDX license identifier to uapi header files with a license 2017-11-02 11:20:11 +01:00
parisc License cleanup: add SPDX license identifier to uapi header files with a license 2017-11-02 11:20:11 +01:00
powerpc arch, mm: Allow arch_dup_mmap() to fail 2017-12-22 20:13:01 +01:00
s390 License cleanup: add SPDX license identifiers to some files 2017-11-02 10:04:46 -07:00
score License cleanup: add SPDX license identifier to uapi header files with no license 2017-11-02 11:19:54 +01:00
sh License cleanup: add SPDX license identifier to uapi header files with a license 2017-11-02 11:20:11 +01:00
sparc License cleanup: add SPDX license identifier to uapi header files with no license 2017-11-02 11:19:54 +01:00
tile Merge git://git.kernel.org/pub/scm/linux/kernel/git/cmetcalf/linux-tile 2017-11-03 10:36:43 -07:00
um arch, mm: Allow arch_dup_mmap() to fail 2017-12-22 20:13:01 +01:00
unicore32 arch, mm: Allow arch_dup_mmap() to fail 2017-12-22 20:13:01 +01:00
x86 x86/retpoline: Add LFENCE to the retpoline/RSB filling RSB macros 2018-01-15 00:32:55 +01:00
xtensa License cleanup: add SPDX license identifier to uapi header files with a license 2017-11-02 11:20:11 +01:00
.gitignore
Kconfig License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00