Skip to content

x86/resctrl: Support for AMD Global (Slow) Memory Bandwidth Allocation

Babu Moger linux-doc lkml 2 versions – In review

Get series with b4
b4 am [email protected]

Versions newest first · linked by author and title

  1. v2 Latest8 patches 9 repliesIn review
  2. v1 RFC19 patches 94 repliesSuperseded

Changes in v2 from the cover letter

----------------
- Earlier sent RFC(v1) with Global Bandwidth Enforcement (GLBE) and Privilege Level Zero Association (PLZA). This series only handles Global Memory Bandwidth Allocation. Both the features are sent separately.

- Documentation
* Fixed grammar in the GMBA / GSMBA sections of resctrl.rst.
* Added examples to update GMBA and GSMBA in resctrl.rst documentation.

- Major changes are releated to RESCTRL_NPS_NODE scope handling.

- Commit messages
* Reworked the changelogs in all the patches.

Patches in v2 No applies recorded yet

#Subject and filesSizeRepliesApplied
1/8x86,fs/resctrl: Add support for Global Bandwidth Enforcement (GLBE)Documentation/admin-guide/kernel-parameters.txt arch/x86/include/asm/cpufeatures.h arch/x86/kernel/cpu/resctrl/core.c +1 more+5 -20 replies
2/8x86/resctrl: Add RESCTRL_NPS_NODE scope for AMD NPS-aligned domainsarch/x86/kernel/cpu/resctrl/core.c include/linux/resctrl.h+21 -02 replies
3/8x86/resctrl: Update control MSRs per L3 for NPS-scoped resourcesarch/x86/kernel/cpu/resctrl/ctrlmondata.c arch/x86/kernel/cpu/resctrl/internal.h arch/x86/kernel/cpu/resctrl/rdtgroup.c+100 -60 replies
4/8x86,fs/resctrl: Add the resource for Global Bandwidth Allocationarch/x86/include/asm/msr-index.h arch/x86/kernel/cpu/resctrl/core.c fs/resctrl/ctrlmondata.c +2 more+59 -70 replies
5/8fs/resctrl: Add the documentation for Global Memory Bandwidth AllocationDocumentation/filesystems/resctrl.rst+39 -00 replies
6/8x86,fs/resctrl: Add support for Global Slow Memory Bandwidth AllocationDocumentation/admin-guide/kernel-parameters.txt arch/x86/include/asm/cpufeatures.h arch/x86/kernel/cpu/resctrl/core.c +1 more+5 -10 replies
7/8x86,fs/resctrl: Add the resource for Global Slow Memory Bandwidth Allocationarch/x86/include/asm/msr-index.h arch/x86/kernel/cpu/resctrl/core.c fs/resctrl/ctrlmondata.c +2 more+47 -60 replies
8/8fs/resctrl: Add the documentation for Global Slow Memory Bandwidth AllocationDocumentation/filesystems/resctrl.rst+42 -00 replies

Reviews trailers per patch

No Reviewed-by, Acked-by or Tested-by trailers for v2 yet.

Read the v2 thread

Cover letter [PATCH v2 0/8] x86/resctrl: Support for AMD Global (Slow) Memory Bandwidth Allocation

This series adds resctrl support for two new AMD memory-bandwidth allocation features:

- GMBA - Global Memory Bandwidth Allocation (hardware name: GLBE). Bounds DRAM bandwidth for groups of threads that span multiple L3 QoS domains, rather than being per-L3 like MBA.

- GSMBA - Global Slow Memory Bandwidth Allocation (hardware name:
GLSBE). The CXL.memory / slow-memory counterpart of GMBA, analogous to how SMBA relates to MBA.

Both features share a new "NPS-node" control domain: a set of QoS (L3) domains grouped together and aligned to the system's NPS (Nodes Per Socket) BIOS configuration. Although the control domain is NPS-scoped, the underlying bandwidth-limit MSRs (MSR_IA32_GMBA_BW_BASE 0xc0000600, MSR_IA32_GSMBA_BW_BASE 0xc0000680) are instantiated per L3. Programming a single control domain therefore requires writing the MSR on one CPU per L3 that the domain spans - a new pattern for resctrl. Patches 2/8 and 3/8 introduce that infrastructure so the new resources can reuse it.

The features are documented in:

AMD64 Zen6 Platform Quality of Service (PQOS) Extensions, Publication # 69193 Revision 1.00, Issue Date March 2026

available at https://bugzilla.kernel.org/show_bug.cgi?id=206537

Series overview
---------------

Patches 1-5 to enable GMBA:

1/8 x86,fs/resctrl: Add support for Global Bandwidth Enforcement (GLBE)

2/8 x86/resctrl: Add RESCTRL_NPS_NODE scope for AMD NPS-aligned domains
Add a new ctrl_scope value for resctrl resources whose control domain spans multiple L3s within an NPS node.

3/8 x86/resctrl: Update control MSRs per L3 for NPS-scoped resources
Add resctrl_arch_update_nps(): builds a cpumask with one CPU per distinct L3 in the domain, then issues rdt_ctrl_update() via smp_call_function_many() on that mask. Falls back to the full domain mask if the scratch masks cannot be built. Route resctrl_arch_update_domains() and resctrl_arch_reset_all_ctrls() through this helper when ctrl_scope == RESCTRL_NPS_NODE.

4/8 x86,fs/resctrl: Add the resource for Global Memory Bandwidth Allocation
Register RDT_RESOURCE_GMBA in rdt_resources_all[] with ctrl_scope=RESCTRL_NPS_NODE and schema_fmt=RANGE, add commands to discover feature details.

5/8 fs/resctrl: Add the documentation for Global Memory Bandwidth Allocation
Add examples in Documentation/filesystems/resctrl.rst.

Patches 6-8 to enable GSMBA in the same shape:

6/8 x86,fs/resctrl: Add support for Global Slow Memory Bandwidth Allocation

7/8 x86,fs/resctrl: Add the resource for Global Slow Memory Bandwidth Allocation
Register RDT_RESOURCE_GSMBA with ctrl_scope=RESCTRL_NPS_NODE.

8/8 fs/resctrl: Add the documentation for Global Slow Memory Bandwidth Allocation
Add examples in Documentation/filesystems/resctrl.rst.

Changes since v1
----------------
- Earlier sent RFC(v1) with Global Bandwidth Enforcement (GLBE) and Privilege Level Zero Association (PLZA). This series only handles Global Memory Bandwidth Allocation. Both the features are sent separately.

- Documentation
* Fixed grammar in the GMBA / GSMBA sections of resctrl.rst.
* Added examples to update GMBA and GSMBA in resctrl.rst documentation.

- Major changes are releated to RESCTRL_NPS_NODE scope handling.

- Commit messages
* Reworked the changelogs in all the patches.

Previous Revisions:
v1 : https://lore.kernel.org/lkml/[email protected]/
---

base-commit: 216fe4b3e06754e73c79a88b1df7e9806e41f29d

Babu Moger (8):
x86,fs/resctrl: Add support for Global Bandwidth Enforcement (GLBE) x86/resctrl: Add RESCTRL_NPS_NODE scope for AMD NPS-aligned domains x86/resctrl: Update control MSRs per L3 for NPS-scoped resources x86,fs/resctrl: Add the resource for Global Bandwidth Allocation fs/resctrl: Add the documentation for Global Memory Bandwidth
Allocation
x86,fs/resctrl: Add support for Global Slow Memory Bandwidth
Allocation
x86,fs/resctrl: Add the resource for Global Slow Memory Bandwidth
Allocation
fs/resctrl: Add the documentation for Global Slow Memory Bandwidth
Allocation

 .../admin-guide/kernel-parameters.txt         |   2 +-
 Documentation/filesystems/resctrl.rst         |  81 ++++++++++++++
 arch/x86/include/asm/cpufeatures.h            |   3 +-
 arch/x86/include/asm/msr-index.h              |   2 +
 arch/x86/kernel/cpu/resctrl/core.c            | 101 +++++++++++++++++-
 arch/x86/kernel/cpu/resctrl/ctrlmondata.c     |  90 +++++++++++++++-
 arch/x86/kernel/cpu/resctrl/internal.h        |   1 +
 arch/x86/kernel/cpu/resctrl/rdtgroup.c        |  15 ++-
 arch/x86/kernel/cpu/scattered.c               |   2 +
 fs/resctrl/ctrlmondata.c                      |   5 +-
 fs/resctrl/rdtgroup.c                         |  25 ++++-
 include/linux/resctrl.h                       |   3 +
 12 files changed, 313 insertions(+), 17 deletions(-)
Signature · 1 line
2.43.0