All of lore.kernel.org
 help / color / mirror / Atom feed
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


             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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.