[GIT PULL] x86/asm changes for v5.5

From: Ingo Molnar
Date: Mon Nov 25 2019 - 11:08:30 EST


Linus,

Please pull the latest x86-asm-for-linus git tree from:

git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git x86-asm-for-linus

# HEAD: f01ec4fca8207e31b59a010c3de679c833f3a877 Merge branch 'x86/build' into x86/asm, to pick up completed topic branch

The main changes in this cycle were:

- Cross-arch changes to move the linker sections for NOTES and
EXCEPTION_TABLE into the RO_DATA area, where they belong on most
architectures. (Kees Cook)

- Switch the x86 linker fill byte from x90 (NOP) to 0xcc (INT3), to trap
jumps into the middle of those padding areas instead of sliding execution.
(Kees Cook)

- A thorough cleanup of symbol definitions within x86 assembler code.
The rather randomly named macros got streamlined around a (hopefully)
straightforward naming scheme:

SYM_START(name, linkage, align...)
SYM_END(name, sym_type)

SYM_FUNC_START(name)
SYM_FUNC_END(name)

SYM_CODE_START(name)
SYM_CODE_END(name)

SYM_DATA_START(name)
SYM_DATA_END(name)

etc. - with about three times of these basic primitives with some
label, local symbol or attribute variant, expressed via
postfixes.

No change in functionality intended.

(Jiri Slaby)

- Misc other changes, cleanups and smaller fixes.

Unfortunately the symbol rework will generate conflicts with pending
changes to assembly files.

Thanks,

Ingo

------------------>
Borislav Petkov (1):
x86/ftrace: Get rid of function_hook

Bruce Ashfield (1):
arch/x86/boot: Use prefix map to avoid embedded paths

Jiri Slaby (31):
x86/asm: Reorder early variables
x86/asm: Make boot_gdt_descr local
x86/asm: Make more symbols local
linkage: Introduce new macros for assembler symbols
x86/asm/suspend: Use SYM_DATA for data
x86/asm: Annotate relocate_kernel_{32,64}.c
x86/asm/entry: Annotate THUNKs
x86/asm: Annotate local pseudo-functions
x86/asm/crypto: Annotate local functions
x86/boot: Annotate local functions
x86/uaccess: Annotate local function
x86/asm: Annotate aliases
x86/asm/entry: Annotate interrupt symbols properly
x86/asm/head: Annotate data appropriately
x86/boot: Annotate data appropriately
x86/um: Annotate data appropriately
xen/pvh: Annotate data appropriately
x86/asm/purgatory: Start using annotations
x86/asm: Do not annotate functions with GLOBAL
x86/asm: Use SYM_INNER_LABEL instead of GLOBAL
x86/asm/realmode: Use SYM_DATA_* instead of GLOBAL
x86/asm: Remove the last GLOBAL user and remove the macro
x86/asm: Make some functions local
x86/asm/ftrace: Mark function_hook as function
x86/asm/64: Add ENDs to some functions and relabel with SYM_CODE_*
x86/asm/64: Change all ENTRY+END to SYM_CODE_*
x86/asm: Change all ENTRY+ENDPROC to SYM_FUNC_*
x86/asm/32: Add ENDs to some functions and relabel with SYM_CODE_*
x86/asm/32: Change all ENTRY+END to SYM_CODE_*
x86/asm/32: Change all ENTRY+ENDPROC to SYM_FUNC_*
x86/asm: Replace WEAK uses by SYM_INNER_LABEL_ALIGN

Kees Cook (30):
powerpc: Rename "notes" PT_NOTE to "note"
powerpc: Remove PT_NOTE workaround
powerpc: Rename PT_LOAD identifier "kernel" to "text"
alpha: Rename PT_LOAD identifier "kernel" to "text"
ia64: Rename PT_LOAD identifier "code" to "text"
s390: Move RO_DATA into "text" PT_LOAD Program Header
x86/vmlinux: Restore "text" Program Header with dummy section
vmlinux.lds.h: Provide EMIT_PT_NOTE to indicate export of .notes
vmlinux.lds.h: Move Program Header restoration into NOTES macro
vmlinux.lds.h: Move NOTES into RO_DATA
vmlinux.lds.h: Replace RODATA with RO_DATA
vmlinux.lds.h: Replace RO_DATA_SECTION with RO_DATA
vmlinux.lds.h: Replace RW_DATA_SECTION with RW_DATA
vmlinux.lds.h: Allow EXCEPTION_TABLE to live in RO_DATA
x86/vmlinux: Actually use _etext for the end of the text segment
x86/vmlinux: Move EXCEPTION_TABLE to RO_DATA segment
alpha: Move EXCEPTION_TABLE to RO_DATA segment
arm64: Move EXCEPTION_TABLE to RO_DATA segment
c6x: Move EXCEPTION_TABLE to RO_DATA segment
h8300: Move EXCEPTION_TABLE to RO_DATA segment
ia64: Move EXCEPTION_TABLE to RO_DATA segment
microblaze: Move EXCEPTION_TABLE to RO_DATA segment
parisc: Move EXCEPTION_TABLE to RO_DATA segment
powerpc: Move EXCEPTION_TABLE to RO_DATA segment
xtensa: Move EXCEPTION_TABLE to RO_DATA segment
x86/mm: Remove redundant address-of operators on addresses
x86/mm: Report which part of kernel image is freed
x86/mm: Report actual image regions in /proc/iomem
x86/vmlinux: Use INT3 instead of NOP for linker fill bytes
m68k: Convert missed RODATA to RO_DATA

Masahiro Yamada (1):
x86/build/vdso: Remove meaningless CFLAGS_REMOVE_*.o

Peter Zijlstra (1):
ubsan, x86: Annotate and allow __ubsan_handle_shift_out_of_bounds() in uaccess regions

Thomas Gleixner (2):
x86/entry/32: Remove unused resume_userspace label
x86/entry/64: Remove pointless jump in paranoid_exit


Documentation/asm-annotations.rst | 216 +++++++++++++++++++++++
Documentation/index.rst | 8 +
arch/alpha/kernel/vmlinux.lds.S | 18 +-
arch/arc/kernel/vmlinux.lds.S | 6 +-
arch/arm/kernel/vmlinux-xip.lds.S | 4 +-
arch/arm/kernel/vmlinux.lds.S | 4 +-
arch/arm64/kernel/vmlinux.lds.S | 10 +-
arch/c6x/kernel/vmlinux.lds.S | 8 +-
arch/csky/kernel/vmlinux.lds.S | 5 +-
arch/h8300/kernel/vmlinux.lds.S | 9 +-
arch/hexagon/kernel/vmlinux.lds.S | 5 +-
arch/ia64/kernel/vmlinux.lds.S | 20 +--
arch/m68k/kernel/vmlinux-nommu.lds | 4 +-
arch/m68k/kernel/vmlinux-std.lds | 4 +-
arch/m68k/kernel/vmlinux-sun3.lds | 4 +-
arch/microblaze/kernel/vmlinux.lds.S | 8 +-
arch/mips/kernel/vmlinux.lds.S | 15 +-
arch/nds32/kernel/vmlinux.lds.S | 5 +-
arch/nios2/kernel/vmlinux.lds.S | 5 +-
arch/openrisc/kernel/vmlinux.lds.S | 7 +-
arch/parisc/kernel/vmlinux.lds.S | 11 +-
arch/powerpc/kernel/vmlinux.lds.S | 37 +---
arch/riscv/kernel/vmlinux.lds.S | 5 +-
arch/s390/kernel/vmlinux.lds.S | 12 +-
arch/sh/kernel/vmlinux.lds.S | 3 +-
arch/sparc/kernel/vmlinux.lds.S | 3 +-
arch/um/include/asm/common.lds.S | 3 +-
arch/unicore32/kernel/vmlinux.lds.S | 5 +-
arch/x86/boot/Makefile | 1 +
arch/x86/boot/compressed/Makefile | 1 +
arch/x86/boot/compressed/efi_stub_32.S | 4 +-
arch/x86/boot/compressed/efi_thunk_64.S | 33 ++--
arch/x86/boot/compressed/head_32.S | 15 +-
arch/x86/boot/compressed/head_64.S | 63 +++----
arch/x86/boot/compressed/mem_encrypt.S | 11 +-
arch/x86/boot/copy.S | 16 +-
arch/x86/boot/pmjump.S | 10 +-
arch/x86/crypto/aegis128-aesni-asm.S | 36 ++--
arch/x86/crypto/aes_ctrby8_avx-x86_64.S | 12 +-
arch/x86/crypto/aesni-intel_asm.S | 114 ++++++------
arch/x86/crypto/aesni-intel_avx-x86_64.S | 32 ++--
arch/x86/crypto/blowfish-x86_64-asm_64.S | 16 +-
arch/x86/crypto/camellia-aesni-avx-asm_64.S | 44 ++---
arch/x86/crypto/camellia-aesni-avx2-asm_64.S | 44 ++---
arch/x86/crypto/camellia-x86_64-asm_64.S | 16 +-
arch/x86/crypto/cast5-avx-x86_64-asm_64.S | 24 +--
arch/x86/crypto/cast6-avx-x86_64-asm_64.S | 32 ++--
arch/x86/crypto/chacha-avx2-x86_64.S | 12 +-
arch/x86/crypto/chacha-avx512vl-x86_64.S | 12 +-
arch/x86/crypto/chacha-ssse3-x86_64.S | 16 +-
arch/x86/crypto/crc32-pclmul_asm.S | 4 +-
arch/x86/crypto/crc32c-pcl-intel-asm_64.S | 4 +-
arch/x86/crypto/crct10dif-pcl-asm_64.S | 4 +-
arch/x86/crypto/des3_ede-asm_64.S | 8 +-
arch/x86/crypto/ghash-clmulni-intel_asm.S | 12 +-
arch/x86/crypto/nh-avx2-x86_64.S | 4 +-
arch/x86/crypto/nh-sse2-x86_64.S | 4 +-
arch/x86/crypto/poly1305-avx2-x86_64.S | 4 +-
arch/x86/crypto/poly1305-sse2-x86_64.S | 8 +-
arch/x86/crypto/serpent-avx-x86_64-asm_64.S | 32 ++--
arch/x86/crypto/serpent-avx2-asm_64.S | 32 ++--
arch/x86/crypto/serpent-sse2-i586-asm_32.S | 8 +-
arch/x86/crypto/serpent-sse2-x86_64-asm_64.S | 8 +-
arch/x86/crypto/sha1_avx2_x86_64_asm.S | 4 +-
arch/x86/crypto/sha1_ni_asm.S | 4 +-
arch/x86/crypto/sha1_ssse3_asm.S | 4 +-
arch/x86/crypto/sha256-avx-asm.S | 4 +-
arch/x86/crypto/sha256-avx2-asm.S | 4 +-
arch/x86/crypto/sha256-ssse3-asm.S | 4 +-
arch/x86/crypto/sha256_ni_asm.S | 4 +-
arch/x86/crypto/sha512-avx-asm.S | 4 +-
arch/x86/crypto/sha512-avx2-asm.S | 4 +-
arch/x86/crypto/sha512-ssse3-asm.S | 4 +-
arch/x86/crypto/twofish-avx-x86_64-asm_64.S | 32 ++--
arch/x86/crypto/twofish-i586-asm_32.S | 8 +-
arch/x86/crypto/twofish-x86_64-asm_64-3way.S | 8 +-
arch/x86/crypto/twofish-x86_64-asm_64.S | 8 +-
arch/x86/entry/entry_32.S | 162 ++++++++---------
arch/x86/entry/entry_64.S | 112 ++++++------
arch/x86/entry/entry_64_compat.S | 16 +-
arch/x86/entry/thunk_32.S | 4 +-
arch/x86/entry/thunk_64.S | 7 +-
arch/x86/entry/vdso/Makefile | 2 -
arch/x86/entry/vdso/vdso32/system_call.S | 2 +-
arch/x86/include/asm/linkage.h | 4 -
arch/x86/include/asm/processor.h | 2 +-
arch/x86/include/asm/sections.h | 1 -
arch/x86/kernel/acpi/wakeup_32.S | 9 +-
arch/x86/kernel/acpi/wakeup_64.S | 10 +-
arch/x86/kernel/ftrace_32.S | 23 ++-
arch/x86/kernel/ftrace_64.S | 47 +++--
arch/x86/kernel/head_32.S | 62 +++----
arch/x86/kernel/head_64.S | 113 ++++++------
arch/x86/kernel/irqflags.S | 8 +-
arch/x86/kernel/relocate_kernel_32.S | 13 +-
arch/x86/kernel/relocate_kernel_64.S | 13 +-
arch/x86/kernel/setup.c | 12 +-
arch/x86/kernel/verify_cpu.S | 4 +-
arch/x86/kernel/vmlinux.lds.S | 16 +-
arch/x86/kvm/vmx/vmenter.S | 12 +-
arch/x86/lib/atomic64_386_32.S | 4 +-
arch/x86/lib/atomic64_cx8_32.S | 32 ++--
arch/x86/lib/checksum_32.S | 16 +-
arch/x86/lib/clear_page_64.S | 12 +-
arch/x86/lib/cmpxchg16b_emu.S | 4 +-
arch/x86/lib/cmpxchg8b_emu.S | 4 +-
arch/x86/lib/copy_page_64.S | 8 +-
arch/x86/lib/copy_user_64.S | 21 ++-
arch/x86/lib/csum-copy_64.S | 4 +-
arch/x86/lib/getuser.S | 22 +--
arch/x86/lib/hweight.S | 8 +-
arch/x86/lib/iomap_copy_64.S | 4 +-
arch/x86/lib/memcpy_64.S | 20 +--
arch/x86/lib/memmove_64.S | 8 +-
arch/x86/lib/memset_64.S | 16 +-
arch/x86/lib/msr-reg.S | 8 +-
arch/x86/lib/putuser.S | 19 +-
arch/x86/lib/retpoline.S | 4 +-
arch/x86/math-emu/div_Xsig.S | 4 +-
arch/x86/math-emu/div_small.S | 4 +-
arch/x86/math-emu/mul_Xsig.S | 12 +-
arch/x86/math-emu/polynom_Xsig.S | 4 +-
arch/x86/math-emu/reg_norm.S | 8 +-
arch/x86/math-emu/reg_round.S | 4 +-
arch/x86/math-emu/reg_u_add.S | 4 +-
arch/x86/math-emu/reg_u_div.S | 4 +-
arch/x86/math-emu/reg_u_mul.S | 4 +-
arch/x86/math-emu/reg_u_sub.S | 4 +-
arch/x86/math-emu/round_Xsig.S | 8 +-
arch/x86/math-emu/shr_Xsig.S | 4 +-
arch/x86/math-emu/wm_shrx.S | 8 +-
arch/x86/math-emu/wm_sqrt.S | 4 +-
arch/x86/mm/init.c | 8 +-
arch/x86/mm/init_64.c | 16 +-
arch/x86/mm/mem_encrypt_boot.S | 8 +-
arch/x86/mm/pti.c | 2 +-
arch/x86/platform/efi/efi_stub_32.S | 4 +-
arch/x86/platform/efi/efi_stub_64.S | 4 +-
arch/x86/platform/efi/efi_thunk_64.S | 16 +-
arch/x86/platform/olpc/xo1-wakeup.S | 3 +-
arch/x86/platform/pvh/head.S | 18 +-
arch/x86/power/hibernate_asm_32.S | 14 +-
arch/x86/power/hibernate_asm_64.S | 14 +-
arch/x86/purgatory/entry64.S | 24 +--
arch/x86/purgatory/setup-x86_64.S | 14 +-
arch/x86/purgatory/stack.S | 7 +-
arch/x86/realmode/rm/header.S | 8 +-
arch/x86/realmode/rm/reboot.S | 13 +-
arch/x86/realmode/rm/stack.S | 14 +-
arch/x86/realmode/rm/trampoline_32.S | 16 +-
arch/x86/realmode/rm/trampoline_64.S | 29 ++--
arch/x86/realmode/rm/trampoline_common.S | 2 +-
arch/x86/realmode/rm/wakeup_asm.S | 17 +-
arch/x86/realmode/rmpiggy.S | 10 +-
arch/x86/um/vdso/vdso.S | 6 +-
arch/x86/xen/xen-asm.S | 28 +--
arch/x86/xen/xen-asm_32.S | 7 +-
arch/x86/xen/xen-asm_64.S | 34 ++--
arch/x86/xen/xen-head.S | 8 +-
arch/xtensa/kernel/vmlinux.lds.S | 8 +-
include/asm-generic/vmlinux.lds.h | 53 ++++--
include/linux/linkage.h | 249 ++++++++++++++++++++++++++-
lib/ubsan.c | 5 +-
tools/objtool/check.c | 1 +
164 files changed, 1654 insertions(+), 1186 deletions(-)
create mode 100644 Documentation/asm-annotations.rst