[PATCH v6 00/34] arm_mpam: Add basic mpam driver

Ben Horgan posted 34 patches 2 months, 2 weeks ago
MAINTAINERS                         |   10 +
arch/arm64/Kconfig                  |   25 +
drivers/Kconfig                     |    2 +
drivers/Makefile                    |    1 +
drivers/acpi/arm64/Kconfig          |    3 +
drivers/acpi/arm64/Makefile         |    1 +
drivers/acpi/arm64/mpam.c           |  411 ++++
drivers/acpi/pptt.c                 |  280 ++-
drivers/acpi/tables.c               |    2 +-
drivers/resctrl/Kconfig             |   24 +
drivers/resctrl/Makefile            |    4 +
drivers/resctrl/mpam_devices.c      | 2723 +++++++++++++++++++++++++++
drivers/resctrl/mpam_internal.h     |  658 +++++++
drivers/resctrl/test_mpam_devices.c |  389 ++++
include/linux/acpi.h                |   26 +
include/linux/arm_mpam.h            |   66 +
include/linux/platform_device.h     |    1 +
17 files changed, 4608 insertions(+), 18 deletions(-)
create mode 100644 drivers/acpi/arm64/mpam.c
create mode 100644 drivers/resctrl/Kconfig
create mode 100644 drivers/resctrl/Makefile
create mode 100644 drivers/resctrl/mpam_devices.c
create mode 100644 drivers/resctrl/mpam_internal.h
create mode 100644 drivers/resctrl/test_mpam_devices.c
create mode 100644 include/linux/arm_mpam.h
[PATCH v6 00/34] arm_mpam: Add basic mpam driver
Posted by Ben Horgan 2 months, 2 weeks ago
Hi all,

Just a handful of minor changes based on v5 review comments. See individual
patches for change lgos. I haven't asked James to host any branches for this
revision but please let me know if this would be helpful to anyone. Thanks for
all the help with reviews and testing.

Previous cover letter from James:

This is just enough MPAM driver for ACPI. DT got ripped out. If you need DT
support - please share your DTS so the DT folk know the binding is what is
needed.
This doesn't contain any of the resctrl code, meaning you can't actually drive it
from user-space yet. Because of that, its hidden behind CONFIG_EXPERT.
This will change once the user interface is connected up.

This is the initial group of patches that allows the resctrl code to be built
on top. Including that will increase the number of trees that may need to
coordinate, so breaking it up make sense.

The locking got simplified, but is still strange - this is because of the 'mpam-fb'
firmware interface specification that is still alpha. That thing needs to wait for
an interrupt after every system register write, which significantly impacts the
driver. Some features just won't work, e.g. reading the monitor registers via
perf.

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)

The expectation is this will go via the arm64 tree.

This series is based on v6.18-rc4, and can be retrieved from: (no v6 version)
https://git.kernel.org/pub/scm/linux/kernel/git/morse/linux.git mpam/driver/v5

The rest of the driver can be found here: (no v6 version)
https://git.kernel.org/pub/scm/linux/kernel/git/morse/linux.git mpam/snapshot/v6.18-rc4-v5

What is MPAM? Set your time-machine to 2020:
https://lore.kernel.org/lkml/20201030161120.227225-1-james.morse@arm.com/

Ben Horgan (5):
  ACPI / PPTT: Add acpi_pptt_cache_v1_full to use pptt cache as one
    structure
  platform: Define platform_device_put cleanup handler
  ACPI: Define acpi_put_table cleanup handler and
    acpi_get_table_pointer() helper
  arm_mpam: Consider overflow in bandwidth counter state
  MAINTAINERS: new entry for MPAM Driver

James Morse (27):
  ACPI / PPTT: Add a helper to fill a cpumask from a processor container
  ACPI / PPTT: Stop acpi_count_levels() expecting callers to clear
    levels
  ACPI / PPTT: Find cache level by cache-id
  ACPI / PPTT: Add a helper to fill a cpumask from a cache_id
  arm64: kconfig: Add Kconfig entry for MPAM
  ACPI / MPAM: Parse the MPAM table
  arm_mpam: Add probe/remove for mpam msc driver and kbuild boiler plate
  arm_mpam: Add the class and component structures for firmware
    described ris
  arm_mpam: Add MPAM MSC register layout definitions
  arm_mpam: Add cpuhp callbacks to probe MSC hardware
  arm_mpam: Probe hardware to find the supported partid/pmg values
  arm_mpam: Add helpers for managing the locking around the mon_sel
    registers
  arm_mpam: Probe the hardware features resctrl supports
  arm_mpam: Merge supported features during mpam_enable() into
    mpam_class
  arm_mpam: Reset MSC controls from cpuhp callbacks
  arm_mpam: Add a helper to touch an MSC from any CPU
  arm_mpam: Extend reset logic to allow devices to be reset any time
  arm_mpam: Register and enable IRQs
  arm_mpam: Use a static key to indicate when mpam is enabled
  arm_mpam: Allow configuration to be applied and restored during cpu
    online
  arm_mpam: Probe and reset the rest of the features
  arm_mpam: Add helpers to allocate monitors
  arm_mpam: Add mpam_msmon_read() to read monitor value
  arm_mpam: Track bandwidth counter state for power management
  arm_mpam: Add helper to reset saved mbwu state
  arm_mpam: Add kunit test for bitmap reset
  arm_mpam: Add kunit tests for props_mismatch()

Rohit Mathew (2):
  arm_mpam: Probe for long/lwd mbwu counters
  arm_mpam: Use long MBWU counters if supported

 MAINTAINERS                         |   10 +
 arch/arm64/Kconfig                  |   25 +
 drivers/Kconfig                     |    2 +
 drivers/Makefile                    |    1 +
 drivers/acpi/arm64/Kconfig          |    3 +
 drivers/acpi/arm64/Makefile         |    1 +
 drivers/acpi/arm64/mpam.c           |  411 ++++
 drivers/acpi/pptt.c                 |  280 ++-
 drivers/acpi/tables.c               |    2 +-
 drivers/resctrl/Kconfig             |   24 +
 drivers/resctrl/Makefile            |    4 +
 drivers/resctrl/mpam_devices.c      | 2723 +++++++++++++++++++++++++++
 drivers/resctrl/mpam_internal.h     |  658 +++++++
 drivers/resctrl/test_mpam_devices.c |  389 ++++
 include/linux/acpi.h                |   26 +
 include/linux/arm_mpam.h            |   66 +
 include/linux/platform_device.h     |    1 +
 17 files changed, 4608 insertions(+), 18 deletions(-)
 create mode 100644 drivers/acpi/arm64/mpam.c
 create mode 100644 drivers/resctrl/Kconfig
 create mode 100644 drivers/resctrl/Makefile
 create mode 100644 drivers/resctrl/mpam_devices.c
 create mode 100644 drivers/resctrl/mpam_internal.h
 create mode 100644 drivers/resctrl/test_mpam_devices.c
 create mode 100644 include/linux/arm_mpam.h

-- 
2.43.0
Re: [PATCH v6 00/34] arm_mpam: Add basic mpam driver
Posted by Punit Agrawal 2 months, 2 weeks ago
Hi Ben, James

Ben Horgan <ben.horgan@arm.com> writes:

> Hi all,
>
> Just a handful of minor changes based on v5 review comments. See individual
> patches for change lgos. I haven't asked James to host any branches for this
> revision but please let me know if this would be helpful to anyone. Thanks for
> all the help with reviews and testing.
>
> Previous cover letter from James:
>
> This is just enough MPAM driver for ACPI. DT got ripped out. If you need DT
> support - please share your DTS so the DT folk know the binding is what is
> needed.
> This doesn't contain any of the resctrl code, meaning you can't actually drive it
> from user-space yet. Because of that, its hidden behind CONFIG_EXPERT.
> This will change once the user interface is connected up.
>
> This is the initial group of patches that allows the resctrl code to be built
> on top. Including that will increase the number of trees that may need to
> coordinate, so breaking it up make sense.
>
> The locking got simplified, but is still strange - this is because of the 'mpam-fb'
> firmware interface specification that is still alpha. That thing needs to wait for
> an interrupt after every system register write, which significantly impacts the
> driver. Some features just won't work, e.g. reading the monitor registers via
> perf.
>
> 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)
>
> The expectation is this will go via the arm64 tree.
>
> This series is based on v6.18-rc4, and can be retrieved from: (no v6 version)
> https://git.kernel.org/pub/scm/linux/kernel/git/morse/linux.git mpam/driver/v5
>
> The rest of the driver can be found here: (no v6 version)
> https://git.kernel.org/pub/scm/linux/kernel/git/morse/linux.git mpam/snapshot/v6.18-rc4-v5
>
> What is MPAM? Set your time-machine to 2020:
> https://lore.kernel.org/lkml/20201030161120.227225-1-james.morse@arm.com/

Although a little late to the party, I've managed to throw together
enough firmware to describe the MPAM hardware and take this set (more
specifically mpam/snapshot/v6.18-rc4-v5 branch from James' repository)
for a spin. Using the branch, the kernel is able to probe the hardware
and discover the advertised features. Yay! We are in business.

Having said that, there are a few quirks of the platform that run into
issues with later patches in the branch. The platform has MSCs attached
to shared L2 caches which are being skipped during later stages of
initialisation. IIUC, the L2 MSCs' limitations stems from the
assumptions in the resctrl interface.

I was wondering if there are any patches available to relax these
limitations? I can give them a try. Or do these need to be put together
from the ground up? Any pointers greatly appreciated.

Thanks,
Punit

[...]
Re: [PATCH v6 00/34] arm_mpam: Add basic mpam driver
Posted by Ben Horgan 2 months, 1 week ago
Hi Punit,

On 11/24/25 15:21, Punit Agrawal wrote:
> Hi Ben, James
> 
> Ben Horgan <ben.horgan@arm.com> writes:
> 
>>
>> This series is based on v6.18-rc4, and can be retrieved from: (no v6 version)
>> https://git.kernel.org/pub/scm/linux/kernel/git/morse/linux.git mpam/driver/v5
>>
>> The rest of the driver can be found here: (no v6 version)
>> https://git.kernel.org/pub/scm/linux/kernel/git/morse/linux.git mpam/snapshot/v6.18-rc4-v5
>>
>> What is MPAM? Set your time-machine to 2020:
>> https://lore.kernel.org/lkml/20201030161120.227225-1-james.morse@arm.com/
> 
> Although a little late to the party, I've managed to throw together
> enough firmware to describe the MPAM hardware and take this set (more
> specifically mpam/snapshot/v6.18-rc4-v5 branch from James' repository)
> for a spin. Using the branch, the kernel is able to probe the hardware
> and discover the advertised features. Yay! We are in business.

Thanks for giving it a go. :)

> 
> Having said that, there are a few quirks of the platform that run into
> issues with later patches in the branch. The platform has MSCs attached
> to shared L2 caches which are being skipped during later stages of
> initialisation. IIUC, the L2 MSCs' limitations stems from the
> assumptions in the resctrl interface.

What in particualar is being skipped?

> 
> I was wondering if there are any patches available to relax these
> limitations? I can give them a try. Or do these need to be put together
> from the ground up? Any pointers greatly appreciated.

There are some extra things added in the extras branch [1] e.g. cache
maximum usage controls (cmax). However, lots of possible things are
still missing e.g. any monitors on L2. If it doesn't fit with the
topology expected by resctrl then it is unlikely to have been considered
yet.

[1]
https://git.kernel.org/pub/scm/linux/kernel/git/morse/linux.git/log/?h=mpam/snapshot%2bextras/v6.18-rc1

Thanks,

Ben
Re: [PATCH v6 00/34] arm_mpam: Add basic mpam driver
Posted by Punit Agrawal 2 months ago
Hi Ben,

Thanks for getting back.

Ben Horgan <ben.horgan@arm.com> writes:

> Hi Punit,
>
> On 11/24/25 15:21, Punit Agrawal wrote:
>> Hi Ben, James
>> 
>> Ben Horgan <ben.horgan@arm.com> writes:
>> 
>>>
>>> This series is based on v6.18-rc4, and can be retrieved from: (no v6 version)
>>> https://git.kernel.org/pub/scm/linux/kernel/git/morse/linux.git mpam/driver/v5
>>>
>>> The rest of the driver can be found here: (no v6 version)
>>> https://git.kernel.org/pub/scm/linux/kernel/git/morse/linux.git mpam/snapshot/v6.18-rc4-v5
>>>
>>> What is MPAM? Set your time-machine to 2020:
>>> https://lore.kernel.org/lkml/20201030161120.227225-1-james.morse@arm.com/
>> 
>> Although a little late to the party, I've managed to throw together
>> enough firmware to describe the MPAM hardware and take this set (more
>> specifically mpam/snapshot/v6.18-rc4-v5 branch from James' repository)
>> for a spin. Using the branch, the kernel is able to probe the hardware
>> and discover the advertised features. Yay! We are in business.
>
> Thanks for giving it a go. :)
>
>> 
>> Having said that, there are a few quirks of the platform that run into
>> issues with later patches in the branch. The platform has MSCs attached
>> to shared L2 caches which are being skipped during later stages of
>> initialisation. IIUC, the L2 MSCs' limitations stems from the
>> assumptions in the resctrl interface.
>
> What in particualar is being skipped?

The registration of the discovered MSCs with resctrl and subsequent
exposing it to the user.

>> I was wondering if there are any patches available to relax these
>> limitations? I can give them a try. Or do these need to be put together
>> from the ground up? Any pointers greatly appreciated.
>
> There are some extra things added in the extras branch [1] e.g. cache
> maximum usage controls (cmax). However, lots of possible things are
> still missing e.g. any monitors on L2. If it doesn't fit with the
> topology expected by resctrl then it is unlikely to have been considered
> yet.

Thanks for the pointer. I'll give the snapshot+extras branch[1] a try.

The platform does have both controls and monitors attached to L2. If
this isn't being looked at, I can try and put something together. Thanks
for confirming that the limitation is likely due to resctrl.

Looking forward to the next set of MPAM support landing.

> [1] https://git.kernel.org/pub/scm/linux/kernel/git/morse/linux.git/log/?h=mpam/snapshot%2bextras/v6.18-rc1

[...]
Re: [PATCH v6 00/34] arm_mpam: Add basic mpam driver
Posted by James Morse 2 months ago
Hi Punit,

On 03/12/2025 11:21, Punit Agrawal wrote:
> Ben Horgan <ben.horgan@arm.com> writes:
>> On 11/24/25 15:21, Punit Agrawal wrote:
>>> Although a little late to the party,

There was a party?!


>>> I've managed to throw together
>>> enough firmware to describe the MPAM hardware and take this set (more
>>> specifically mpam/snapshot/v6.18-rc4-v5 branch from James' repository)
>>> for a spin. Using the branch, the kernel is able to probe the hardware
>>> and discover the advertised features. Yay! We are in business.
>>
>> Thanks for giving it a go. :)
>>
>>>
>>> Having said that, there are a few quirks of the platform that run into
>>> issues with later patches in the branch.

So something in the resctrl support code is causing this.
Any idea which patch causes this to happen?

There are a load of pr_debug() in the picking logic, if you enable DYNDEBUG and add:
| dyndbg="file mpam_resctrl.c +pl"

to the commandline, you should get some snotty messages about what non-Xeon-like property
your platform has.



>>> The platform has MSCs attached
>>> to shared L2 caches which are being skipped during later stages of
>>> initialisation. IIUC, the L2 MSCs' limitations stems from the
>>> assumptions in the resctrl interface.
>>
>> What in particualar is being skipped?

> The registration of the discovered MSCs with resctrl and subsequent
> exposing it to the user.

resctrl's 'L2' support is limited to the CPOR bitmap.
If you have controls, there is no resctrl 'event' that can exposed them.
(the problem being they all have 'L3' in the name!)


>>> I was wondering if there are any patches available to relax these
>>> limitations?

Knowing which property it is will help - but some of these things are checked
to match resctrl's ABI. They can't necessarily be relaxed without breaking
user-space.

Others are sanity checks, e.g. all CPUs are represented. This is to avoid tasks
that run on cpu-9 escaping the resctrl controls. Platforms that did this may as
well not bother with resctrl at all.


>>> I can give them a try. Or do these need to be put together
>>> from the ground up? Any pointers greatly appreciated.
>>
>> There are some extra things added in the extras branch [1] e.g. cache
>> maximum usage controls (cmax). However, lots of possible things are
>> still missing e.g. any monitors on L2. If it doesn't fit with the
>> topology expected by resctrl then it is unlikely to have been considered
>> yet.
> 
> Thanks for the pointer. I'll give the snapshot+extras branch[1] a try.
> 
> The platform does have both controls and monitors attached to L2. If
> this isn't being looked at, I can try and put something together. Thanks
> for confirming that the limitation is likely due to resctrl.

My view on 'extra' counters is to try and expose them via perf, as this would also
allow platform specific counters. I worry that if we start adding 'easy' ones like
l2_mbm_total to resctrl, someone will want left_hand_side_of_soc_mbm_total.


Thanks,

James
Re: [PATCH v6 00/34] arm_mpam: Add basic mpam driver
Posted by Punit Agrawal 2 months ago
James Morse <james.morse@arm.com> writes:

> Hi Punit,
>
> On 03/12/2025 11:21, Punit Agrawal wrote:
>> Ben Horgan <ben.horgan@arm.com> writes:
>>> On 11/24/25 15:21, Punit Agrawal wrote:
>>>> Although a little late to the party,
>
> There was a party?!
>
>
>>>> I've managed to throw together
>>>> enough firmware to describe the MPAM hardware and take this set (more
>>>> specifically mpam/snapshot/v6.18-rc4-v5 branch from James' repository)
>>>> for a spin. Using the branch, the kernel is able to probe the hardware
>>>> and discover the advertised features. Yay! We are in business.
>>>
>>> Thanks for giving it a go. :)
>>>
>>>>
>>>> Having said that, there are a few quirks of the platform that run into
>>>> issues with later patches in the branch.
>
> So something in the resctrl support code is causing this.
> Any idea which patch causes this to happen?
>
> There are a load of pr_debug() in the picking logic, if you enable DYNDEBUG and add:
> | dyndbg="file mpam_resctrl.c +pl"
>
> to the commandline, you should get some snotty messages about what non-Xeon-like property
> your platform has.

Thanks - I've got this enabled.

The platform looks very different to a Xeon. One notable difference
being a shared L2. Hence all the MSCs attached there.

>>>> The platform has MSCs attached
>>>> to shared L2 caches which are being skipped during later stages of
>>>> initialisation. IIUC, the L2 MSCs' limitations stems from the
>>>> assumptions in the resctrl interface.
>>>
>>> What in particualar is being skipped?
>
>> The registration of the discovered MSCs with resctrl and subsequent
>> exposing it to the user.
>
> resctrl's 'L2' support is limited to the CPOR bitmap.
> If you have controls, there is no resctrl 'event' that can exposed them.
> (the problem being they all have 'L3' in the name!)

>>>> I was wondering if there are any patches available to relax these
>>>> limitations?

> Knowing which property it is will help - but some of these things are checked
> to match resctrl's ABI. They can't necessarily be relaxed without breaking
> user-space.

This platform has portion, capacity and priority partitioning, as well
as memory bandwidth and cache storage monitoring. The MPAM code seems to
correctly parse the properties.

But as you point out, the resctrl 'L2' support doesn't have anything
other than CPOR bitmap yet. Have you looked at what's needed to extend
resctrl to support some of the others?

> Others are sanity checks, e.g. all CPUs are represented. This is to avoid tasks
> that run on cpu-9 escaping the resctrl controls. Platforms that did this may as
> well not bother with resctrl at all.
>
>
>>>> I can give them a try. Or do these need to be put together
>>>> from the ground up? Any pointers greatly appreciated.
>>>
>>> There are some extra things added in the extras branch [1] e.g. cache
>>> maximum usage controls (cmax). However, lots of possible things are
>>> still missing e.g. any monitors on L2. If it doesn't fit with the
>>> topology expected by resctrl then it is unlikely to have been considered
>>> yet.
>> 
>> Thanks for the pointer. I'll give the snapshot+extras branch[1] a try.
>> 
>> The platform does have both controls and monitors attached to L2. If
>> this isn't being looked at, I can try and put something together. Thanks
>> for confirming that the limitation is likely due to resctrl.
>
> My view on 'extra' counters is to try and expose them via perf, as this would also
> allow platform specific counters. I worry that if we start adding 'easy' ones like
> l2_mbm_total to resctrl, someone will want
> left_hand_side_of_soc_mbm_total.

I wouldn't club L2 in the same category as 'left_hand_side_of_soc'. You
call it 'easy' for a reason. L2 is pretty well understood and resctrl
already exposes an interface for it. I would avoid creating a new
interface for users.

For some of the other boundaries, things like 'left_hand_side_of_soc' I
wonder if firmware provided topology (e.g., PPTT, SRAT, etc) could be
used to make even this work.
Re: [PATCH v6 00/34] arm_mpam: Add basic mpam driver
Posted by Reinette Chatre 2 months ago
Hi Punit,

On 12/5/25 5:08 AM, Punit Agrawal wrote:
> James Morse <james.morse@arm.com> writes:
>> On 03/12/2025 11:21, Punit Agrawal wrote:
>>> Ben Horgan <ben.horgan@arm.com> writes:
>>>> On 11/24/25 15:21, Punit Agrawal wrote:

>>>>> The platform has MSCs attached
>>>>> to shared L2 caches which are being skipped during later stages of
>>>>> initialisation. IIUC, the L2 MSCs' limitations stems from the
>>>>> assumptions in the resctrl interface.
>>>>
>>>> What in particualar is being skipped?
>>
>>> The registration of the discovered MSCs with resctrl and subsequent
>>> exposing it to the user.
>>
>> resctrl's 'L2' support is limited to the CPOR bitmap.
>> If you have controls, there is no resctrl 'event' that can exposed them.
>> (the problem being they all have 'L3' in the name!)
> 
>>>>> I was wondering if there are any patches available to relax these
>>>>> limitations?
> 
>> Knowing which property it is will help - but some of these things are checked
>> to match resctrl's ABI. They can't necessarily be relaxed without breaking
>> user-space.
> 
> This platform has portion, capacity and priority partitioning, as well
> as memory bandwidth and cache storage monitoring. The MPAM code seems to
> correctly parse the properties.
> 
> But as you point out, the resctrl 'L2' support doesn't have anything
> other than CPOR bitmap yet. Have you looked at what's needed to extend
> resctrl to support some of the others?

Please see [1] for a summary of ideas on how resctrl can support multiple
controls. Nothing is final, please do add your ideas and requirements.

There are a couple of opens not included in the summary. If interested
[2] is where a lot of discussion happened that prompted the need for
a summary.

Reinette

[1] https://lore.kernel.org/lkml/aPtfMFfLV1l%2FRB0L@e133380.arm.com/
[2] https://lore.kernel.org/lkml/aNFliMZTTUiXyZzd@e133380.arm.com/
Re: [PATCH v6 00/34] arm_mpam: Add basic mpam driver
Posted by Punit Agrawal 2 months ago
Hi Reinette,

Reinette Chatre <reinette.chatre@intel.com> writes:

> Hi Punit,
>
> On 12/5/25 5:08 AM, Punit Agrawal wrote:
>> James Morse <james.morse@arm.com> writes:
>>> On 03/12/2025 11:21, Punit Agrawal wrote:
>>>> Ben Horgan <ben.horgan@arm.com> writes:
>>>>> On 11/24/25 15:21, Punit Agrawal wrote:
>
>>>>>> The platform has MSCs attached
>>>>>> to shared L2 caches which are being skipped during later stages of
>>>>>> initialisation. IIUC, the L2 MSCs' limitations stems from the
>>>>>> assumptions in the resctrl interface.
>>>>>
>>>>> What in particualar is being skipped?
>>>
>>>> The registration of the discovered MSCs with resctrl and subsequent
>>>> exposing it to the user.
>>>
>>> resctrl's 'L2' support is limited to the CPOR bitmap.
>>> If you have controls, there is no resctrl 'event' that can exposed them.
>>> (the problem being they all have 'L3' in the name!)
>> 
>>>>>> I was wondering if there are any patches available to relax these
>>>>>> limitations?
>> 
>>> Knowing which property it is will help - but some of these things are checked
>>> to match resctrl's ABI. They can't necessarily be relaxed without breaking
>>> user-space.
>> 
>> This platform has portion, capacity and priority partitioning, as well
>> as memory bandwidth and cache storage monitoring. The MPAM code seems to
>> correctly parse the properties.
>> 
>> But as you point out, the resctrl 'L2' support doesn't have anything
>> other than CPOR bitmap yet. Have you looked at what's needed to extend
>> resctrl to support some of the others?
>
> Please see [1] for a summary of ideas on how resctrl can support multiple
> controls. Nothing is final, please do add your ideas and requirements.
>
> There are a couple of opens not included in the summary. If interested
> [2] is where a lot of discussion happened that prompted the need for
> a summary.

Thanks a lot for the pointers.

Let me catch up with what's already discussed and raise any points that
are not clear / need refining.

>
> Reinette
>
> [1] https://lore.kernel.org/lkml/aPtfMFfLV1l%2FRB0L@e133380.arm.com/
> [2] https://lore.kernel.org/lkml/aNFliMZTTUiXyZzd@e133380.arm.com/
Re: [PATCH v6 00/34] arm_mpam: Add basic mpam driver
Posted by Reinette Chatre 2 months ago
Hi Punit,

On 12/8/25 9:43 AM, Punit Agrawal wrote:
> Hi Reinette,
> 
> Reinette Chatre <reinette.chatre@intel.com> writes:
> 
>> Hi Punit,
>>
>> On 12/5/25 5:08 AM, Punit Agrawal wrote:
>>> James Morse <james.morse@arm.com> writes:
>>>> On 03/12/2025 11:21, Punit Agrawal wrote:
>>>>> Ben Horgan <ben.horgan@arm.com> writes:
>>>>>> On 11/24/25 15:21, Punit Agrawal wrote:
>>
>>>>>>> The platform has MSCs attached
>>>>>>> to shared L2 caches which are being skipped during later stages of
>>>>>>> initialisation. IIUC, the L2 MSCs' limitations stems from the
>>>>>>> assumptions in the resctrl interface.
>>>>>>
>>>>>> What in particualar is being skipped?
>>>>
>>>>> The registration of the discovered MSCs with resctrl and subsequent
>>>>> exposing it to the user.
>>>>
>>>> resctrl's 'L2' support is limited to the CPOR bitmap.
>>>> If you have controls, there is no resctrl 'event' that can exposed them.
>>>> (the problem being they all have 'L3' in the name!)
>>>
>>>>>>> I was wondering if there are any patches available to relax these
>>>>>>> limitations?
>>>
>>>> Knowing which property it is will help - but some of these things are checked
>>>> to match resctrl's ABI. They can't necessarily be relaxed without breaking
>>>> user-space.
>>>
>>> This platform has portion, capacity and priority partitioning, as well
>>> as memory bandwidth and cache storage monitoring. The MPAM code seems to
>>> correctly parse the properties.
>>>
>>> But as you point out, the resctrl 'L2' support doesn't have anything
>>> other than CPOR bitmap yet. Have you looked at what's needed to extend
>>> resctrl to support some of the others?
>>
>> Please see [1] for a summary of ideas on how resctrl can support multiple
>> controls. Nothing is final, please do add your ideas and requirements.
>>
>> There are a couple of opens not included in the summary. If interested
>> [2] is where a lot of discussion happened that prompted the need for
>> a summary.
> 
> Thanks a lot for the pointers.
> 
> Let me catch up with what's already discussed and raise any points that
> are not clear / need refining.

Please do. There are already a few known open issues. I plan to raise awareness
of these discussions (and the (so far known) sticky points still left to resolve) during
the resctrl session at LPC:
https://lpc.events/event/19/contributions/2093/

I am attending LPC remotely though so I hope increased awareness will result in more traffic
to [1] to help us get this right.

Reinette


> 
>>
>> Reinette
>>
>> [1] https://lore.kernel.org/lkml/aPtfMFfLV1l%2FRB0L@e133380.arm.com/
>> [2] https://lore.kernel.org/lkml/aNFliMZTTUiXyZzd@e133380.arm.com/
Re: [PATCH v6 00/34] arm_mpam: Add basic mpam driver
Posted by Catalin Marinas 2 months, 2 weeks ago
From: Catalin Marinas <catalin.marinas@arm.com>

On Wed, 19 Nov 2025 12:22:30 +0000, Ben Horgan wrote:
> Just a handful of minor changes based on v5 review comments. See individual
> patches for change lgos. I haven't asked James to host any branches for this
> revision but please let me know if this would be helpful to anyone. Thanks for
> all the help with reviews and testing.
> 
> Previous cover letter from James:
> 
> [...]

I queued the series on a branch to give it a bit of exposure in -next
for the next 10 days or so. If nothing falls apart, it should go
upstream but there's always a risk of the series being dropped at short
notice. I aim to keep the branch stable and only apply fixups on top if
needed.

Greg, I haven't got any acks from you, I assume you don't have any
objections (please let me know otherwise).

Applied to arm64 (for-next/mpam), thanks!

[01/34] ACPI / PPTT: Add a helper to fill a cpumask from a processor container
        https://git.kernel.org/arm64/c/796e29b857ae
[02/34] ACPI / PPTT: Stop acpi_count_levels() expecting callers to clear levels
        https://git.kernel.org/arm64/c/eeec7845e966
[03/34] ACPI / PPTT: Add acpi_pptt_cache_v1_full to use pptt cache as one structure
        https://git.kernel.org/arm64/c/cfc085af8398
[04/34] ACPI / PPTT: Find cache level by cache-id
        https://git.kernel.org/arm64/c/41a7bb39fede
[05/34] ACPI / PPTT: Add a helper to fill a cpumask from a cache_id
        https://git.kernel.org/arm64/c/a39a723a6f1e
[06/34] arm64: kconfig: Add Kconfig entry for MPAM
        https://git.kernel.org/arm64/c/d8bf01d80919
[07/34] platform: Define platform_device_put cleanup handler
        https://git.kernel.org/arm64/c/f5915600cc4c
[08/34] ACPI: Define acpi_put_table cleanup handler and acpi_get_table_pointer() helper
        https://git.kernel.org/arm64/c/96f4a4d53e66
[09/34] ACPI / MPAM: Parse the MPAM table
        https://git.kernel.org/arm64/c/115c5325beae
[10/34] arm_mpam: Add probe/remove for mpam msc driver and kbuild boiler plate
        https://git.kernel.org/arm64/c/f04046f2577a
[11/34] arm_mpam: Add the class and component structures for firmware described ris
        https://git.kernel.org/arm64/c/01fb4b822472
[12/34] arm_mpam: Add MPAM MSC register layout definitions
        https://git.kernel.org/arm64/c/aa64b9e11051
[13/34] arm_mpam: Add cpuhp callbacks to probe MSC hardware
        https://git.kernel.org/arm64/c/8f8d0ac1da78
[14/34] arm_mpam: Probe hardware to find the supported partid/pmg values
        https://git.kernel.org/arm64/c/bd221f9f82af
[15/34] arm_mpam: Add helpers for managing the locking around the mon_sel registers
        https://git.kernel.org/arm64/c/d02beb06ca2a
[16/34] arm_mpam: Probe the hardware features resctrl supports
        https://git.kernel.org/arm64/c/8c90dc68a5de
[17/34] arm_mpam: Merge supported features during mpam_enable() into mpam_class
        https://git.kernel.org/arm64/c/c10ca83a7783
[18/34] arm_mpam: Reset MSC controls from cpuhp callbacks
        https://git.kernel.org/arm64/c/f188a36ca241
[19/34] arm_mpam: Add a helper to touch an MSC from any CPU
        https://git.kernel.org/arm64/c/475228d15dd6
[20/34] arm_mpam: Extend reset logic to allow devices to be reset any time
        https://git.kernel.org/arm64/c/3bd04fe7d807
[21/34] arm_mpam: Register and enable IRQs
        https://git.kernel.org/arm64/c/49aa621c4dca
[22/34] arm_mpam: Use a static key to indicate when mpam is enabled
        https://git.kernel.org/arm64/c/3796f75aa795
[23/34] arm_mpam: Allow configuration to be applied and restored during cpu online
        https://git.kernel.org/arm64/c/09b89d2a72f3
[24/34] arm_mpam: Probe and reset the rest of the features
        https://git.kernel.org/arm64/c/880df85d8673
[25/34] arm_mpam: Add helpers to allocate monitors
        https://git.kernel.org/arm64/c/c891bae66423
[26/34] arm_mpam: Add mpam_msmon_read() to read monitor value
        https://git.kernel.org/arm64/c/823e7c3712c5
[27/34] arm_mpam: Track bandwidth counter state for power management
        https://git.kernel.org/arm64/c/41e8a14950e1
[28/34] arm_mpam: Consider overflow in bandwidth counter state
        https://git.kernel.org/arm64/c/b35363793291
[29/34] arm_mpam: Probe for long/lwd mbwu counters
        https://git.kernel.org/arm64/c/fdc29a141d63
[30/34] arm_mpam: Use long MBWU counters if supported
        https://git.kernel.org/arm64/c/9e5afb7c3283
[31/34] arm_mpam: Add helper to reset saved mbwu state
        https://git.kernel.org/arm64/c/201d96ca4c86
[32/34] arm_mpam: Add kunit test for bitmap reset
        https://git.kernel.org/arm64/c/e3565d1fd4dc
[33/34] arm_mpam: Add kunit tests for props_mismatch()
        https://git.kernel.org/arm64/c/2557e0eafec1
[34/34] MAINTAINERS: new entry for MPAM Driver
        https://git.kernel.org/arm64/c/ce1e1421f8d8

-- 
Catalin