Re: [PATCH 07/33] arm64: kconfig: Add Kconfig entry for MPAM

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Dave,

On 27/08/2025 12:01, Dave Martin wrote:
> <super-pedantic mode enabled>

Uh oh!

> (Since this likely be people's go-to patch for understanding what MPAM
> is, it is probably worth going the extra mile.)
> 
> On Fri, Aug 22, 2025 at 03:29:48PM +0000, James Morse wrote:
>> The bulk of the MPAM driver lives outside the arch code because it
>> largely manages MMIO devices that generate interrupts. The driver
>> needs a Kconfig symbol to enable it, as MPAM is only found on arm64
> 
> Prefer -> "[...] to enable it. As MPAM is only [...]"
> 
>> platforms, that is where the Kconfig option makes the most sense.
> 
> It could be clearer what "where" refers to, here.

Sure,


> Maybe reword from ", that is [...]" -> ", the arm64 tree is the most
> natural home for the Kconfig option."
> 
> (Or something like that.)

Sure,


>> This Kconfig option will later be used by the arch code to enable
>> or disable the MPAM context-switch code, and registering the CPUs
> 
> Nit: "registering" -> "to register"
> 
>> properties with the MPAM driver.
> 
> Nit: "CPUs properties" -> "properties of CPUs" ?
> 
> (Maybe there was just a missed apostrophe, but it may be more readable
> here if written out longhand.)

Done, it just takes one person to think its clearer!


>> diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig
>> index e9bbfacc35a6..658e47fc0c5a 100644
>> --- a/arch/arm64/Kconfig
>> +++ b/arch/arm64/Kconfig
>> @@ -2060,6 +2060,23 @@ config ARM64_TLB_RANGE
>>  	  ARMv8.4-TLBI provides TLBI invalidation instruction that apply to a
>>  	  range of input addresses.
>>  
>> +config ARM64_MPAM
>> +	bool "Enable support for MPAM"
>> +	help
> 
> <pedantic mode on>
> 
>> +	  Memory Partitioning and Monitoring is an optional extension
>> +	  that allows the CPUs to mark load and store transactions with
> 
> Nit: "memory transactions" ?

Sure,

> (I'm wondering whether there are some transactions such as atomic
> exchanges that are not neatly characterised as "load" or "store".
> Possibly MPAM labels some transactions that really are neither.)

Equally instruction fetch and possibly even CMOs get these labels.
I wanted something other than 'transactions' so it wasn't confused with
transactional memory - and traffic seemed to vauge.

I don't think anyone expects a formal definition in the Kconfig text...


>> +	  labels for partition-id and performance-monitoring-group.
> 
> Nit: the hyphenation suggests that these are known terms (in this
> specific, hyphenated, form) with specific definitions somewhere.
> I don't think that this is the case?  At least, I have not seen the
> terms presented in this way anywhere else.
> 
> Also, the partition ID is itself a label, so "label for partition-id"
> is a tautology.
> 
> How about:
> 
> --8<--
> 
> 	  Memory System Resource Partitioning and Monitoring (MPAM) is an
> 	  optional extension to the Arm architecture that allows each
> 	  transaction issued to the memory system to be labelled with a
> 	  Partition identifier (PARTID) and Performance Monitoring Group
> 	  identifier (PMG).
> 
> -->8--

Done,


> (Yes, that really seems to be what MPAM stands for in the published
> specs.  That's quite a mounthful, and news to me...  I can't say I paid
> much attention to the document titles beyond "MPAM"!)
> 
>> +	  System components, such as the caches, can use the partition-id
>> +	  to apply a performance policy. MPAM monitors can use the
> 
> What is a "performance policy"?

A bunch of controls, the value of which reflect some kind of policy.


> The MPAM specs talk about resource controls; it's probably best to
> stick to the same terminology.
> 
>> +	  partition-id and performance-monitoring-group to measure the
>> +	  cache occupancy or data throughput.
> 
> So, how about something like:
> 
> --8<--
> 
> 	  Memory system components, such as the caches, can be configured with
> 	  policies to control how much of various physical resources (such as
> 	  memory bandwidth or cache memory) the transactions labelled with each
> 	  PARTID can consume.  Depending on the capabilities of the hardware,
> 	  the PARTID and PMG can also be used as filtering criteria to measure
> 	  the memory system resource consumption of different parts of a
> 	  workload.
> 
> -->8--

Done,


> (Where "Memory system components" is used in a generic sense and so not
> capitalised.)

(I can't wait for the Memory System Component on the Memory Side Cache!)


>> +
>> +	  Use of this extension requires CPU support, support in the
>> +	  memory system components (MSC), and a description from firmware
> 
> But here, we are explicitly using an architectural term now, so
> 
> 	"Memory System Components" (MSC)
> 
> makes sense.
> 
>> +	  of where the MSC are in the address space.
> 
> Prefer "MSCs" ?  (Not everyone agrees about whether TLAs are
> pluralisable but it is easier on the reader if "are" has an obviously
> plural noun to bind to.)

Sure,


Thanks,

James




[Index of Archives]     [Linux IBM ACPI]     [Linux Power Management]     [Linux Kernel]     [Linux Laptop]     [Kernel Newbies]     [Share Photos]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Video 4 Linux]     [Device Mapper]     [Linux Resources]
  Powered by Linux