Re: [RFC PATCH 0/7] arm_mpam: Add L2 cache monitors

From: Jinjie Ruan

Date: Wed Oct 28 2026 - 02:51:08 EST




在 2026/10/26 19:46, Ben Horgan 写道:
> Hi Jinjie,
>
> On 22/10/2026 09:48, Jinjie Ruan wrote:
>> MPAM resource monitors hang off a partitionable resource in an MSC, not
>> off a particular cache level. resctrl only knows about the L3 scope, so
>> the L2 cache monitors that MPAM platforms implement are discovered by
>> the driver but never show up in resctrl.
>
> Yes, it would be good to add support for more monitoring scopes. This is not just relevant for MPAM.
> RISC-V can also have monitors at many places in the system and we should coordinate so we have a
> uniform solution across architectures.

Hi Ben,

Agree, we should take other emerging architectures such as RISC-V into
account, design a more extensible solution.

>
>>
>> An L2 MSC has the same CSU and MBWU counters as an L3 MSC; the cache
>> level comes from the ACPI MPAM table's cache locator. So this is mostly
>> a resctrl scope problem, not a hardware one.
>>
>> Extend resctrl's monitor scope to L2: register the L2 occupancy and
>> bandwidth events against the L2 resource, pick the L2 classes for them,
>> and borrow a CSU/MBWU monitor for the duration of a read. With CDP the
>
> Borrowing an MBWU monitor doesn't sound right. The MBWU monitor needs to be configured while the
> traffic is happening so that it can keep count of bytes. The CSU is different as it can measure the
> occupancy without having to keep any state.

Thank you very much, will drop this approach and try the compatible
solution you suggested.

>
> Thanks,
>
> Ben
>
>> two PARTIDs need separate accumulating monitors, so the borrowed-monitor
>> context becomes one monitor per PARTID.
>>
>> Patches:
>>
>> 1-2 Generalise the per-domain read path, add l2c_occupancy and
>> mbm_core_bytes, update the documentation.
>>
>> 3 Split the borrowed-monitor context into data and code entries.
>>
>> 4 Do the CDP num_rmid halving for every mon_capable resource.
>>
>> 5-7 Pick the L2 classes, describe the events with the L2 resource,
>> add the read paths.
>>
>> Tested on QEMU with an L2/L3/memory-controller MSC topology. The L2_MON
>> files show up and are readable; l2c_occupancy reports the modelled
>> occupancy, and mbm_core_bytes reports the modelled bandwidth.
>>
>> QEMU branch: https://github.com/ruanjinjie-eng/qemu/tree/mpam
>> Test cases: https://github.com/ruanjinjie-eng/mpam_testcase
>>
>> Jinjie Ruan (7):
>> fs/resctrl: Generalize __l3_mon_event_count for non-L3 resources
>> fs/resctrl: Add the L2 monitor events
>> arm_mpam: resctrl: Split monitor context for code/data
>> arm_mpam: resctrl: Halve num_rmid for every mon_capable resource on
>> CDP
>> arm_mpam: resctrl: Describe the L2 monitor events with the L2 resource
>> arm_mpam: resctrl: Pick L2 classes for the L2 monitor events
>> arm_mpam: resctrl: Add the L2 monitor read paths
>>
>> Documentation/arch/arm64/mpam.rst | 23 +--
>> drivers/resctrl/mpam_resctrl.c | 236 +++++++++++++++++++++++-------
>> fs/resctrl/monitor.c | 15 +-
>> include/linux/resctrl_types.h | 13 +-
>> 4 files changed, 222 insertions(+), 65 deletions(-)
>>
>

--
Best regards,
Jinjie