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
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!
--
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/prtracker.html