Re: [PATCH v6 00/40] arm_mpam: Add KVM/arm64 and resctrl glue code
From: Gavin Shan
Date: Mon Mar 23 2026 - 00:42:04 EST
On 3/14/26 12:45 AM, Ben Horgan wrote:
This version of the mpam missing pieces series sees a couple of things
dropped or hidden. Memory bandwith utilization with free-running counters
is dropped in preference of just always using 'mbm_event' mode (ABMC
emulation) which simplifies the code and allows for, in the future,
filtering by read/write traffic. So, for the interim, there is no memory
bandwidth utilization support. CDP is hidden behind config expert as
remount of resctrl fs could potentially lead to out of range PARTIDs being
used and the fix requires a change in fs/resctrl. The setting of MPAM2_EL2
(for pkvm/nvhe) is dropped as too expensive a write for not much value.
There are a couple of 'fixes' at the start of the series which address
problems in the base driver but are only user visible due to this series.
Changelogs in patches
Thanks for all the reviewing and testing so far. Just a bit more to get this
over the line.
There is a small build conflict with the MPAM abmc precursors series [1], which
alters some of the resctrl arch hooks. I will shortly be posting a respin
of that too.
[1] https://lore.kernel.org/lkml/20260225201905.3568624-1-ben.horgan@xxxxxxx/
From James' cover letter:
This is the missing piece to make MPAM usable resctrl in user-space. This has
shed its debugfs code and the read/write 'event configuration' for the monitors
to make the series smaller.
This adds the arch code and KVM support first. I anticipate the whole thing
going via arm64, but if goes via tip instead, the an immutable branch with those
patches should be easy to do.
Generally the resctrl glue code works by picking what MPAM features it can expose
from the MPAM drive, then configuring the structs that back the resctrl helpers.
If your platform is sufficiently Xeon shaped, you should be able to get L2/L3 CPOR
bitmaps exposed via resctrl. CSU counters work if they are on/after the L3. MBWU
counters are considerably more hairy, and depend on hueristics around the topology,
and a bunch of stuff trying to emulate ABMC.
If it didn't pick what you wanted it to, please share the debug messages produced
when enabling dynamic debug and booting with:
| dyndbg="file mpam_resctrl.c +pl"
I've not found a platform that can test all the behaviours around the monitors,
so this is where I'd expect the most bugs.
The MPAM spec that describes all the system and MMIO registers can be found here:
https://developer.arm.com/documentation/ddi0598/db/?lang=en
(Ignored the 'RETIRED' warning - that is just arm moving the documentation around.
This document has the best overview)
Based on v7.0-rc3
The series can be retrieved from:
https://gitlab.arm.com/linux-arm/linux-bh.git mpam_resctrl_glue_v6
[...]
Retested this series on NVidia's grace-hopper machine where L3 cache partitioning
and MBW (soft) limiting worked as expected. Besides, The L3 cache monitor counters
are increased as more cache usage is observed.
Tested-by: Gavin Shan <gshan@xxxxxxxxxx>
Thanks,
Gavin