Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
148 commits
Select commit Hold shift + click to select a range
5225691
downstream: remove legacy private MPAM backport
realmzstevenmiao Sep 17, 2026
233b476
x86/resctrl: Fix allocation of cleanest CLOSID on platforms with no m…
Mar 11, 2025
cb87ed5
x86/resctrl: Add a helper to avoid reaching into the arch code resour…
Mar 11, 2025
0acca3c
x86/resctrl: Remove fflags from struct rdt_resource
Mar 11, 2025
09bc846
x86/resctrl: Use schema type to determine how to parse schema values
Mar 11, 2025
440a63f
x86/resctrl: Add max_bw to struct resctrl_membw
Mar 11, 2025
0c489b4
x86/resctrl: Generate default_ctrl instead of sharing it
Mar 11, 2025
5a11d91
x86/resctrl: Add helper for setting CPU default properties
Mar 11, 2025
f288468
x86/resctrl: Remove rdtgroup from update_cpu_closid_rmid()
Mar 11, 2025
10e1112
x86/resctrl: Expose resctrl fs's init function to the rest of the kernel
Mar 11, 2025
6c1ce24
x86/resctrl: Move rdt_find_domain() to be visible to arch and fs code
Mar 11, 2025
8c8139c
x86/resctrl: Move resctrl types to a separate header
Mar 11, 2025
7612098
x86/resctrl: Add an arch helper to reset one resource
Mar 11, 2025
526ef38
x86/resctrl: Move monitor exit work to a resctrl exit call
Mar 11, 2025
370f1d0
x86/resctrl: Move monitor init work to a resctrl init call
Mar 11, 2025
e0b1091
x86/resctrl: Rewrite and move the for_each_*_rdt_resource() walkers
Mar 11, 2025
2ee7389
x86/resctrl: Move the is_mbm_*_enabled() helpers to asm/resctrl.h
Mar 11, 2025
b44ce72
x86/resctrl: Add resctrl_arch_is_evt_configurable() to abstract BMEC
Mar 11, 2025
1f1f977
x86/resctrl: Change mon_event_config_{read,write}() to be arch helpers
Mar 11, 2025
2b5666d
x86/resctrl: Move mba_mbps_default_event init to filesystem code
Mar 11, 2025
ddbc149
x86/resctrl: Add resctrl_arch_ prefix to pseudo lock functions
Mar 11, 2025
254614b
x86/resctrl: Allow an architecture to disable pseudo lock
Mar 11, 2025
324be47
x86/resctrl: Make prefetch_disable_bits belong to the arch code
Mar 11, 2025
268d0ac
x86/resctrl: Make resctrl_arch_pseudo_lock_fn() take a plr
Mar 11, 2025
7c18c00
x86/resctrl: Move RFTYPE flags to be managed by resctrl
Mar 11, 2025
4d175a8
x86/resctrl: Handle throttle_mode for SMBA resources
Mar 11, 2025
e67fb20
x86/resctrl: Move get_config_index() to a header
Mar 11, 2025
d86365b
x86/resctrl: Move get_{mon,ctrl}_domain_from_cpu() to live with their…
Mar 11, 2025
38f416e
fs/resctrl: Add boiler plate for external resctrl code
May 15, 2025
36a89d3
x86/resctrl: Move the filesystem bits to headers visible to fs/resctrl
May 15, 2025
bfa7310
x86/resctrl: Expand the width of domid by replacing mon_data_bits
May 15, 2025
635dca7
x86/resctrl: Split trace.h
May 15, 2025
fa228dd
x86/resctrl: Fix types in resctrl_arch_mon_ctx_{alloc,free}() stubs
May 15, 2025
45594b4
x86/resctrl: Always initialise rid field in rdt_resources_all[]
May 15, 2025
8a4b511
x86,fs/resctrl: Move the resctrl filesystem code to live in /fs/resctrl
May 15, 2025
d241f4c
fs/resctrl: Free mon_data structures on rdt_get_tree() failure
aegl Jul 6, 2026
d475e4a
fs/resctrl: Fix use-after-free during unmount
aegl Jul 6, 2026
a1f1fdf
arm64/sysreg: Convert existing MPAM sysregs and add the remaining ent…
Oct 30, 2024
7a905ad
arm64: head.S: Initialise MPAM EL2 registers and disable traps
Oct 30, 2024
b1084e1
arm64: cpufeature: discover CPU support for MPAM
Oct 30, 2024
8bb0284
arm64: kconfig: Add Kconfig entry for MPAM
Nov 19, 2025
64bdab6
ACPI / PPTT: Add a helper to fill a cpumask from a processor container
Nov 19, 2025
b335c34
ACPI / PPTT: Add acpi_pptt_cache_v1_full to use pptt cache as one str…
benhor01 Nov 19, 2025
e2ae21f
ACPI / PPTT: Find cache level by cache-id
Nov 19, 2025
0a6d61d
ACPI / MPAM: Parse the MPAM table
Nov 19, 2025
badd543
arm_mpam: Add probe/remove for mpam msc driver and kbuild boiler plate
Nov 19, 2025
4d77b55
ACPI / PPTT: Add a helper to fill a cpumask from a cache_id
Nov 19, 2025
24098a7
arm_mpam: Add the class and component structures for firmware describ…
Nov 19, 2025
8d1f588
arm_mpam: Add MPAM MSC register layout definitions
Nov 19, 2025
df8935e
arm_mpam: Add cpuhp callbacks to probe MSC hardware
Nov 19, 2025
1a52c45
arm_mpam: Probe hardware to find the supported partid/pmg values
Nov 19, 2025
098280a
arm_mpam: Add helpers for managing the locking around the mon_sel reg…
Nov 19, 2025
ca249be
arm_mpam: Probe the hardware features resctrl supports
Nov 19, 2025
d16e724
arm_mpam: Merge supported features during mpam_enable() into mpam_class
Nov 19, 2025
658fbec
arm_mpam: Reset MSC controls from cpuhp callbacks
Nov 19, 2025
6432184
arm_mpam: Add a helper to touch an MSC from any CPU
Nov 19, 2025
f3b7078
arm_mpam: Extend reset logic to allow devices to be reset any time
Nov 19, 2025
1028936
arm_mpam: Register and enable IRQs
Nov 19, 2025
a6f6996
arm_mpam: Use a static key to indicate when mpam is enabled
Nov 19, 2025
1a1a7ec
arm_mpam: Allow configuration to be applied and restored during cpu o…
Nov 19, 2025
be012a5
arm_mpam: Probe and reset the rest of the features
Nov 19, 2025
22235af
arm_mpam: Add helpers to allocate monitors
Nov 19, 2025
9009995
arm_mpam: Add mpam_msmon_read() to read monitor value
Nov 19, 2025
a847093
arm_mpam: Track bandwidth counter state for power management
Nov 19, 2025
30d66cc
arm_mpam: Consider overflow in bandwidth counter state
benhor01 Nov 19, 2025
44f8f22
arm_mpam: Probe for long/lwd mbwu counters
rohit-arm Nov 19, 2025
ad41c63
arm_mpam: Use long MBWU counters if supported
rohit-arm Nov 19, 2025
2e30caa
arm_mpam: Add helper to reset saved mbwu state
Nov 19, 2025
5b86f65
arm_mpam: Add kunit test for bitmap reset
Nov 19, 2025
e7a0b16
arm_mpam: Add kunit tests for props_mismatch()
Nov 19, 2025
f3f8d5c
MAINTAINERS: new entry for MPAM Driver
benhor01 Nov 19, 2025
607e039
arm_mpam: Stop using uninitialized variables in __ris_msmon_read()
benhor01 Dec 19, 2025
8c3792d
arm_mpam: Use non-atomic bitops when modifying feature bitmap
benhor01 Jan 12, 2026
0e2d2a2
arm_mpam: Fix null pointer dereference when restoring bandwidth counters
benhor01 Mar 6, 2026
5a24378
arm_mpam: Ensure in_reset_state is false after applying configuration
henryZe Mar 13, 2026
d9a5e27
arm_mpam: Reset when feature configuration bit unset
benhor01 Mar 13, 2026
59c649a
arm_mpam: Fix monitor instance selection when checking for hardware NRDY
benhor01 May 7, 2026
e1d6a26
arm_mpam: Pretend that NRDY is always hardware managed
benhor01 May 7, 2026
ae73737
arm_mpam: Improve check for whether or not NRDY is hardware managed
benhor01 May 7, 2026
e16c489
arm_mpam: Fix false positive assert failure during mpam_disable()
May 8, 2026
b95f6c3
arm_mpam: Check whether the config array is allocated before destroyi…
May 8, 2026
f07d163
arm_mpam: Fix software reset values of MPAMCFG_PRI
benhor01 May 15, 2026
f01eb83
arm_mpam: Fix MPAMCFG_MBW_PBM register setting
fyu1 Jun 7, 2026
800784f
arm_mpam: guard MBWU state before adding it to garbage
lgs2513 Jul 8, 2026
4742727
arm_mpam: Fix a NULL pointer dereference on unbinding after an error …
benhor01 Aug 6, 2026
933487f
arm_mpam: Disable driver unbind to avoid UAF
benhor01 Aug 6, 2026
a5996a9
arm_mpam: Remove duplicate linux/srcu.h header
wb-zjp846396 Jan 12, 2026
cb1e6df
treewide: Replace kmalloc with kmalloc_obj for non-scalar types
kees Feb 21, 2026
f583eee
Convert 'alloc_obj' family to use the new default GFP_KERNEL argument
torvalds Feb 22, 2026
80c2abf
Convert remaining multi-line kmalloc_obj/flex GFP_KERNEL uses
kees Feb 22, 2026
1791337
arm_mpam: Disable preemption when making accesses to fake MSC in kuni…
benhor01 Mar 6, 2026
f532b97
arm_mpam: Force __iomem casts
krzk Mar 6, 2026
a419f80
arm64: mpam: Context switch the MPAM registers
Mar 13, 2026
3ad593c
arm_mpam: resctrl: Add boilerplate cpuhp and domain allocation
Mar 13, 2026
60433ee
arm_mpam: resctrl: Pick the caches we will use as resctrl resources
Mar 13, 2026
08f4637
arm_mpam: resctrl: Implement resctrl_arch_reset_all_ctrls()
Mar 13, 2026
ce9a1f5
arm64: mpam: Add helpers to change a task or cpu's MPAM PARTID/PMG va…
Mar 13, 2026
b322e80
arm_mpam: resctrl: Add resctrl_arch_get_config()
Mar 13, 2026
acd379d
arm_mpam: resctrl: Implement helpers to update configuration
Mar 13, 2026
e8490f6
arm_mpam: resctrl: Add plumbing against arm64 task and cpu hooks
Mar 13, 2026
5183e94
arm_mpam: resctrl: Add CDP emulation
Mar 13, 2026
bb8a2da
arm_mpam: resctrl: Hide CDP emulation behind CONFIG_EXPERT
benhor01 Mar 13, 2026
3ff525b
arm_mpam: resctrl: Convert to/from MPAMs fixed-point formats
Mar 13, 2026
c13b5d5
arm_mpam: resctrl: Add rmid index helpers
benhor01 Mar 13, 2026
e4f57fa
arm_mpam: resctrl: Wait for cacheinfo to be ready
benhor01 Mar 13, 2026
1c82b6f
arm_mpam: resctrl: Add support for 'MB' resource
Mar 13, 2026
a922f22
arm_mpam: resctrl: Add kunit test for control format conversions
Mar 13, 2026
fe1acd5
x86,fs/resctrl: Consolidate monitor event descriptions
aegl Sep 5, 2025
d10af88
arm_mpam: resctrl: Add monitor initialisation and domain boilerplate
benhor01 Mar 13, 2026
ac74b04
arm_mpam: resctrl: Add support for csu counters
Mar 13, 2026
6de78c8
arm_mpam: resctrl: Allow resctrl to allocate monitors
Mar 13, 2026
f3db441
arm_mpam: resctrl: Add resctrl_arch_rmid_read()
Mar 13, 2026
55ee7ca
arm_mpam: resctrl: Update the rmid reallocation limit
Mar 13, 2026
d70219c
arm_mpam: resctrl: Add empty definitions for assorted resctrl functions
Mar 13, 2026
2262ee9
arm64: mpam: Select ARCH_HAS_CPU_RESCTRL
Mar 13, 2026
b977c83
arm_mpam: resctrl: Call resctrl_init() on platforms that can support …
Mar 13, 2026
31fda23
arm_mpam: resctrl: Fix MBA CDP alloc_capable handling on unmount
henryZe Apr 13, 2026
fa203b6
arm_mpam: resctrl: Fix the check for no monitor components found
benhor01 Apr 14, 2026
135c0ba
arm_mpam: resctrl: Make resctrl_mon_ctx_waiters static
benhor01 Apr 14, 2026
c3ecbcc
arm_mpam: Add quirk framework
shankerd04 Mar 13, 2026
7ce249f
arm_mpam: Add workaround for T241-MPAM-1
shankerd04 Mar 13, 2026
7822542
arm_mpam: Add workaround for T241-MPAM-4
shankerd04 Mar 13, 2026
ec421f8
arm_mpam: Add workaround for T241-MPAM-6
shankerd04 Mar 13, 2026
ecd434c
arm_mpam: Quirk CMN-650's CSU NRDY behaviour
Mar 13, 2026
f4e62a3
arm64: mpam: Add initial MPAM documentation
benhor01 Mar 13, 2026
fbe56c6
arm_mpam: Apply T241-MPAM-6 to 63-bit counters
shankerd04 Jul 31, 2026
7cbab80
arm_mpam: resctrl: Pick classes for use as MBM counters
Jul 31, 2026
067df80
KVM: arm64: Fix missing traps of guest accesses to the MPAM registers
Oct 30, 2024
13dc955
arm64/sysreg: Add MPAMSM_EL1 register
benhor01 Mar 13, 2026
084a69c
KVM: arm64: Preserve host MPAM configuration when changing traps
benhor01 Mar 13, 2026
e9b74fe
KVM: arm64: Make MPAMSM_EL1 accesses UNDEF
benhor01 Mar 13, 2026
8d5ee33
arm64: mpam: Re-initialise MPAM regs when CPU comes online
Mar 13, 2026
668fdd6
arm64: mpam: Advertise the CPUs MPAM limits to the driver
Mar 13, 2026
73f914b
arm64: mpam: Add cpu_pm notifier to restore MPAM sysregs
Mar 13, 2026
3c2e75e
arm64: mpam: Initialise and context switch the MPAMSM_EL1 register
benhor01 Mar 13, 2026
49cd9c8
arm_mpam: Update architecture version check for MPAM MSC
henryZe May 8, 2026
9952e6e
downstream: arm_mpam: fix mapped hardware page size
Jul 11, 2026
bbf93c1
perf/arm-cmn: Stop claiming entire iomem region
rmurphy-arm Feb 19, 2026
4fb5c43
x86/resctrl: Drop __init/__exit on assorted symbols
May 15, 2025
49612ab
downstream: KVM: arm64: Avoid nVHE symbol reference with modular KVM
realmzstevenmiao Sep 2, 2026
52148c3
downstream: arm64: Build KVM into PHX kernels
realmzstevenmiao Sep 2, 2026
e5d3ef0
KVM: arm64: Shave a few bytes from the EL2 idmap code
Oct 10, 2024
5fab5a3
downstream: arm_mpam: resctrl: Initialize schemata format strings
realmzstevenmiao Sep 3, 2026
992a4bb
perf/arm-cmn: Fix resource_size_t printk specifier in arm_cmn_init_dtc()
nathanchance Mar 26, 2026
6be756d
perf/arm-cmn: Fix incorrect error check for devm_ioremap()
Mar 26, 2026
bb9f221
KVM: arm64: Avoid mismatched accesses to 'struct kvm_nvhe_init_params'
willdeacon Aug 13, 2026
cb2def8
downstream: arm_mpam: enable legacy free-running MBWU reads
realmzstevenmiao Sep 11, 2026
3a48040
downstream: arm_mpam: bound legacy monitor event lookup
realmzstevenmiao Sep 11, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions Documentation/arch/arm64/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ ARM64 Architecture
legacy_instructions
memory
memory-tagging-extension
mpam
perf
pointer-authentication
ptdump
Expand Down
587 changes: 0 additions & 587 deletions Documentation/arch/arm64/mpam.md

This file was deleted.

72 changes: 72 additions & 0 deletions Documentation/arch/arm64/mpam.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
.. SPDX-License-Identifier: GPL-2.0

====
MPAM
====

What is MPAM
============
MPAM (Memory Partitioning and Monitoring) is a feature in the CPUs and memory
system components such as the caches or memory controllers that allow memory
traffic to be labelled, partitioned and monitored.

Traffic is labelled by the CPU, based on the control or monitor group the
current task is assigned to using resctrl. Partitioning policy can be set
using the schemata file in resctrl, and monitor values read via resctrl.
See Documentation/filesystems/resctrl.rst for more details.

This allows tasks that share memory system resources, such as caches, to be
isolated from each other according to the partitioning policy (so called noisy
neighbours).

Supported Platforms
===================
Use of this feature requires CPU support, support in the memory system
components, and a description from firmware of where the MPAM device controls
are in the MMIO address space. (e.g. the 'MPAM' ACPI table).

The MMIO device that provides MPAM controls/monitors for a memory system
component is called a memory system component. (MSC).

Because the user interface to MPAM is via resctrl, only MPAM features that are
compatible with resctrl can be exposed to user-space.

MSC are considered as a group based on the topology. MSC that correspond with
the L3 cache are considered together, it is not possible to mix MSC between L2
and L3 to 'cover' a resctrl schema.

The supported features are:

* Cache portion bitmap controls (CPOR) on the L2 or L3 caches. To expose
CPOR at L2 or L3, every CPU must have a corresponding CPU cache at this
level that also supports the feature. Mismatched big/little platforms are
not supported as resctrl's controls would then also depend on task
placement.

* Memory bandwidth maximum controls (MBW_MAX) on or after the L3 cache.
resctrl uses the L3 cache-id to identify where the memory bandwidth
control is applied. For this reason the platform must have an L3 cache
with cache-id's supplied by firmware. (It doesn't need to support MPAM.)

To be exported as the 'MB' schema, the topology of the group of MSC chosen
must match the topology of the L3 cache so that the cache-id's can be
repainted. For example: Platforms with Memory bandwidth maximum controls
on CPU-less NUMA nodes cannot expose the 'MB' schema to resctrl as these
nodes do not have a corresponding L3 cache. If the memory bandwidth
control is on the memory rather than the L3 then there must be a single
global L3 as otherwise it is unknown which L3 the traffic came from. There
must be no caches between the L3 and the memory so that the two ends of
the path have equivalent traffic.

When the MPAM driver finds multiple groups of MSC it can use for the 'MB'
schema, it prefers the group closest to the L3 cache.

* Cache Storage Usage (CSU) counters can expose the 'llc_occupancy' provided
there is at least one CSU monitor on each MSC that makes up the L3 group.
Exposing CSU counters from other caches or devices is not supported.

Reporting Bugs
==============
If you are not seeing the counters or controls you expect please share the
debug messages produced when enabling dynamic debug and booting with:
dyndbg="file mpam_resctrl.c +pl"
8 changes: 8 additions & 0 deletions Documentation/arch/arm64/silicon-errata.rst
Original file line number Diff line number Diff line change
Expand Up @@ -242,6 +242,8 @@ stable kernels.
+----------------+-----------------+-----------------+-----------------------------+
| ARM | GIC-700 | #2941627 | ARM64_ERRATUM_2941627 |
+----------------+-----------------+-----------------+-----------------------------+
| ARM | CMN-650 | #3642720 | N/A |
+----------------+-----------------+-----------------+-----------------------------+
+----------------+-----------------+-----------------+-----------------------------+
| Broadcom | Brahma-B53 | N/A | ARM64_ERRATUM_845719 |
+----------------+-----------------+-----------------+-----------------------------+
Expand Down Expand Up @@ -278,6 +280,12 @@ stable kernels.
+----------------+-----------------+-----------------+-----------------------------+
| NVIDIA | T241 GICv3/4.x | T241-FABRIC-4 | N/A |
+----------------+-----------------+-----------------+-----------------------------+
| NVIDIA | T241 MPAM | T241-MPAM-1 | N/A |
+----------------+-----------------+-----------------+-----------------------------+
| NVIDIA | T241 MPAM | T241-MPAM-4 | N/A |
+----------------+-----------------+-----------------+-----------------------------+
| NVIDIA | T241 MPAM | T241-MPAM-6 | N/A |
+----------------+-----------------+-----------------+-----------------------------+
+----------------+-----------------+-----------------+-----------------------------+
| Freescale/NXP | LS2080A/LS1043A | A-008585 | FSL_ERRATUM_A008585 |
+----------------+-----------------+-----------------+-----------------------------+
Expand Down
1 change: 0 additions & 1 deletion Documentation/arch/x86/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,6 @@ x86-specific Documentation
pti
mds
microcode
resctrl
tsx_async_abort
buslock
usb-legacy-support
Expand Down
227 changes: 0 additions & 227 deletions Documentation/devicetree/bindings/arm/arm,mpam-msc.yaml

This file was deleted.

1 change: 1 addition & 0 deletions Documentation/filesystems/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -109,6 +109,7 @@ Documentation for filesystem implementations.
qnx6
ramfs-rootfs-initramfs
relay
resctrl
romfs
smb/index
spufs/index
Expand Down
14 changes: 13 additions & 1 deletion MAINTAINERS
Original file line number Diff line number Diff line change
Expand Up @@ -14523,6 +14523,16 @@ S: Maintained
F: Documentation/driver-api/tty/moxa-smartio.rst
F: drivers/tty/mxser.*

MPAM DRIVER
M: James Morse <james.morse@arm.com>
M: Ben Horgan <ben.horgan@arm.com>
R: Reinette Chatre <reinette.chatre@intel.com>
R: Fenghua Yu <fenghuay@nvidia.com>
S: Maintained
F: drivers/resctrl/mpam_*
F: drivers/resctrl/test_mpam_*
F: include/linux/arm_mpam.h

MR800 AVERMEDIA USB FM RADIO DRIVER
M: Alexey Klimov <klimov.linux@gmail.com>
L: linux-media@vger.kernel.org
Expand Down Expand Up @@ -18108,9 +18118,11 @@ M: Fenghua Yu <fenghua.yu@intel.com>
M: Reinette Chatre <reinette.chatre@intel.com>
L: linux-kernel@vger.kernel.org
S: Supported
F: Documentation/arch/x86/resctrl*
F: Documentation/filesystems/resctrl.rst
F: arch/x86/include/asm/resctrl.h
F: arch/x86/kernel/cpu/resctrl/
F: fs/resctrl/
F: include/linux/resctrl*.h
F: tools/testing/selftests/resctrl/

READ-COPY UPDATE (RCU)
Expand Down
8 changes: 4 additions & 4 deletions arch/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -1339,10 +1339,10 @@ config ARCH_HAS_PHYS_TO_DMA
config ARCH_HAS_CPU_RESCTRL
bool
help
The 'resctrl' filesystem allows cpu controls of shared resources
such as caches and memory bandwidth to be configured. An architecture
selects this if it provides the arch-specific hooks for the filesystem
and needs the per-task closid/rmid properties.
An architecture selects this option to indicate that the necessary
hooks are provided to support the common memory system usage
monitoring and control interfaces provided by the 'resctrl'
filesystem (see RESCTRL_FS).

config HAVE_ARCH_COMPILER_H
bool
Expand Down
Loading