Commit c45647f9 authored by Linus Torvalds's avatar Linus Torvalds
Browse files

Merge tag 'for-linus' of git://git.armlinux.org.uk/~rmk/linux

Pull ARM updates from Russell King:

 - Rework phys/virt translation

 - Add KASan support

 - Move DT out of linear map region

 - Use more PC-relative addressing in assembly

 - Remove FP emulation handling while in kernel mode

 - Link with '-z norelro'

 - remove old check for GCC <= 4.2 in ARM unwinder code

 - disable big endian if using clang's linker

* tag 'for-linus' of git://git.armlinux.org.uk/~rmk/linux-arm: (46 commits)
  ARM: 9027/1: head.S: explicitly map DT even if it lives in the first physical section
  ARM: 9038/1: Link with '-z norelro'
  ARM: 9037/1: uncompress: Add OF_DT_MAGIC macro
  ARM: 9036/1: uncompress: Fix dbgadtb size parameter name
  ARM: 9035/1: uncompress: Add be32tocpu macro
  ARM: 9033/1: arm/smp: Drop the macro S(x,s)
  ARM: 9032/1: arm/mm: Convert PUD level pgtable helper macros into functions
  ARM: 9031/1: hyp-stub: remove unused .L__boot_cpu_mode_offset symbol
  ARM: 9044/1: vfp: use undef hook for VFP support detection
  ARM: 9034/1: __div64_32(): straighten up inline asm constraints
  ARM: 9030/1: entry: omit FP emulation for UND exceptions taken in kernel mode
  ARM: 9029/1: Make iwmmxt.S support Clang's integrated assembler
  ARM: 9028/1: disable KASAN in call stack capturing routines
  ARM: 9026/1: unwind: remove old check for GCC <= 4.2
  ARM: 9025/1: Kconfig: CPU_BIG_ENDIAN depends on !LD_IS_LLD
  ARM: 9024/1: Drop useless cast of "u64" to "long long"
  ARM: 9023/1: Spelling s/mmeory/memory/
  ARM: 9022/1: Change arch/arm/lib/mem*.S to use WEAK instead of .weak
  ARM: kvm: replace open coded VA->PA calculations with adr_l call
  ARM: head.S: use PC relative insn sequence to calculate PHYS_OFFSET
  ...
parents d8355e74 ecbbb887
Loading
Loading
Loading
Loading
+11 −1
Original line number Diff line number Diff line
@@ -45,9 +45,14 @@ fffe8000 fffeffff DTCM mapping area for platforms with
fffe0000	fffe7fff	ITCM mapping area for platforms with
				ITCM mounted inside the CPU.

ffc00000	ffefffff	Fixmap mapping region.  Addresses provided
ffc80000	ffefffff	Fixmap mapping region.  Addresses provided
				by fix_to_virt() will be located here.

ffc00000	ffc7ffff	Guard region

ff800000	ffbfffff	Permanent, fixed read-only mapping of the
				firmware provided DT blob

fee00000	feffffff	Mapping of PCI I/O space. This is a static
				mapping within the vmalloc space.

@@ -72,6 +77,11 @@ MODULES_VADDR MODULES_END-1 Kernel module space
				Kernel modules inserted via insmod are
				placed here using dynamic mappings.

TASK_SIZE	MODULES_VADDR-1	KASAn shadow memory when KASan is in use.
				The range from MODULES_VADDR to the top
				of the memory is shadowed here with 1 bit
				per byte of memory.

00001000	TASK_SIZE-1	User space mappings
				Per-thread mappings are placed here via
				the mmap() system call.
+2 −2
Original line number Diff line number Diff line
@@ -18,8 +18,8 @@ out-of-bounds accesses for global variables is only supported since Clang 11.

Tag-based KASAN is only supported in Clang.

Currently generic KASAN is supported for the x86_64, arm64, xtensa, s390 and
riscv architectures, and tag-based KASAN is supported only for arm64.
Currently generic KASAN is supported for the x86_64, arm, arm64, xtensa, s390
and riscv architectures, and tag-based KASAN is supported only for arm64.

Usage
-----
+1 −1
Original line number Diff line number Diff line
@@ -8,7 +8,7 @@
    -----------------------
    |       alpha: | TODO |
    |         arc: | TODO |
    |         arm: | TODO |
    |         arm: |  ok  |
    |       arm64: |  ok  |
    |         c6x: | TODO |
    |        csky: | TODO |
+11 −1
Original line number Diff line number Diff line
@@ -68,6 +68,7 @@ config ARM
	select HAVE_ARCH_BITREVERSE if (CPU_32v7M || CPU_32v7) && !CPU_32v6
	select HAVE_ARCH_JUMP_LABEL if !XIP_KERNEL && !CPU_ENDIAN_BE32 && MMU
	select HAVE_ARCH_KGDB if !CPU_ENDIAN_BE32 && MMU
	select HAVE_ARCH_KASAN if MMU && !XIP_KERNEL
	select HAVE_ARCH_MMAP_RND_BITS if MMU
	select HAVE_ARCH_PFN_VALID
	select HAVE_ARCH_SECCOMP
@@ -245,7 +246,7 @@ config ARM_PATCH_PHYS_VIRT
	  kernel in system memory.

	  This can only be used with non-XIP MMU kernels where the base
	  of physical memory is at a 16MB boundary.
	  of physical memory is at a 2 MiB boundary.

	  Only disable this option if you know that you do not require
	  this feature (eg, building a kernel for a single machine) and
@@ -1298,6 +1299,15 @@ config PAGE_OFFSET
	default 0xB0000000 if VMSPLIT_3G_OPT
	default 0xC0000000

config KASAN_SHADOW_OFFSET
	hex
	depends on KASAN
	default 0x1f000000 if PAGE_OFFSET=0x40000000
	default 0x5f000000 if PAGE_OFFSET=0x80000000
	default 0x9f000000 if PAGE_OFFSET=0xC0000000
	default 0x8f000000 if PAGE_OFFSET=0xB0000000
	default 0xffffffff

config NR_CPUS
	int "Maximum number of CPUs (2-32)"
	range 2 32
+1 −1
Original line number Diff line number Diff line
@@ -10,7 +10,7 @@
#
# Copyright (C) 1995-2001 by Russell King

LDFLAGS_vmlinux	:= --no-undefined -X --pic-veneer
LDFLAGS_vmlinux	:= --no-undefined -X --pic-veneer -z norelro
ifeq ($(CONFIG_CPU_ENDIAN_BE8),y)
LDFLAGS_vmlinux	+= --be8
KBUILD_LDFLAGS_MODULE	+= --be8
Loading