[GIT PULL] arm64 updates for 5.11

Catalin Marinas catalin.marinas at arm.com
Mon Dec 14 13:28:54 EST 2020


Hi Linus,

Please pull the 5.11 updates from the arm64 tree (I expect the in-kernel
MTE + KASAN changes to come via Andrew Morton). The "arm64: expose
FAR_EL1 tag bits in siginfo" patch is based on some preparatory signal
patches queued via Eric's tree but they appear in the diffstat here as
well. Nothing major otherwise: set_fs() removal, ZONE_DMA defaulting to
32-bit, CPPC FFH support using AMU counters, PMU driver for the ARM
DMC-620 memory controller, switch to vmapped shadow call stacks.

Since the git request-pull diffstat is all over the place (I had to
merge a KVM fix for 64K pages based on v5.9-rc4), I did a local merge
against v5.10 and re-generated the diffstat below.

Thanks.

The following changes since commit 9e5344e0ffc33f4fee899f98b6939a0682b1d9c3:

  arm64: mte: Fix typo in macro definition (2020-11-30 17:36:52 +0000)

are available in the Git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux tags/arm64-upstream

for you to fetch changes up to d889797530c66f699170233474eab3361471e808:

  Merge remote-tracking branch 'arm64/for-next/fixes' into for-next/core (2020-12-09 18:04:55 +0000)

----------------------------------------------------------------
arm64 updates for 5.11:

- Expose tag address bits in siginfo. The original arm64 ABI did not
  expose any of the bits 63:56 of a tagged address in siginfo. In the
  presence of user ASAN or MTE, this information may be useful. The
  implementation is generic to other architectures supporting tags (like
  SPARC ADI, subject to wiring up the arch code). The user will have to
  opt in via sigaction(SA_EXPOSE_TAGBITS) so that the extra bits, if
  available, become visible in si_addr.

- Default to 32-bit wide ZONE_DMA. Previously, ZONE_DMA was set to the
  lowest 1GB to cope with the Raspberry Pi 4 limitations, to the
  detriment of other platforms. With these changes, the kernel scans the
  Device Tree dma-ranges and the ACPI IORT information before deciding
  on a smaller ZONE_DMA.

- Strengthen READ_ONCE() to acquire when CONFIG_LTO=y. When building
  with LTO, there is an increased risk of the compiler converting an
  address dependency headed by a READ_ONCE() invocation into a control
  dependency and consequently allowing for harmful reordering by the
  CPU.

- Add CPPC FFH support using arm64 AMU counters.

- set_fs() removal on arm64. This renders the User Access Override (UAO)
  ARMv8 feature unnecessary.

- Perf updates: PMU driver for the ARM DMC-620 memory controller, sysfs
  identifier file for SMMUv3, stop event counters support for i.MX8MP,
  enable the perf events-based hard lockup detector.

- Reorganise the kernel VA space slightly so that 52-bit VA
  configurations can use more virtual address space.

- Improve the robustness of the arm64 memory offline event notifier.

- Pad the Image header to 64K following the EFI header definition
  updated recently to increase the section alignment to 64K.

- Support CONFIG_CMDLINE_EXTEND on arm64.

- Do not use tagged PC in the kernel (TCR_EL1.TBID1==1), freeing up 8
  bits for PtrAuth.

- Switch to vmapped shadow call stacks.

- Miscellaneous clean-ups.

----------------------------------------------------------------
Anshuman Khandual (4):
      arm64/smp: Drop the macro S(x,s)
      arm64/mm/hotplug: Register boot memory hot remove notifier earlier
      arm64/mm/hotplug: Enable MEM_OFFLINE event handling
      arm64/mm/hotplug: Ensure early memory sections are all online

Ard Biesheuvel (10):
      arm64: mm: extend linear region for 52-bit VA configurations
      arm64: mm: make vmemmap region a projection of the linear region
      arm64: mm: tidy up top of kernel VA space
      Documentation/arm64: fix RST layout of memory.rst
      arm64: mm: account for hotplug memory when randomizing the linear region
      arm64: mm: don't assume struct page is always 64 bytes
      arm64: omit [_text, _stext) from permanent kernel mapping
      arm64/head: avoid symbol names pointing into first 64 KB of kernel image
      arm64: head: tidy up the Image header definition
      arm64: mm: Set ZONE_DMA size based on early IORT scan

Catalin Marinas (9):
      arm64: Ignore any DMA offsets in the max_zone_phys() calculation
      arm64: Force NO_BLOCK_MAPPINGS if crashkernel reservation is required
      of: unittest: Fix build on architectures without CONFIG_OF_ADDRESS
      Merge branches 'for-next/kvm-build-fix', 'for-next/va-refactor', 'for-next/lto', 'for-next/mem-hotplug', 'for-next/cppc-ffh', 'for-next/pad-image-header', 'for-next/zone-dma-default-32-bit', 'for-next/signal-tag-bits' and 'for-next/cmdline-extended' into for-next/core
      Merge branch 'for-next/uaccess' into for-next/core
      Merge branch 'for-next/misc' into for-next/core
      Merge remote-tracking branch 'arm64/for-next/perf' into for-next/core
      Merge remote-tracking branch 'arm64/for-next/scs' into for-next/core
      Merge remote-tracking branch 'arm64/for-next/fixes' into for-next/core

Helge Deller (1):
      parisc: Drop parisc special case for __sighandler_t

Ionela Voinescu (4):
      arm64: wrap and generalise counter read functions
      arm64: split counter validation function
      arm64: implement CPPC FFH support using AMUs
      arm64: abort counter_read_on_cpu() when irqs_disabled()

Joakim Zhang (3):
      perf/imx_ddr: Add stop event counters support for i.MX8MP
      bindings: perf: imx-ddr: add compatible string
      perf/imx_ddr: Add system PMU identifier for userspace

John Garry (2):
      drivers/perf: hisi: Add identifier sysfs file
      perf/smmuv3: Support sysfs identifier file

Mark Rutland (19):
      arm64: uaccess: move uao_* alternatives to asm-uaccess.h
      arm64: consistently use reserved_pg_dir
      arm64: ensure ERET from kthread is illegal
      arm64: add C wrappers for SET_PSTATE_*()
      arm64: head.S: rename el2_setup -> init_kernel_el
      arm64: head.S: cleanup SCTLR_ELx initialization
      arm64: head.S: always initialize PSTATE
      arm64: sdei: move uaccess logic to arch/arm64/
      arm64: sdei: explicitly simulate PAN/UAO entry
      arm64: uaccess: rename privileged uaccess routines
      arm64: uaccess: simplify __copy_user_flushcache()
      arm64: uaccess: refactor __{get,put}_user
      arm64: uaccess: split user/kernel routines
      arm64: uaccess cleanup macro naming
      arm64: uaccess: remove set_fs()
      arm64: uaccess: remove addr_limit_user_check()
      arm64: uaccess: remove redundant PAN toggling
      arm64: uaccess: remove vestigal UAO support
      arm64: mark __system_matches_cap as __maybe_unused

Masami Hiramatsu (1):
      arm64: kprobes: Remove redundant kprobe_step_ctx

Nicolas Saenz Julienne (6):
      arm64: mm: Move reserve_crashkernel() into mem_init()
      arm64: mm: Move zone_dma_bits initialization into zone_sizes_init()
      of/address: Introduce of_dma_get_max_cpu_address()
      of: unittest: Add test for of_dma_get_max_cpu_address()
      arm64: mm: Set ZONE_DMA size based on devicetree's dma-ranges
      mm: Remove examples from enum zone_type comment

Peter Collingbourne (10):
      arm64: mte: optimize asynchronous tag check fault flag check
      parisc: start using signal-defs.h
      arch: move SA_* definitions to generic headers
      signal: clear non-uapi flag bits when passing/returning sa_flags
      arch: provide better documentation for the arch-specific SA_* flags
      signal: define the SA_UNSUPPORTED bit in sa_flags
      signal: define the SA_EXPOSE_TAGBITS bit in sa_flags
      arm64: expose FAR_EL1 tag bits in siginfo
      kasan: arm64: set TCR_EL1.TBID1 when enabled
      arm64: mte: fix prctl(PR_GET_TAGGED_ADDR_CTRL) if TCF0=NONE

Sami Tolvanen (2):
      scs: switch to vmapped shadow stacks
      arm64: scs: use vmapped IRQ and SDEI shadow stacks

Sudarshan Rajagopalan (1):
      arm64/mm: add fallback option to allocate virtually contiguous memory

Sumit Garg (1):
      arm64: Enable perf events based hard lockup detector

Tuan Phan (1):
      driver/perf: Add PMU driver for the ARM DMC-620 memory controller

Tyler Hicks (2):
      arm64: kaslr: Refactor early init command line parsing
      arm64: Extend the kernel command line from the bootloader

Wang Qing (1):
      perf: remove duplicate check on fwnode

Will Deacon (6):
      arm64: alternatives: Split up alternative.h
      arm64: cpufeatures: Add capability for LDAPR instruction
      arm64: alternatives: Remove READ_ONCE() usage during patch operation
      arm64: lto: Strengthen READ_ONCE() to acquire when CONFIG_LTO=y
      arm64: sdei: Push IS_ENABLED() checks down to callee functions
      arm64: Fix build failure when HARDLOCKUP_DETECTOR_PERF is enabled

Youling Tang (1):
      arm64: vmlinux.lds.S: Drop redundant *.init.rodata.*

 Documentation/arm64/kasan-offsets.sh               |   3 +-
 Documentation/arm64/memory.rst                     |  45 +-
 Documentation/arm64/tagged-pointers.rst            |  25 +-
 .../devicetree/bindings/perf/fsl-imx-ddr.yaml      |   3 +
 arch/alpha/include/uapi/asm/signal.h               |  14 -
 arch/arm/include/asm/signal.h                      |   2 +
 arch/arm/include/uapi/asm/signal.h                 |  27 +-
 arch/arm64/Kconfig                                 |  70 +-
 .../asm/{alternative.h => alternative-macros.h}    |  93 +--
 arch/arm64/include/asm/alternative.h               | 267 +-------
 arch/arm64/include/asm/asm-uaccess.h               |  35 +-
 arch/arm64/include/asm/cpucaps.h                   |   5 +-
 arch/arm64/include/asm/cpufeature.h                |  23 +-
 arch/arm64/include/asm/exception.h                 |   2 +-
 arch/arm64/include/asm/exec.h                      |   1 -
 arch/arm64/include/asm/futex.h                     |   8 +-
 arch/arm64/include/asm/insn.h                      |   3 +-
 arch/arm64/include/asm/kernel-pgtable.h            |   6 -
 arch/arm64/include/asm/kprobes.h                   |   7 -
 arch/arm64/include/asm/memory.h                    |  22 +-
 arch/arm64/include/asm/mmu_context.h               |   6 +-
 arch/arm64/include/asm/pgtable-hwdef.h             |   1 +
 arch/arm64/include/asm/pgtable.h                   |   3 +-
 arch/arm64/include/asm/processor.h                 |   4 +-
 arch/arm64/include/asm/ptrace.h                    |   8 +-
 arch/arm64/include/asm/rwonce.h                    |  73 ++
 arch/arm64/include/asm/signal.h                    |  25 +
 arch/arm64/include/asm/sysreg.h                    |  22 +-
 arch/arm64/include/asm/system_misc.h               |   2 +-
 arch/arm64/include/asm/thread_info.h               |  10 +-
 arch/arm64/include/asm/topology.h                  |   4 +-
 arch/arm64/include/asm/traps.h                     |   6 +-
 arch/arm64/include/asm/uaccess.h                   | 178 +++--
 arch/arm64/kernel/Makefile                         |   1 -
 arch/arm64/kernel/alternative.c                    |   7 +-
 arch/arm64/kernel/armv8_deprecated.c               |   4 +-
 arch/arm64/kernel/asm-offsets.c                    |   3 +-
 arch/arm64/kernel/cpufeature.c                     |  59 +-
 arch/arm64/kernel/debug-monitors.c                 |   5 +-
 arch/arm64/kernel/efi-header.S                     |  84 ++-
 arch/arm64/kernel/entry-common.c                   |   2 -
 arch/arm64/kernel/entry.S                          |  31 +-
 arch/arm64/kernel/head.S                           |  70 +-
 arch/arm64/kernel/irq.c                            |  21 +
 arch/arm64/kernel/kaslr.c                          |  26 +-
 arch/arm64/kernel/mte.c                            |   3 +-
 arch/arm64/kernel/perf_event.c                     |  41 +-
 arch/arm64/kernel/probes/kprobes.c                 |  53 +-
 arch/arm64/kernel/process.c                        |  29 +-
 arch/arm64/kernel/proton-pack.c                    |   5 +-
 arch/arm64/kernel/ptrace.c                         |   7 +-
 arch/arm64/kernel/scs.c                            |  16 -
 arch/arm64/kernel/sdei.c                           | 119 +++-
 arch/arm64/kernel/setup.c                          |   6 +-
 arch/arm64/kernel/signal.c                         |   3 -
 arch/arm64/kernel/sleep.S                          |   2 +-
 arch/arm64/kernel/smp.c                            |  15 +-
 arch/arm64/kernel/suspend.c                        |   1 -
 arch/arm64/kernel/sys_compat.c                     |   5 +-
 arch/arm64/kernel/syscall.c                        |   2 +-
 arch/arm64/kernel/topology.c                       | 136 +++-
 arch/arm64/kernel/traps.c                          |  29 +-
 arch/arm64/kernel/vdso/Makefile                    |   2 +-
 arch/arm64/kernel/vdso32/Makefile                  |   2 +-
 arch/arm64/kernel/vmlinux.lds.S                    |  12 +-
 arch/arm64/lib/clear_user.S                        |   8 +-
 arch/arm64/lib/copy_from_user.S                    |   8 +-
 arch/arm64/lib/copy_in_user.S                      |  16 +-
 arch/arm64/lib/copy_to_user.S                      |   8 +-
 arch/arm64/lib/mte.S                               |   6 +-
 arch/arm64/lib/uaccess_flushcache.c                |   4 +-
 arch/arm64/mm/fault.c                              |  88 +--
 arch/arm64/mm/init.c                               |  56 +-
 arch/arm64/mm/mmu.c                                | 149 +++-
 arch/arm64/mm/proc.S                               |   6 +-
 arch/h8300/include/uapi/asm/signal.h               |  24 -
 arch/ia64/include/uapi/asm/signal.h                |  24 -
 arch/m68k/include/uapi/asm/signal.h                |  24 -
 arch/mips/include/uapi/asm/signal.h                |  12 -
 arch/parisc/include/asm/signal.h                   |   2 +
 arch/parisc/include/uapi/asm/signal.h              |  34 +-
 arch/powerpc/include/uapi/asm/signal.h             |  24 -
 arch/s390/include/uapi/asm/signal.h                |  24 -
 arch/sparc/include/uapi/asm/signal.h               |   4 +-
 arch/x86/include/uapi/asm/signal.h                 |  24 -
 arch/x86/kernel/signal_compat.c                    |   7 -
 arch/xtensa/include/uapi/asm/signal.h              |  24 -
 drivers/acpi/arm64/iort.c                          |  55 ++
 drivers/firmware/arm_sdei.c                        |  14 -
 drivers/of/address.c                               |  42 ++
 drivers/of/unittest.c                              |  21 +
 drivers/perf/Kconfig                               |   7 +
 drivers/perf/Makefile                              |   1 +
 drivers/perf/arm_dmc620_pmu.c                      | 748 +++++++++++++++++++++
 drivers/perf/arm_dsu_pmu.c                         |   3 -
 drivers/perf/arm_pmu.c                             |   5 +
 drivers/perf/arm_smmuv3_pmu.c                      |  39 ++
 drivers/perf/fsl_imx8_ddr_perf.c                   | 135 +++-
 drivers/perf/hisilicon/hisi_uncore_ddrc_pmu.c      |  16 +
 drivers/perf/hisilicon/hisi_uncore_hha_pmu.c       |  16 +
 drivers/perf/hisilicon/hisi_uncore_l3c_pmu.c       |  16 +
 drivers/perf/hisilicon/hisi_uncore_pmu.c           |  10 +
 drivers/perf/hisilicon/hisi_uncore_pmu.h           |   7 +
 include/linux/acpi_iort.h                          |   4 +
 include/linux/mmzone.h                             |  20 -
 include/linux/of.h                                 |   7 +
 include/linux/perf/arm_pmu.h                       |   2 +
 include/linux/scs.h                                |  16 +-
 include/linux/signal.h                             |  14 +
 include/linux/signal_types.h                       |  12 +
 include/uapi/asm-generic/signal-defs.h             |  63 ++
 include/uapi/asm-generic/signal.h                  |  29 -
 kernel/scs.c                                       |  71 +-
 kernel/signal.c                                    |  40 ++
 114 files changed, 2392 insertions(+), 1401 deletions(-)



More information about the linux-arm-kernel mailing list