History

Merge tag 'arm64-upstream' of git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux

Pull arm64 updates from Will Deacon: "A sizeable pile of arm64 updates for 5.8. Summary below, but the big two features are support for Branch Target Identification and Clang's Shadow Call stack. The latter is currently arm64-only, but the high-level parts are all in core code so it could easily be adopted by other architectures pending toolchain support Branch Target Identification (BTI): - Support for ARMv8.5-BTI in both user- and kernel-space. This allows branch targets to limit the types of branch from which they can be called and additionally prevents branching to arbitrary code, although kernel support requires a very recent toolchain. - Function annotation via SYM_FUNC_START() so that assembly functions are wrapped with the relevant "landing pad" instructions. - BPF and vDSO updates to use the new instructions. - Addition of a new HWCAP and exposure of BTI capability to userspace via ID register emulation, along with ELF loader support for the BTI feature in .note.gnu.property. - Non-critical fixes to CFI unwind annotations in the sigreturn trampoline. Shadow Call Stack (SCS): - Support for Clang's Shadow Call Stack feature, which reserves platform register x18 to point at a separate stack for each task that holds only return addresses. This protects function return control flow from buffer overruns on the main stack. - Save/restore of x18 across problematic boundaries (user-mode, hypervisor, EFI, suspend, etc). - Core support for SCS, should other architectures want to use it too. - SCS overflow checking on context-switch as part of the existing stack limit check if CONFIG_SCHED_STACK_END_CHECK=y. CPU feature detection: - Removed numerous "SANITY CHECK" errors when running on a system with mismatched AArch32 support at EL1. This is primarily a concern for KVM, which disabled support for 32-bit guests on such a system. - Addition of new ID registers and fields as the architecture has been extended. Perf and PMU drivers: - Minor fixes and cleanups to system PMU drivers. Hardware errata: - Unify KVM workarounds for VHE and nVHE configurations. - Sort vendor errata entries in Kconfig. Secure Monitor Call Calling Convention (SMCCC): - Update to the latest specification from Arm (v1.2). - Allow PSCI code to query the SMCCC version. Software Delegated Exception Interface (SDEI): - Unexport a bunch of unused symbols. - Minor fixes to handling of firmware data. Pointer authentication: - Add support for dumping the kernel PAC mask in vmcoreinfo so that the stack can be unwound by tools such as kdump. - Simplification of key initialisation during CPU bringup. BPF backend: - Improve immediate generation for logical and add/sub instructions. vDSO: - Minor fixes to the linker flags for consistency with other architectures and support for LLVM's unwinder. - Clean up logic to initialise and map the vDSO into userspace. ACPI: - Work around for an ambiguity in the IORT specification relating to the "num_ids" field. - Support _DMA method for all named components rather than only PCIe root complexes. - Minor other IORT-related fixes. Miscellaneous: - Initialise debug traps early for KGDB and fix KDB cacheflushing deadlock. - Minor tweaks to early boot state (documentation update, set TEXT_OFFSET to 0x0, increase alignment of PE/COFF sections). - Refactoring and cleanup" * tag 'arm64-upstream' of git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux: (148 commits) KVM: arm64: Move __load_guest_stage2 to kvm_mmu.h KVM: arm64: Check advertised Stage-2 page size capability arm64/cpufeature: Add get_arm64_ftr_reg_nowarn() ACPI/IORT: Remove the unused __get_pci_rid() arm64/cpuinfo: Add ID_MMFR4_EL1 into the cpuinfo_arm64 context arm64/cpufeature: Add remaining feature bits in ID_AA64PFR1 register arm64/cpufeature: Add remaining feature bits in ID_AA64PFR0 register arm64/cpufeature: Add remaining feature bits in ID_AA64ISAR0 register arm64/cpufeature: Add remaining feature bits in ID_MMFR4 register arm64/cpufeature: Add remaining feature bits in ID_PFR0 register arm64/cpufeature: Introduce ID_MMFR5 CPU register arm64/cpufeature: Introduce ID_DFR1 CPU register arm64/cpufeature: Introduce ID_PFR2 CPU register arm64/cpufeature: Make doublelock a signed feature in ID_AA64DFR0 arm64/cpufeature: Drop TraceFilt feature exposure from ID_DFR0 register arm64/cpufeature: Add explicit ftr_id_isar0[] for ID_ISAR0 register arm64: mm: Add asid_gen_match() helper firmware: smccc: Fix missing prototype warning for arm_smccc_version_init arm64: vdso: Fix CFI directives in sigreturn trampoline arm64: vdso: Don't prefix sigreturn trampoline with a BTI C instruction ...

Linus Torvalds committed 6 years ago

Commit 533b2202 parents 3ee3723 082af5e159 files · +2559 −976Browse files

Showing the changes to include/uapi/linux (1 of 159 files). Show all

Unified · Split

include/uapi/linux/elf.h+11−0
@@ -36,6 +36,7 @@ typedef __s64 Elf64_Sxword; · 35 unmodified lines
36#define PT_LOPROC 0x7000000036#define PT_LOPROC 0x70000000
37#define PT_HIPROC 0x7fffffff37#define PT_HIPROC 0x7fffffff
38#define PT_GNU_EH_FRAME 0x6474e55038#define PT_GNU_EH_FRAME 0x6474e550
39#define PT_GNU_PROPERTY 0x6474e553
39 40
40#define PT_GNU_STACK (PT_LOOS + 0x474e551)41#define PT_GNU_STACK (PT_LOOS + 0x474e551)
41 42
@@ -367,6 +368,7 @@ typedef struct elf64_shdr { · 325 unmodified lines
367 * Notes used in ET_CORE. Architectures export some of the arch register sets368 * Notes used in ET_CORE. Architectures export some of the arch register sets
368 * using the corresponding note types via the PTRACE_GETREGSET and369 * using the corresponding note types via the PTRACE_GETREGSET and
369 * PTRACE_SETREGSET requests.370 * PTRACE_SETREGSET requests.
371 * The note name for all these is "LINUX".
370 */372 */
371#define NT_PRSTATUS 1373#define NT_PRSTATUS 1
372#define NT_PRFPREG 2374#define NT_PRFPREG 2
@@ -429,6 +431,9 @@ typedef struct elf64_shdr { · 56 unmodified lines
429#define NT_MIPS_FP_MODE 0x801 /* MIPS floating-point mode */431#define NT_MIPS_FP_MODE 0x801 /* MIPS floating-point mode */
430#define NT_MIPS_MSA 0x802 /* MIPS SIMD registers */432#define NT_MIPS_MSA 0x802 /* MIPS SIMD registers */
431 433
434/* Note types with note name "GNU" */
435#define NT_GNU_PROPERTY_TYPE_0 5
436
432/* Note header in a PT_NOTE section */437/* Note header in a PT_NOTE section */
433typedef struct elf32_note {438typedef struct elf32_note {
434 Elf32_Word n_namesz; /* Name size */439 Elf32_Word n_namesz; /* Name size */
@@ -443,4 +448,10 @@ typedef struct elf64_note { · 8 unmodified lines
443 Elf64_Word n_type; /* Content type */448 Elf64_Word n_type; /* Content type */
444} Elf64_Nhdr;449} Elf64_Nhdr;
445 450
451/* .note.gnu.property types for EM_AARCH64: */
452#define GNU_PROPERTY_AARCH64_FEATURE_1_AND 0xc0000000
453
454/* Bits for GNU_PROPERTY_AARCH64_FEATURE_1_BTI */
455#define GNU_PROPERTY_AARCH64_FEATURE_1_BTI (1U << 0)
456
446#endif /* _UAPI_LINUX_ELF_H */457#endif /* _UAPI_LINUX_ELF_H */