mbox series

[GIT,PULL] arm64 updates for 6.4

Message ID 20230425093218.GA7967@willie-the-truck
State New
Headers show
Series [GIT,PULL] arm64 updates for 6.4 | expand

Pull-request

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

Message

Will Deacon April 25, 2023, 9:32 a.m. UTC
Hi Linus,

Please pull this round of arm64 updates for 6.4. I've summarised the
topic branches in the tag commit, but the bulk of the code changes here
stem from a rework of the PMU driver so that PMUv3 hardware can be
driven on both 32-bit and 64-bit CPUs.

From a logistical perspective, we've got a couple of interesting
cross-tree interations:

 (1) We have a shared tracing branch with Steve (pulled from his
     'trace-direct-v6.3-rc3' tag) so that the arm64 support for direct
     calls can be implemented on top. This then ends up conflicting
     with a fix that landed after -rc3 in 2a2d8c51defb ("ftrace: Fix
     issue that 'direct->addr' not restored in modify_ftrace_direct()").

     The code changed by the fix is removed by the tag from Steve in
     8788ca164eba ("ftrace: Remove the legacy _ftrace_direct API") and
     the only part that needs fixing up is the definition of 'MULTI_FLAGS'
     to use 'FTRACE_OPS_FL_SAVE_ARGS' instead of 'FTRACE_OPS_FL_SAVE_REGS'.

 (2) Moving the PMUv3 driver out into drivers/perf/ triggered a latent
     probe-ordering bug with (p)KVM, so we're carrying a fix for that
     here with Marc's Ack.

Cheers,

Will

--->8

The following changes since commit e8d018dd0257f744ca50a729e3d042cf2ec9da65:

  Linux 6.3-rc3 (2023-03-19 13:27:55 -0700)

are available in the Git repository at:

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

for you to fetch changes up to eeb3557cc188e42ae7f7bef2d6dc5bf0e078412e:

  Merge branch 'for-next/sysreg' into for-next/core (2023-04-20 18:03:07 +0100)

----------------------------------------------------------------
arm64 updates for 6.4

ACPI:
	* Improve error reporting when failing to manage SDEI on AGDI device
	  removal

Assembly routines:
	* Improve register constraints so that the compiler can make use of
	  the zero register instead of moving an immediate #0 into a GPR

	* Allow the compiler to allocate the registers used for CAS
	  instructions

CPU features and system registers:
	* Cleanups to the way in which CPU features are identified from the
	  ID register fields

	* Extend system register definition generation to handle Enum types
	  when defining shared register fields

	* Generate definitions for new _EL2 registers and add new fields
	  for ID_AA64PFR1_EL1

	* Allow SVE to be disabled separately from SME on the kernel
	  command-line

Tracing:
	* Support for "direct calls" in ftrace, which enables BPF tracing
	  for arm64

Kdump:
	* Don't bother unmapping the crashkernel from the linear mapping,
	  which then allows us to use huge (block) mappings and reduce
	  TLB pressure when a crashkernel is loaded.

Memory management:
	* Try again to remove data cache invalidation from the coherent DMA
	  allocation path

	* Simplify the fixmap code by mapping at page granularity

	* Allow the kfence pool to be allocated early, preventing the rest
	  of the linear mapping from being forced to page granularity

Perf and PMU:
	* Move CPU PMU code out to drivers/perf/ where it can be reused
	  by the 32-bit ARM architecture when running on ARMv8 CPUs

	* Fix race between CPU PMU probing and pKVM host de-privilege

	* Add support for Apple M2 CPU PMU

	* Adjust the generic PERF_COUNT_HW_BRANCH_INSTRUCTIONS event
	  dynamically, depending on what the CPU actually supports

	* Minor fixes and cleanups to system PMU drivers

Stack tracing:
	* Use the XPACLRI instruction to strip PAC from pointers, rather
	  than rolling our own function in C

	* Remove redundant PAC removal for toolchains that handle this in
	  their builtins

	* Make backtracing more resilient in the face of instrumentation

Miscellaneous:
	* Fix single-step with KGDB

	* Remove harmless warning when 'nokaslr' is passed on the kernel
	  command-line

	* Minor fixes and cleanups across the board

----------------------------------------------------------------
Baoquan He (3):
      arm64: kdump : take off the protection on crashkernel memory region
      arm64: kdump: do not map crashkernel region specifically
      arm64: kdump: defer the crashkernel reservation for platforms with no DMA memory zones

Besar Wicaksono (1):
      perf: arm_cspmu: Fix variable dereference warning

Dan Carpenter (1):
      arm64: delete dead code in this_cpu_set_vectors()

Dongxu Sun (3):
      arm64/signal: Use system_supports_tpidr2() to check TPIDR2
      arm64/signal: Alloc tpidr2 sigframe after checking system_supports_tpidr2()
      arm64/sme: Fix some comments of ARM SME

Florent Revest (8):
      ftrace: Let unregister_ftrace_direct_multi() call ftrace_free_filter()
      ftrace: Replace uses of _ftrace_direct APIs with _ftrace_direct_multi
      ftrace: Remove the legacy _ftrace_direct API
      ftrace: Rename _ftrace_direct_multi APIs to _ftrace_direct APIs
      ftrace: Store direct called addresses in their ops
      ftrace: Make DIRECT_CALLS work WITH_ARGS and !WITH_REGS
      arm64: ftrace: Add direct call support
      arm64: ftrace: Simplify get_ftrace_plt

Ilkka Koskinen (1):
      perf/arm-cmn: Move overlapping wp_combine field

Ira Weiny (1):
      arm: uaccess: Remove memcpy_page_flushcache()

Janne Grunau (2):
      dt-bindings: arm-pmu: Add PMU compatible strings for Apple M2 cores
      drivers/perf: apple_m1: Add Apple M2 support

Jiucheng Xu (1):
      perf/amlogic: Fix config1/config2 parsing issue

Junhao He (2):
      drivers/perf: hisi: Remove redundant initialized of pmu->name
      drivers/perf: hisi: add NULL check for name

Marc Zyngier (5):
      arm64: perf: Move PMUv3 driver to drivers/perf
      arm64: perf: Abstract system register accesses away
      ARM: Make CONFIG_CPU_V7 valid for 32bit ARMv8 implementations
      ARM: perf: Allow the use of the PMUv3 driver on 32bit ARM
      ARM: mach-virt: Select PMUv3 driver by default

Mark Brown (7):
      arm64/sysreg: Convert HFG[RW]TR_EL2 to automatic generation
      arm64/sysreg: Update ID_AA64PFR1_EL1 for DDI0601 2022-12
      arm64/idreg: Don't disable SME when disabling SVE
      arm64/sysreg: Convert HFGITR_EL2 to automatic generation
      arm64/cpufeature: Pull out helper for CPUID register definitions
      arm64/cpufeature: Consistently use symbolic constants for min_field_value
      arm64/cpufeature: Use helper macro to specify ID register for capabilites

Mark Rutland (15):
      ftrace: selftest: remove broken trace_direct_tramp
      arm64: atomics: lse: improve cmpxchg implementation
      arm64: uaccess: permit __smp_store_release() to use zero register
      arm64: uaccess: permit put_{user,kernel} to use zero register
      arm64: uaccess: remove unnecessary earlyclobber
      arm64/sysreg: allow *Enum blocks in SysregFields blocks
      arm64: stacktrace: recover return address for first entry
      arm64: stacktrace: move dump functions to end of file
      arm64: stacktrace: always inline core stacktrace functions
      arm64: add FIXADDR_TOT_{START,SIZE}
      arm64: mm: move fixmap code to its own file
      arm64: mm: always map fixmap at page granularity
      arm64: avoid redundant PAC stripping in __builtin_return_address()
      arm64: use XPACLRI to strip PAC
      arm64: move PAC masks to <asm/pointer_auth.h>

Nick Alcock (1):
      kbuild, drivers/perf: remove MODULE_LICENSE in non-modules

Pavankumar Kondeti (1):
      arm64: kernel: Fix kernel warning when nokaslr is passed to commandline

Pierre Gondois (1):
      firmware: arm_sdei: Fix sleep from invalid context BUG

Robin Murphy (2):
      perf/arm-cmn: Validate cycles events fully
      perf/arm-cmn: Fix port detection for CMN-700

Simon Horman (1):
      arm64: kexec: include reboot.h

Stephane Eranian (1):
      arm64: pmuv3: dynamically map PERF_COUNT_HW_BRANCH_INSTRUCTIONS

Sumit Garg (1):
      arm64: kgdb: Set PSTATE.SS to 1 to re-enable single-step

Teo Couprie Diaz (1):
      arm64: compat: Remove defines now in asm-generic

Uwe Kleine-K├Ânig (1):
      ACPI: AGDI: Improve error reporting for problems during .remove()

Will Deacon (14):
      Revert "ARM: mach-virt: Select PMUv3 driver by default"
      Revert "Revert "arm64: dma: Drop cache invalidation from arch_dma_prep_coherent()""
      Merge tag 'trace-direct-v6.3-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/trace/linux-trace into for-next/ftrace
      Merge branch 'for-next/acpi' into for-next/core
      Merge branch 'for-next/asm' into for-next/core
      Merge branch 'for-next/cpufeature' into for-next/core
      Merge branch 'for-next/ftrace' into for-next/core
      Merge branch 'for-next/kdump' into for-next/core
      Merge branch 'for-next/misc' into for-next/core
      Merge branch 'for-next/mm' into for-next/core
      KVM: arm64: Ensure CPU PMU probes before pKVM host de-privilege
      Merge branch 'for-next/perf' into for-next/core
      Merge branch 'for-next/stacktrace' into for-next/core
      Merge branch 'for-next/sysreg' into for-next/core

Yang Li (3):
      perf: arm: Use devm_platform_get_and_ioremap_resource()
      perf: qcom: Use devm_platform_get_and_ioremap_resource()
      drivers/perf: Use devm_platform_get_and_ioremap_resource()

Yu Zhe (2):
      arm64: armv8_deprecated: remove unnecessary (void*) conversions
      arm64: kexec: remove unnecessary (void*) conversions

Zaid Al-Bassam (3):
      perf: pmuv3: Abstract PMU version checks
      perf: pmuv3: Move inclusion of kvm_host.h to the arch-specific helper
      perf: pmuv3: Change GENMASK to GENMASK_ULL

Zhenhua Huang (1):
      mm,kfence: decouple kfence from page granularity mapping judgement

 Documentation/devicetree/bindings/arm/pmu.yaml     |   2 +
 arch/arm/include/asm/arm_pmuv3.h                   | 247 ++++++++++++
 arch/arm/mm/Kconfig                                |   2 +-
 arch/arm64/Kconfig                                 |  18 +
 arch/arm64/include/asm/arm_pmuv3.h                 | 155 ++++++++
 arch/arm64/include/asm/atomic_lse.h                |  17 +-
 arch/arm64/include/asm/barrier.h                   |  10 +-
 arch/arm64/include/asm/compat.h                    |   4 -
 arch/arm64/include/asm/compiler.h                  |  36 +-
 arch/arm64/include/asm/debug-monitors.h            |   1 +
 arch/arm64/include/asm/fixmap.h                    |  22 +-
 arch/arm64/include/asm/ftrace.h                    |  22 ++
 arch/arm64/include/asm/kernel-pgtable.h            |   5 +-
 arch/arm64/include/asm/kexec.h                     |   6 -
 arch/arm64/include/asm/kfence.h                    |  10 +
 arch/arm64/include/asm/memory.h                    |   5 -
 arch/arm64/include/asm/mmu.h                       |   2 +
 arch/arm64/include/asm/perf_event.h                | 249 ------------
 arch/arm64/include/asm/pointer_auth.h              |  13 +-
 arch/arm64/include/asm/sysreg.h                    |   9 -
 arch/arm64/include/asm/uaccess.h                   |   6 +-
 arch/arm64/kernel/Makefile                         |   1 -
 arch/arm64/kernel/armv8_deprecated.c               |   4 +-
 arch/arm64/kernel/asm-offsets.c                    |   6 +
 arch/arm64/kernel/cpufeature.c                     | 272 +++----------
 arch/arm64/kernel/crash_core.c                     |   1 +
 arch/arm64/kernel/debug-monitors.c                 |   5 +
 arch/arm64/kernel/entry-ftrace.S                   |  90 ++++-
 arch/arm64/kernel/fpsimd.c                         |   4 +-
 arch/arm64/kernel/ftrace.c                         |  46 ++-
 arch/arm64/kernel/idreg-override.c                 |   9 +-
 arch/arm64/kernel/kgdb.c                           |   2 +
 arch/arm64/kernel/machine_kexec.c                  |  23 +-
 arch/arm64/kernel/perf_callchain.c                 |   2 +-
 arch/arm64/kernel/process.c                        |   2 +-
 arch/arm64/kernel/proton-pack.c                    |   3 -
 arch/arm64/kernel/signal.c                         |  18 +-
 arch/arm64/kernel/stacktrace.c                     | 144 +++----
 arch/arm64/kvm/arm.c                               |  45 ---
 arch/arm64/kvm/pkvm.c                              |  47 +++
 arch/arm64/lib/uaccess_flushcache.c                |   6 -
 arch/arm64/mm/Makefile                             |   2 +-
 arch/arm64/mm/dma-mapping.c                        |  17 +-
 arch/arm64/mm/fixmap.c                             | 203 ++++++++++
 arch/arm64/mm/init.c                               |  34 +-
 arch/arm64/mm/mmu.c                                | 288 +++-----------
 arch/arm64/mm/pageattr.c                           |   7 +-
 arch/arm64/mm/ptdump.c                             |   2 +-
 arch/arm64/tools/gen-sysreg.awk                    |  95 +++--
 arch/arm64/tools/sysreg                            | 165 +++++++-
 arch/s390/kernel/mcount.S                          |   5 +
 arch/x86/kernel/ftrace_32.S                        |   5 +
 arch/x86/kernel/ftrace_64.S                        |   4 +
 drivers/acpi/arm64/agdi.c                          |  13 +-
 drivers/firmware/arm_sdei.c                        |  37 +-
 drivers/perf/Kconfig                               |  10 +
 drivers/perf/Makefile                              |   1 +
 drivers/perf/alibaba_uncore_drw_pmu.c              |   3 +-
 drivers/perf/amlogic/meson_ddr_pmu_core.c          |   8 +-
 drivers/perf/apple_m1_cpu_pmu.c                    |  15 +-
 drivers/perf/arm-cmn.c                             |  61 +--
 drivers/perf/arm_cspmu/arm_cspmu.c                 |   6 +-
 drivers/perf/arm_dmc620_pmu.c                      |   3 +-
 .../perf_event.c => drivers/perf/arm_pmuv3.c       | 158 +++-----
 drivers/perf/hisilicon/hisi_uncore_cpa_pmu.c       |   2 +-
 drivers/perf/hisilicon/hisi_uncore_ddrc_pmu.c      |  19 +-
 drivers/perf/hisilicon/hisi_uncore_hha_pmu.c       |   9 +-
 drivers/perf/hisilicon/hisi_uncore_l3c_pmu.c       |  13 +-
 drivers/perf/hisilicon/hisi_uncore_pa_pmu.c        |   2 +-
 drivers/perf/hisilicon/hisi_uncore_pmu.c           |   4 +-
 drivers/perf/hisilicon/hisi_uncore_pmu.h           |   3 +-
 drivers/perf/hisilicon/hisi_uncore_sllc_pmu.c      |   2 +-
 drivers/perf/qcom_l3_pmu.c                         |   3 +-
 include/kvm/arm_pmu.h                              |   2 +-
 include/linux/cpuhotplug.h                         |   1 -
 include/linux/ftrace.h                             |  61 +--
 include/linux/perf/arm_pmuv3.h                     | 303 ++++++++++++++
 kernel/bpf/trampoline.c                            |  12 +-
 kernel/trace/Kconfig                               |   2 +-
 kernel/trace/ftrace.c                              | 438 ++-------------------
 kernel/trace/trace_selftest.c                      |  19 +-
 mm/kfence/core.c                                   |   4 +
 samples/Kconfig                                    |   2 +-
 samples/ftrace/ftrace-direct-modify.c              |  10 +-
 samples/ftrace/ftrace-direct-multi-modify.c        |   9 +-
 samples/ftrace/ftrace-direct-multi.c               |   5 +-
 samples/ftrace/ftrace-direct-too.c                 |  10 +-
 samples/ftrace/ftrace-direct.c                     |  10 +-
 88 files changed, 1936 insertions(+), 1722 deletions(-)
 create mode 100644 arch/arm/include/asm/arm_pmuv3.h
 create mode 100644 arch/arm64/include/asm/arm_pmuv3.h
 create mode 100644 arch/arm64/mm/fixmap.c
 rename arch/arm64/kernel/perf_event.c => drivers/perf/arm_pmuv3.c (92%)
 create mode 100644 include/linux/perf/arm_pmuv3.h

Comments

pr-tracker-bot@kernel.org April 25, 2023, 7:45 p.m. UTC | #1
The pull request you sent on Tue, 25 Apr 2023 10:32:19 +0100:

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

has been merged into torvalds/linux.git:
https://git.kernel.org/torvalds/c/df45da57cbd35715d590a36a12968a94508ccd1f

Thank you!