Thread (200 messages) 200 messages, 10 authors, 2025-09-10

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

From: James Morse <james.morse@arm.com>
Date: 2025-09-04 17:28:21
Also in: linux-acpi, linux-devicetree, lkml

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:
quoted
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 [...]"
quoted
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,

quoted
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"
quoted
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!

quoted
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>
quoted
+	  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...

quoted
+	  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"!)
quoted
+	  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.
quoted
+	  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!)

quoted
+
+	  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.
quoted
+	  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
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help