From: Catalin Marinas <catalin.marinas@arm.com>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Will Deacon <will@kernel.org>,
Thomas Gleixner <tglx@linutronix.de>,
James Morse <james.morse@arm.com>,
Ben Horgan <ben.horgan@arm.com>,
linux-arm-kernel@lists.infradead.org,
linux-kernel@vger.kernel.org
Subject: [GIT PULL] arm64 updates for 7.1
Date: Tue, 14 Apr 2026 14:47:51 +0100 [thread overview]
Message-ID: <ad5Fh5JUqptcYkrp@arm.com> (raw)
Hi Linus,
Please pull the first round of arm64 updates for 7.1. The biggest
changes are MPAM enablement in drivers/resctrl and new PMU support under
drivers/perf. On the core side, FEAT_LSUI lets futex atomic operations
with EL0 permissions, avoiding PAN toggling. The rest is mostly TLB
invalidation refactoring, further generic entry work, sysreg updates and
a few fixes. More details in the tag.
The generic entry patches touch include/linux/*entry* and kernel/entry/*
as they are based on a tag from tip. Not sure when Thomas will send them
your way, so sending the arm64 pull request in the meantime.
There are a couple of trivial conflicts against mainline with the KVM
tree and an arm64 fix. I solved them as below:
-------------8<-----------------------------
diff --cc arch/arm64/kernel/rsi.c
index 9e846ce4ef9c,6e883bc43186..92160f2e57ff
--- a/arch/arm64/kernel/rsi.c
+++ b/arch/arm64/kernel/rsi.c
@@@ -145,9 -144,9 +145,9 @@@ void __init arm64_rsi_init(void
return;
if (!rsi_version_matches())
return;
- if (WARN_ON(rsi_get_realm_config(&config)))
+ if (WARN_ON(rsi_get_realm_config(lm_alias(&config))))
return;
- prot_ns_shared = BIT(config.ipa_bits - 1);
+ prot_ns_shared = __phys_to_pte_val(BIT(config.ipa_bits - 1));
if (arm64_ioremap_prot_hook_register(realm_ioremap_hook))
return;
diff --cc arch/arm64/kvm/at.c
index a024d9a770dc,1adf88a57328..9f8f0ae8e86e
--- a/arch/arm64/kvm/at.c
+++ b/arch/arm64/kvm/at.c
@@@ -1753,8 -1785,10 +1783,10 @@@ int __kvm_at_swap_desc(struct kvm *kvm
if (!writable)
return -EPERM;
- ptep = (u64 __user *)hva + offset;
+ ptep = (void __user *)hva + offset;
- if (cpus_have_final_cap(ARM64_HAS_LSE_ATOMICS))
+ if (cpus_have_final_cap(ARM64_HAS_LSUI))
+ r = __lsui_swap_desc(ptep, old, new);
+ else if (cpus_have_final_cap(ARM64_HAS_LSE_ATOMICS))
r = __lse_swap_desc(ptep, old, new);
else
r = __llsc_swap_desc(ptep, old, new);
-------------8<-----------------------------
Thanks.
The following changes since commit 1f318b96cc84d7c2ab792fcc0bfd42a7ca890681:
Linux 7.0-rc3 (2026-03-08 16:56:54 -0700)
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 480a9e57cceaf42db6ff874dbfe91de201935035:
Merge branches 'for-next/misc', 'for-next/tlbflush', 'for-next/ttbr-macros-cleanup', 'for-next/kselftest', 'for-next/feat_lsui', 'for-next/mpam', 'for-next/hotplug-batched-tlbi', 'for-next/bbml2-fixes', 'for-next/sysreg', 'for-next/generic-entry' and 'for-next/acpi', remote-tracking branches 'arm64/for-next/perf' and 'arm64/for-next/read-once' into for-next/core (2026-04-10 14:22:24 +0100)
----------------------------------------------------------------
arm64 updates for 7.1:
Core features:
- Add support for FEAT_LSUI, allowing futex atomic operations without
toggling Privileged Access Never (PAN)
- Further refactor the arm64 exception handling code towards the
generic entry infrastructure
- Optimise __READ_ONCE() with CONFIG_LTO=y and allow alias analysis
through it
Memory management:
- Refactor the arm64 TLB invalidation API and implementation for better
control over barrier placement and level-hinted invalidation
- Enable batched TLB flushes during memory hot-unplug
- Fix rodata=full block mapping support for realm guests (when
BBML2_NOABORT is available)
Perf and PMU:
- Add support for a whole bunch of system PMUs featured in NVIDIA's
Tegra410 SoC (cspmu extensions for the fabric and PCIe, new drivers
for CPU/C2C memory latency PMUs)
- Clean up iomem resource handling in the Arm CMN driver
- Fix signedness handling of AA64DFR0.{PMUVer,PerfMon}
MPAM (Memory Partitioning And Monitoring):
- Add architecture context-switch and hiding of the feature from KVM
- Add interface to allow MPAM to be exposed to user-space using resctrl
- Add errata workaround for some existing platforms
- Add documentation for using MPAM and what shape of platforms can use
resctrl
Miscellaneous:
- Check DAIF (and PMR, where relevant) at task-switch time
- Skip TFSR_EL1 checks and barriers in synchronous MTE tag check mode
(only relevant to asynchronous or asymmetric tag check modes)
- Remove a duplicate allocation in the kexec code
- Remove redundant save/restore of SCS SP on entry to/from EL0
- Generate the KERNEL_HWCAP_ definitions from the arm64 hwcap
descriptions
- Add kselftest coverage for cmpbr_sigill()
- Update sysreg definitions
----------------------------------------------------------------
Aneesh Kumar K.V (Arm) (1):
arm64: rsi: use linear-map alias for realm config buffer
Anshuman Khandual (5):
arm64/mm: Describe TTBR1_BADDR_4852_OFFSET
arm64/mm: Directly use TTBRx_EL1_ASID_MASK
arm64/mm: Directly use TTBRx_EL1_CnP
arm64/mm: Enable batched TLB flush in unmap_hotplug_range()
arm64/mm: Reject memory removal that splits a kernel leaf mapping
Ben Horgan (11):
arm_mpam: Reset when feature configuration bit unset
arm64/sysreg: Add MPAMSM_EL1 register
KVM: arm64: Preserve host MPAM configuration when changing traps
KVM: arm64: Make MPAMSM_EL1 accesses UNDEF
arm64: mpam: Drop the CONFIG_EXPERT restriction
arm64: mpam: Initialise and context switch the MPAMSM_EL1 register
arm_mpam: resctrl: Hide CDP emulation behind CONFIG_EXPERT
arm_mpam: resctrl: Add rmid index helpers
arm_mpam: resctrl: Wait for cacheinfo to be ready
arm_mpam: resctrl: Add monitor initialisation and domain boilerplate
arm64: mpam: Add initial MPAM documentation
Besar Wicaksono (7):
perf/arm_cspmu: nvidia: Rename doc to Tegra241
perf/arm_cspmu: nvidia: Add Tegra410 UCF PMU
perf/arm_cspmu: Add arm_cspmu_acpi_dev_get
perf/arm_cspmu: nvidia: Add Tegra410 PCIE PMU
perf/arm_cspmu: nvidia: Add Tegra410 PCIE-TGT PMU
perf: add NVIDIA Tegra410 CPU Memory Latency PMU
perf: add NVIDIA Tegra410 C2C PMU
Catalin Marinas (1):
Merge branches 'for-next/misc', 'for-next/tlbflush', 'for-next/ttbr-macros-cleanup', 'for-next/kselftest', 'for-next/feat_lsui', 'for-next/mpam', 'for-next/hotplug-batched-tlbi', 'for-next/bbml2-fixes', 'for-next/sysreg', 'for-next/generic-entry' and 'for-next/acpi', remote-tracking branches 'arm64/for-next/perf' and 'arm64/for-next/read-once' into for-next/core
Chen Ni (1):
perf/arm-cmn: Fix incorrect error check for devm_ioremap()
Dave Martin (2):
arm_mpam: resctrl: Convert to/from MPAMs fixed-point formats
arm_mpam: resctrl: Add kunit test for control format conversions
Haoyu Lu (1):
ACPI: AGDI: fix missing newline in error message
James Clark (3):
KVM: arm64: Read PMUVer as unsigned
arm64: cpufeature: Make PMUVer and PerfMon unsigned
arm64: cpufeature: Use pmuv3_implemented() function
James Morse (22):
arm64: mpam: Context switch the MPAM registers
arm64: mpam: Re-initialise MPAM regs when CPU comes online
arm64: mpam: Advertise the CPUs MPAM limits to the driver
arm64: mpam: Add cpu_pm notifier to restore MPAM sysregs
arm64: mpam: Add helpers to change a task or cpu's MPAM PARTID/PMG values
KVM: arm64: Force guest EL1 to use user-space's partid configuration
arm_mpam: resctrl: Add boilerplate cpuhp and domain allocation
arm_mpam: resctrl: Pick the caches we will use as resctrl resources
arm_mpam: resctrl: Implement resctrl_arch_reset_all_ctrls()
arm_mpam: resctrl: Add resctrl_arch_get_config()
arm_mpam: resctrl: Implement helpers to update configuration
arm_mpam: resctrl: Add plumbing against arm64 task and cpu hooks
arm_mpam: resctrl: Add CDP emulation
arm_mpam: resctrl: Add support for 'MB' resource
arm_mpam: resctrl: Add support for csu counters
arm_mpam: resctrl: Allow resctrl to allocate monitors
arm_mpam: resctrl: Add resctrl_arch_rmid_read()
arm_mpam: resctrl: Update the rmid reallocation limit
arm_mpam: resctrl: Add empty definitions for assorted resctrl functions
arm64: mpam: Select ARCH_HAS_CPU_RESCTRL
arm_mpam: resctrl: Call resctrl_init() on platforms that can support resctrl
arm_mpam: Quirk CMN-650's CSU NRDY behaviour
Jisheng Zhang (1):
arm64: remove ARCH_INLINE_*
Kevin Brodsky (1):
arm64: mm: Use generic enum pgtable_level
Marco Elver (2):
arm64: Optimize __READ_ONCE() with CONFIG_LTO=y
arm64, compiler-context-analysis: Permit alias analysis through __READ_ONCE() with CONFIG_LTO=y
Mark Brown (7):
arm64/sysreg: Update SMIDR_EL1 to DDI0601 2025-06
arm64/hwcap: Generate the KERNEL_HWCAP_ definitions for the hwcaps
arm64/sysreg: Update ID_AA64ISAR0_EL1 description to DDI0601 2025-12
arm64/sysreg: Update ID_AA64ISAR2_EL1 description to DDI0601 2025-12
arm64/sysreg: Update ID_AA64FPFR0_EL1 description to DDI0601 2025-12
arm64/sysreg: Update ID_AA64ZFR0_EL1 description to DDI0601 2025-12
arm64/sysreg: Update ID_AA64SMFR0_EL1 description to DDI0601 2025-12
Mark Rutland (10):
entry: Fix stale comment for irqentry_enter()
entry: Remove local_irq_{enable,disable}_exit_to_user()
entry: Move irqentry_enter() prototype later
entry: Split kernel mode logic from irqentry_{enter,exit}()
entry: Split preemption from irqentry_exit_to_kernel_mode()
arm64: entry: Don't preempt with SError or Debug masked
arm64: entry: Consistently prefix arm64-specific wrappers
arm64: entry: Use irqentry_{enter_from,exit_to}_kernel_mode()
arm64: entry: Use split preemption logic
arm64: Check DAIF (and PMR) at task-switch time
Michael Ugrin (1):
arm64: Kconfig: fix duplicate word in CMDLINE help text
Muhammad Usama Anjum (1):
arm64: mte: Skip TFSR_EL1 checks and barriers in synchronous tag check mode
Nathan Chancellor (1):
perf/arm-cmn: Fix resource_size_t printk specifier in arm_cmn_init_dtc()
Robin Murphy (1):
perf/arm-cmn: Stop claiming entire iomem region
Ryan Roberts (13):
arm64: mm: Re-implement the __tlbi_level macro as a C function
arm64: mm: Introduce a C wrapper for by-range TLB invalidation
arm64: mm: Implicitly invalidate user ASID based on TLBI operation
arm64: mm: Re-implement the __flush_tlb_range_op macro in C
arm64: mm: Refactor flush_tlb_page() to use __tlbi_level_asid()
arm64: mm: Refactor __flush_tlb_range() to take flags
arm64: mm: More flags for __flush_tlb_range()
arm64: mm: Wrap flush_tlb_page() around __do_flush_tlb_range()
arm64: mm: Provide level hint for flush_tlb_page()
arm64: mm: __ptep_set_access_flags must hint correct TTL
arm64: mm: Fix rodata=full block mapping support for realm guests
arm64: mm: Handle invalid large leaf mappings correctly
arm64: mm: Remove pmd_sect() and pud_sect()
Shanker Donthineni (4):
arm_mpam: Add quirk framework
arm_mpam: Add workaround for T241-MPAM-1
arm_mpam: Add workaround for T241-MPAM-4
arm_mpam: Add workaround for T241-MPAM-6
Wang Wensheng (1):
arm64: kexec: Remove duplicate allocation for trans_pgd
Will Deacon (5):
arm64: scs: Remove redundant save/restore of SCS SP on entry to/from EL0
arm64: mm: Push __TLBI_VADDR() into __tlbi_level()
arm64: mm: Inline __TLBI_VADDR_RANGE() into __tlbi_range()
arm64: mm: Simplify __TLBI_RANGE_NUM() macro
arm64: mm: Simplify __flush_tlb_range_limit_excess()
Yeoreum Yun (8):
arm64: cpufeature: Add FEAT_LSUI
KVM: arm64: Expose FEAT_LSUI to guests
KVM: arm64: kselftest: set_id_regs: Add test for FEAT_LSUI
arm64: futex: Refactor futex atomic operation
arm64: futex: Support futex with FEAT_LSUI
KVM: arm64: Use CAST instruction for swapping guest descriptor
arm64: Kconfig: Add support for LSUI
arm64: armv8_deprecated: Disable swp emulation when FEAT_LSUI present
Yifan Wu (1):
selftests/arm64: Implement cmpbr_sigill() to hwcap test
Zeng Heng (1):
arm_mpam: Ensure in_reset_state is false after applying configuration
Documentation/admin-guide/perf/index.rst | 3 +-
.../{nvidia-pmu.rst => nvidia-tegra241-pmu.rst} | 8 +-
.../admin-guide/perf/nvidia-tegra410-pmu.rst | 522 ++++++
Documentation/arch/arm64/index.rst | 1 +
Documentation/arch/arm64/mpam.rst | 72 +
Documentation/arch/arm64/silicon-errata.rst | 9 +
arch/arm/include/asm/arm_pmuv3.h | 7 +
arch/arm64/Kconfig | 54 +-
arch/arm64/include/asm/asm-uaccess.h | 2 +-
arch/arm64/include/asm/cpucaps.h | 2 +
arch/arm64/include/asm/el2_setup.h | 3 +-
arch/arm64/include/asm/futex.h | 311 +++-
arch/arm64/include/asm/hugetlb.h | 12 +-
arch/arm64/include/asm/hwcap.h | 120 +-
arch/arm64/include/asm/lsui.h | 27 +
arch/arm64/include/asm/mmu.h | 10 +-
arch/arm64/include/asm/mmu_context.h | 3 +-
arch/arm64/include/asm/mpam.h | 96 ++
arch/arm64/include/asm/mte.h | 6 +
arch/arm64/include/asm/pgtable-hwdef.h | 9 +-
arch/arm64/include/asm/pgtable-prot.h | 2 +
arch/arm64/include/asm/pgtable.h | 60 +-
arch/arm64/include/asm/resctrl.h | 2 +
arch/arm64/include/asm/rwonce.h | 24 +-
arch/arm64/include/asm/scs.h | 8 +
arch/arm64/include/asm/thread_info.h | 3 +
arch/arm64/include/asm/tlb.h | 6 +-
arch/arm64/include/asm/tlbflush.h | 471 +++---
arch/arm64/include/asm/uaccess.h | 6 +-
arch/arm64/kernel/Makefile | 1 +
arch/arm64/kernel/armv8_deprecated.c | 14 +
arch/arm64/kernel/cpufeature.c | 47 +-
arch/arm64/kernel/entry-common.c | 52 +-
arch/arm64/kernel/entry.S | 6 +-
arch/arm64/kernel/machine_kexec.c | 3 -
arch/arm64/kernel/mpam.c | 62 +
arch/arm64/kernel/mte.c | 10 +-
arch/arm64/kernel/process.c | 32 +
arch/arm64/kernel/rsi.c | 2 +-
arch/arm64/kernel/sys_compat.c | 2 +-
arch/arm64/kvm/at.c | 34 +-
arch/arm64/kvm/debug.c | 5 +-
arch/arm64/kvm/hyp/include/hyp/switch.h | 12 +-
arch/arm64/kvm/hyp/nvhe/hyp-init.S | 4 +-
arch/arm64/kvm/hyp/nvhe/mm.c | 2 +-
arch/arm64/kvm/hyp/nvhe/tlb.c | 2 -
arch/arm64/kvm/hyp/pgtable.c | 4 +-
arch/arm64/kvm/hyp/vhe/sysreg-sr.c | 16 +
arch/arm64/kvm/hyp/vhe/tlb.c | 2 -
arch/arm64/kvm/sys_regs.c | 5 +-
arch/arm64/mm/context.c | 8 +-
arch/arm64/mm/contpte.c | 12 +-
arch/arm64/mm/fault.c | 30 +-
arch/arm64/mm/hugetlbpage.c | 10 +-
arch/arm64/mm/init.c | 9 +-
arch/arm64/mm/mmu.c | 286 +++-
arch/arm64/mm/pageattr.c | 50 +-
arch/arm64/mm/trans_pgd.c | 42 +-
arch/arm64/tools/Makefile | 8 +-
arch/arm64/tools/cpucaps | 1 +
arch/arm64/tools/gen-kernel-hwcaps.sh | 23 +
arch/arm64/tools/sysreg | 36 +-
drivers/acpi/arm64/agdi.c | 2 +-
drivers/perf/Kconfig | 14 +
drivers/perf/Makefile | 2 +
drivers/perf/arm-cmn.c | 70 +-
drivers/perf/arm_cspmu/arm_cspmu.c | 19 +-
drivers/perf/arm_cspmu/arm_cspmu.h | 17 +-
drivers/perf/arm_cspmu/nvidia_cspmu.c | 618 ++++++-
drivers/perf/nvidia_t410_c2c_pmu.c | 1051 ++++++++++++
drivers/perf/nvidia_t410_cmem_latency_pmu.c | 736 +++++++++
drivers/resctrl/Kconfig | 9 +-
drivers/resctrl/Makefile | 1 +
drivers/resctrl/mpam_devices.c | 305 +++-
drivers/resctrl/mpam_internal.h | 108 +-
drivers/resctrl/mpam_resctrl.c | 1704 ++++++++++++++++++++
drivers/resctrl/test_mpam_resctrl.c | 315 ++++
include/linux/arm_mpam.h | 32 +
include/linux/entry-common.h | 2 +-
include/linux/irq-entry-common.h | 256 ++-
kernel/entry/common.c | 107 +-
tools/testing/selftests/arm64/abi/hwcap.c | 3 +-
tools/testing/selftests/kvm/arm64/set_id_regs.c | 1 +
83 files changed, 7117 insertions(+), 946 deletions(-)
rename Documentation/admin-guide/perf/{nvidia-pmu.rst => nvidia-tegra241-pmu.rst} (98%)
create mode 100644 Documentation/admin-guide/perf/nvidia-tegra410-pmu.rst
create mode 100644 Documentation/arch/arm64/mpam.rst
create mode 100644 arch/arm64/include/asm/lsui.h
create mode 100644 arch/arm64/include/asm/mpam.h
create mode 100644 arch/arm64/include/asm/resctrl.h
create mode 100644 arch/arm64/kernel/mpam.c
create mode 100644 arch/arm64/tools/gen-kernel-hwcaps.sh
create mode 100644 drivers/perf/nvidia_t410_c2c_pmu.c
create mode 100644 drivers/perf/nvidia_t410_cmem_latency_pmu.c
create mode 100644 drivers/resctrl/mpam_resctrl.c
create mode 100644 drivers/resctrl/test_mpam_resctrl.c
--
Catalin
next reply other threads:[~2026-04-14 13:48 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-04-14 13:47 Catalin Marinas [this message]
2026-04-15 0:02 ` [GIT PULL] arm64 updates for 7.1 Linus Torvalds
2026-04-15 0:03 ` pr-tracker-bot
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=ad5Fh5JUqptcYkrp@arm.com \
--to=catalin.marinas@arm.com \
--cc=ben.horgan@arm.com \
--cc=james.morse@arm.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=tglx@linutronix.de \
--cc=torvalds@linux-foundation.org \
--cc=will@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox