[GIT PULL] arm64 updates 6.15-rc1

From: Catalin Marinas
Date: Tue Mar 25 2025 - 15:54:56 EST


Hi Linus,

Please pull the arm64 updates for 6.15-rc1 below. Nothing major this
time around. Apart from the usual perf/PMU updates, some page table
cleanups, the notable features are average CPU frequency based on the
AMUv1 counters, CONFIG_HOTPLUG_SMT and MOPS instructions (memcpy/memset)
in the uaccess routines.

Thanks.

The following changes since commit 0ad2507d5d93f39619fc42372c347d6006b64319:

Linux 6.14-rc3 (2025-02-16 14:02:44 -0800)

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 64fa6b9322a904198589c0479dca6f2ed7f2eb04:

Merge branch 'for-next/el2-enable-feat-pmuv3p9' into for-next/core (2025-03-25 19:32:32 +0000)

----------------------------------------------------------------
arm64 updates for 6.15:

Perf and PMUs:

- Support for the "Rainier" CPU PMU from Arm

- Preparatory driver changes and cleanups that pave the way for BRBE
support

- Support for partial virtualisation of the Apple-M1 PMU

- Support for the second event filter in Arm CSPMU designs

- Minor fixes and cleanups (CMN and DWC PMUs)

- Enable EL2 requirements for FEAT_PMUv3p9

Power, CPU topology:

- Support for AMUv1-based average CPU frequency

- Run-time SMT control wired up for arm64 (CONFIG_HOTPLUG_SMT). It adds
a generic topology_is_primary_thread() function overridden by x86 and
powerpc

New(ish) features:

- MOPS (memcpy/memset) support for the uaccess routines

Security/confidential compute:

- Fix the DMA address for devices used in Realms with Arm CCA. The
CCA architecture uses the address bit to differentiate between shared
and private addresses

- Spectre-BHB: assume CPUs Linux doesn't know about vulnerable by
default

Memory management clean-ups:

- Drop the P*D_TABLE_BIT definition in preparation for 128-bit PTEs

- Some minor page table accessor clean-ups

- PIE/POE (permission indirection/overlay) helpers clean-up

Kselftests:

- MTE: skip hugetlb tests if MTE is not supported on such mappings and
user correct naming for sync/async tag checking modes

Miscellaneous:

- Add a PKEY_UNRESTRICTED definition as 0 to uapi (toolchain people
request)

- Sysreg updates for new register fields

- CPU type info for some Qualcomm Kryo cores

----------------------------------------------------------------
Anshuman Khandual (16):
arm64/sysreg: Update register fields for ID_AA64MMFR0_EL1
arm64/sysreg: Add register fields for HDFGRTR2_EL2
arm64/sysreg: Add register fields for HDFGWTR2_EL2
arm64/sysreg: Add register fields for HFGITR2_EL2
arm64/sysreg: Add register fields for HFGRTR2_EL2
arm64/sysreg: Add register fields for HFGWTR2_EL2
arm64/mm: Convert __pte_to_phys() and __phys_to_pte_val() as functions
arm64/hugetlb: Consistently use pud_sect_supported()
arm64/boot: Enable EL2 requirements for FEAT_PMUv3p9
KVM: arm64: ptdump: Test PMD_TYPE_MASK for block mapping
arm64/ptdump: Test PMD_TYPE_MASK for block mapping
arm64/mm: Clear PXX_TYPE_MASK in mk_[pmd|pud]_sect_prot()
arm64/mm: Clear PXX_TYPE_MASK and set PXD_TYPE_SECT in [pmd|pud]_mkhuge()
arm64/mm: Check PXD_TYPE_TABLE in [p4d|pgd]_bad()
arm64/mm: Drop PXD_TABLE_BIT
arm64/mm: Define PTDESC_ORDER

Ard Biesheuvel (1):
arm64/kernel: Always use level 2 or higher for early mappings

Beata Michalska (5):
cpufreq: Allow arch_freq_get_on_cpu to return an error
cpufreq: Introduce an optional cpuinfo_avg_freq sysfs entry
arm64: Provide an AMU-based version of arch_freq_get_on_cpu
arm64: Update AMU-based freq scale factor on entering idle
arm64: Utilize for_each_cpu_wrap for reference lookup

Catalin Marinas (5):
kselftest/arm64: mte: Use the correct naming for tag check modes in check_hugetlb_options.c
kselftest/arm64: mte: Skip the hugetlb tests if MTE not supported on such mappings
Merge branches 'for-next/amuv1-avg-freq', 'for-next/pkey_unrestricted', 'for-next/sysreg', 'for-next/misc', 'for-next/pgtable-cleanups', 'for-next/kselftest', 'for-next/uaccess-mops', 'for-next/pie-poe-cleanup', 'for-next/cputype-kryo', 'for-next/cca-dma-address', 'for-next/drop-pxd_table_bit' and 'for-next/spectre-bhb-assume-vulnerable', remote-tracking branch 'arm64/for-next/perf' into for-next/core
Merge branch 'for-next/smt-control' into for-next/core
Merge branch 'for-next/el2-enable-feat-pmuv3p9' into for-next/core

Douglas Anderson (7):
arm64: cputype: Add QCOM_CPU_PART_KRYO_3XX_GOLD
arm64: cputype: Add comments about Qualcomm Kryo 5XX and 6XX cores
arm64: errata: Add QCOM_KRYO_4XX_GOLD to the spectre_bhb_k24_list
arm64: errata: Assume that unknown CPUs _are_ vulnerable to Spectre BHB
arm64: errata: Add KRYO 2XX/3XX/4XX silver cores to Spectre BHB safe list
arm64: cputype: Add MIDR_CORTEX_A76AE
arm64: errata: Add newer ARM cores to the spectre_bhb_loop_affected() lists

Ionela Voinescu (1):
arch_topology: init capacity_freq_ref to 0

James Clark (2):
arm64/sysreg: Fix unbalanced closing block
arm64/sysreg: Enforce whole word match for open/close tokens

Kevin Brodsky (3):
arm64/sysreg: Improve PIR/POR helpers
arm64/sysreg: Rename POE_RXW to POE_RWX
arm64/sysreg: Move POR_EL0_INIT to asm/por.h

Kristina Martšenko (3):
arm64: extable: Add fixup handling for uaccess CPY* instructions
arm64: mm: Handle PAN faults on uaccess CPY* instructions
arm64: lib: Use MOPS for usercopy routines

Madhavan Srinivasan (1):
selftest/powerpc/mm/pkey: fix build-break introduced by commit 00894c3fc917

Mark Rutland (3):
perf: arm_pmu: Don't disable counter in armpmu_add()
perf: arm_pmuv3: Don't disable counter in armv8pmu_enable_event()
perf: arm_pmu: Move PMUv3-specific data

Oliver Upton (2):
drivers/perf: apple_m1: Refactor event select/filter configuration
drivers/perf: apple_m1: Support host/guest event filtering

Rob Herring (Arm) (4):
perf: arm_pmuv3: Call kvm_vcpu_pmu_resync_el0() before enabling counters
perf: arm_v7_pmu: Drop obvious comments for enabling/disabling counters and interrupts
perf: arm_v7_pmu: Don't disable counter in (armv7|krait_|scorpion_)pmu_enable_event()
perf: apple_m1: Don't disable counter in m1_pmu_enable_event()

Robin Murphy (5):
perf/arm-cmn: Minor event type housekeeping
perf/arm_cspmu: Move register definitons to header
perf/arm_cspmu: Generalise event filtering
perf/arm_cspmu: Add PMEVFILT2R support
perf/arm_cspmu: Fix missing io.h include

Ryan Roberts (2):
arm64/mm: Check PUD_TYPE_TABLE in pud_bad()
arm64/mm: Check pmd_table() in pmd_trans_huge()

Suzuki K Poulose (3):
dma: Fix encryption bit clearing for dma_to_phys
dma: Introduce generic dma_addr_*crypted helpers
arm64: realm: Use aliased addresses for device DMA to shared buffers

Thomas Weißschuh (1):
arm64: mm: Don't use %pK through printk

Vincenzo Frascino (1):
perf: arm_pmuv3: Add support for ARM Rainier PMU

Will Deacon (1):
Merge branch 'perf/m1-guest-events' of git://git.kernel.org/pub/scm/linux/kernel/git/oupton/linux into for-next/perf

Yicong Yang (4):
cpu/SMT: Provide a default topology_is_primary_thread()
arch_topology: Support SMT control for OF based system
arm64: topology: Support SMT control on ACPI based system
arm64: Kconfig: Enable HOTPLUG_SMT

Yue Haibing (1):
arm64/fpsimd: Remove unused declaration fpsimd_kvm_prepare()

Yunhui Cui (2):
perf/dwc_pcie: fix some unreleased resources
perf/dwc_pcie: fix duplicate pci_dev devices

Yury Khrustalev (3):
mm/pkey: Add PKEY_UNRESTRICTED macro
selftests/mm: Use PKEY_UNRESTRICTED macro
selftests/powerpc: Use PKEY_UNRESTRICTED macro

Documentation/admin-guide/pm/cpufreq.rst | 17 +-
Documentation/arch/arm64/booting.rst | 22 +++
arch/arm64/Kconfig | 3 +-
arch/arm64/include/asm/apple_m1_pmu.h | 1 +
arch/arm64/include/asm/asm-extable.h | 10 +-
arch/arm64/include/asm/asm-uaccess.h | 4 +
arch/arm64/include/asm/cputype.h | 14 ++
arch/arm64/include/asm/el2_setup.h | 25 +++
arch/arm64/include/asm/extable.h | 4 +-
arch/arm64/include/asm/fpsimd.h | 1 -
arch/arm64/include/asm/kernel-pgtable.h | 8 +-
arch/arm64/include/asm/mem_encrypt.h | 11 ++
arch/arm64/include/asm/pgtable-hwdef.h | 35 ++--
arch/arm64/include/asm/pgtable-prot.h | 36 ++--
arch/arm64/include/asm/pgtable.h | 80 +++++---
arch/arm64/include/asm/por.h | 11 +-
arch/arm64/include/asm/spectre.h | 1 -
arch/arm64/include/asm/sysreg.h | 15 +-
arch/arm64/kernel/pi/map_range.c | 6 +-
arch/arm64/kernel/proton-pack.c | 208 +++++++++++----------
arch/arm64/kernel/signal.c | 2 +-
arch/arm64/kernel/topology.c | 182 +++++++++++++++++-
arch/arm64/kvm/at.c | 8 +-
arch/arm64/kvm/ptdump.c | 4 +-
arch/arm64/lib/clear_user.S | 25 ++-
arch/arm64/lib/copy_from_user.S | 10 +
arch/arm64/lib/copy_template.S | 10 +
arch/arm64/lib/copy_to_user.S | 10 +
arch/arm64/mm/extable.c | 40 +++-
arch/arm64/mm/fault.c | 4 +-
arch/arm64/mm/hugetlbpage.c | 20 +-
arch/arm64/mm/kasan_init.c | 6 +-
arch/arm64/mm/mmu.c | 10 +-
arch/arm64/mm/physaddr.c | 2 +-
arch/arm64/mm/ptdump.c | 4 +-
arch/arm64/tools/gen-sysreg.awk | 31 +--
arch/arm64/tools/sysreg | 105 ++++++++++-
arch/powerpc/include/asm/topology.h | 1 +
arch/x86/include/asm/topology.h | 2 +-
arch/x86/kernel/cpu/aperfmperf.c | 2 +-
arch/x86/kernel/cpu/proc.c | 7 +-
drivers/base/arch_topology.c | 26 ++-
drivers/cpufreq/Kconfig.x86 | 12 ++
drivers/cpufreq/cpufreq.c | 38 +++-
drivers/perf/apple_m1_cpu_pmu.c | 70 ++++---
drivers/perf/arm-cmn.c | 5 +-
drivers/perf/arm_cspmu/ampere_cspmu.c | 32 +---
drivers/perf/arm_cspmu/arm_cspmu.c | 81 ++------
drivers/perf/arm_cspmu/arm_cspmu.h | 57 +++++-
drivers/perf/arm_cspmu/nvidia_cspmu.c | 22 ++-
drivers/perf/arm_pmu.c | 8 +-
drivers/perf/arm_pmuv3.c | 11 +-
drivers/perf/arm_v7_pmu.c | 50 -----
drivers/perf/dwc_pcie_pmu.c | 51 +++--
include/linux/cpufreq.h | 2 +-
include/linux/dma-direct.h | 13 +-
include/linux/mem_encrypt.h | 23 +++
include/linux/perf/arm_pmu.h | 13 +-
include/linux/topology.h | 23 +++
include/uapi/asm-generic/mman-common.h | 1 +
.../selftests/arm64/mte/check_hugetlb_options.c | 19 +-
tools/testing/selftests/mm/mseal_test.c | 6 +-
tools/testing/selftests/mm/pkey-helpers.h | 3 +-
tools/testing/selftests/mm/pkey_sighandler_tests.c | 4 +-
tools/testing/selftests/mm/protection_keys.c | 2 +-
tools/testing/selftests/powerpc/include/pkeys.h | 5 +-
.../testing/selftests/powerpc/mm/pkey_exec_prot.c | 2 +-
tools/testing/selftests/powerpc/mm/pkey_siginfo.c | 2 +-
tools/testing/selftests/powerpc/ptrace/core-pkey.c | 6 +-
.../testing/selftests/powerpc/ptrace/ptrace-pkey.c | 6 +-
70 files changed, 1111 insertions(+), 479 deletions(-)