public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH v4 00/41] arm_mpam: Add KVM/arm64 and resctrl glue code
@ 2026-02-03 21:43 Ben Horgan
  2026-02-03 21:43 ` [PATCH v4 01/41] arm64/sysreg: Add MPAMSM_EL1 register Ben Horgan
                   ` (42 more replies)
  0 siblings, 43 replies; 89+ messages in thread
From: Ben Horgan @ 2026-02-03 21:43 UTC (permalink / raw)
  To: ben.horgan
  Cc: amitsinght, baisheng.gao, baolin.wang, carl, dave.martin, david,
	dfustini, fenghuay, gshan, james.morse, jonathan.cameron, kobak,
	lcherian, linux-arm-kernel, linux-kernel, peternewman,
	punit.agrawal, quic_jiles, reinette.chatre, rohit.mathew, scott,
	sdonthineni, tan.shaopeng, xhao, catalin.marinas, will, corbet,
	maz, oupton, joey.gouly, suzuki.poulose, kvmarm, zengheng4,
	linux-doc

This new version of the mpam missing pieces series has a few significant
changes in the mpam driver part of the series. The heuristics for deciding
if features should be exposed are tightened. This is to fix some
inaccuracies and avoid overcommitting before needed - shout if this changes
anything on your platform. The final patch adds documentation which
explains which features you should expect. The ABMC emulation is dropped
for the moment as it requires resctrl changes to support for MPAM without
breaking the abi. The default 5% gap for min_bw is dropped in favour of a
simple default (kept for grace). The series is based on x86/resctrl [1] as
resctrl has telemetry patches queued which change the arch interface.

Fixes that are in 6.19-rc8 are dropped from the series but
b9f5c38e4af1 ("arm_mpam: Use non-atomic bitops when modifying feature bitmap")
is required to avoid an alignment fault in the kunit tests.

Thank you for all the testing and reviewing so far! It all helps.

Changelogs in patches

From James' cover letter:

This is the missing piece to make MPAM usable resctrl in user-space. This has
shed its debugfs code and the read/write 'event configuration' for the monitors
to make the series smaller.

This adds the arch code and KVM support first. I anticipate the whole thing
going via arm64, but if goes via tip instead, the an immutable branch with those
patches should be easy to do.

Generally the resctrl glue code works by picking what MPAM features it can expose
from the MPAM drive, then configuring the structs that back the resctrl helpers.
If your platform is sufficiently Xeon shaped, you should be able to get L2/L3 CPOR
bitmaps exposed via resctrl. CSU counters work if they are on/after the L3. MBWU
counters are considerably more hairy, and depend on hueristics around the topology,
and a bunch of stuff trying to emulate ABMC.
If it didn't pick what you wanted it to, please share the debug messages produced
when enabling dynamic debug and booting with:
| dyndbg="file mpam_resctrl.c +pl"

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)

Based on:
[1] git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git x86/cache
(To include telemetry code which changes the resctrl arch interface)

The series can be retrieved from:
https://gitlab.arm.com/linux-arm/linux-bh.git mpam_resctrl_glue_v4
(Final commit is a fix already in 6.19-rc8)

v3 can be found at:
https://lore.kernel.org/linux-arm-kernel/20260112165914.4086692-1-ben.horgan@arm.com/

v2 can be found at:
https://lore.kernel.org/linux-arm-kernel/20251219181147.3404071-1-ben.horgan@arm.com/

rfc can be found at:
https://lore.kernel.org/linux-arm-kernel/20251205215901.17772-1-james.morse@arm.com/


Ben Horgan (10):
  arm64/sysreg: Add MPAMSM_EL1 register
  KVM: arm64: Preserve host MPAM configuration when changing traps
  KVM: arm64: Make MPAMSM_EL1 accesses UNDEF
  arm64: mpam: Drop the CONFIG_EXPERT restriction
  arm64: mpam: Initialise and context switch the MPAMSM_EL1 register
  KVM: arm64: Use kernel-space partid configuration for hypercalls
  arm_mpam: resctrl: Add rmid index helpers
  arm_mpam: resctrl: Add kunit test for rmid idx conversions
  arm_mpam: resctrl: Wait for cacheinfo to be ready
  arm64: mpam: Add initial MPAM documentation

Dave Martin (2):
  arm_mpam: resctrl: Convert to/from MPAMs fixed-point formats
  arm_mpam: resctrl: Add kunit test for control format conversions

James Morse (25):
  arm64: mpam: Context switch the MPAM registers
  arm64: mpam: Re-initialise MPAM regs when CPU comes online
  arm64: mpam: Advertise the CPUs MPAM limits to the driver
  arm64: mpam: Add cpu_pm notifier to restore MPAM sysregs
  arm64: mpam: Add helpers to change a task or cpu's MPAM PARTID/PMG
    values
  KVM: arm64: Force guest EL1 to use user-space's partid configuration
  arm_mpam: resctrl: Add boilerplate cpuhp and domain allocation
  arm_mpam: resctrl: Sort the order of the domain lists
  arm_mpam: resctrl: Pick the caches we will use as resctrl resources
  arm_mpam: resctrl: Implement resctrl_arch_reset_all_ctrls()
  arm_mpam: resctrl: Add resctrl_arch_get_config()
  arm_mpam: resctrl: Implement helpers to update configuration
  arm_mpam: resctrl: Add plumbing against arm64 task and cpu hooks
  arm_mpam: resctrl: Add CDP emulation
  arm_mpam: resctrl: Add support for 'MB' resource
  arm_mpam: resctrl: Add support for csu counters
  arm_mpam: resctrl: Pick classes for use as mbm counters
  arm_mpam: resctrl: Pre-allocate free running monitors
  arm_mpam: resctrl: Allow resctrl to allocate monitors
  arm_mpam: resctrl: Add resctrl_arch_rmid_read() and
    resctrl_arch_reset_rmid()
  arm_mpam: resctrl: Update the rmid reallocation limit
  arm_mpam: resctrl: Add empty definitions for assorted resctrl
    functions
  arm64: mpam: Select ARCH_HAS_CPU_RESCTRL
  arm_mpam: resctrl: Call resctrl_init() on platforms that can support
    resctrl
  arm_mpam: Quirk CMN-650's CSU NRDY behaviour

Shanker Donthineni (4):
  arm_mpam: Add quirk framework
  arm_mpam: Add workaround for T241-MPAM-1
  arm_mpam: Add workaround for T241-MPAM-4
  arm_mpam: Add workaround for T241-MPAM-6

 Documentation/arch/arm64/index.rst          |    1 +
 Documentation/arch/arm64/mpam.rst           |   93 +
 Documentation/arch/arm64/silicon-errata.rst |    9 +
 arch/arm64/Kconfig                          |    6 +-
 arch/arm64/include/asm/el2_setup.h          |    3 +-
 arch/arm64/include/asm/mpam.h               |   96 +
 arch/arm64/include/asm/resctrl.h            |    2 +
 arch/arm64/include/asm/thread_info.h        |    3 +
 arch/arm64/kernel/Makefile                  |    1 +
 arch/arm64/kernel/cpufeature.c              |   21 +-
 arch/arm64/kernel/mpam.c                    |   62 +
 arch/arm64/kernel/process.c                 |    7 +
 arch/arm64/kvm/hyp/include/hyp/switch.h     |   12 +-
 arch/arm64/kvm/hyp/nvhe/hyp-main.c          |    9 +
 arch/arm64/kvm/hyp/vhe/sysreg-sr.c          |   13 +
 arch/arm64/kvm/sys_regs.c                   |    2 +
 arch/arm64/tools/sysreg                     |    8 +
 drivers/resctrl/Kconfig                     |    9 +-
 drivers/resctrl/Makefile                    |    1 +
 drivers/resctrl/mpam_devices.c              |  257 ++-
 drivers/resctrl/mpam_internal.h             |  105 +-
 drivers/resctrl/mpam_resctrl.c              | 1861 +++++++++++++++++++
 drivers/resctrl/test_mpam_resctrl.c         |  364 ++++
 include/linux/arm_mpam.h                    |   32 +
 24 files changed, 2949 insertions(+), 28 deletions(-)
 create mode 100644 Documentation/arch/arm64/mpam.rst
 create mode 100644 arch/arm64/include/asm/mpam.h
 create mode 100644 arch/arm64/include/asm/resctrl.h
 create mode 100644 arch/arm64/kernel/mpam.c
 create mode 100644 drivers/resctrl/mpam_resctrl.c
 create mode 100644 drivers/resctrl/test_mpam_resctrl.c

-- 
2.43.0


^ permalink raw reply	[flat|nested] 89+ messages in thread

end of thread, other threads:[~2026-02-26  7:17 UTC | newest]

Thread overview: 89+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-02-03 21:43 [PATCH v4 00/41] arm_mpam: Add KVM/arm64 and resctrl glue code Ben Horgan
2026-02-03 21:43 ` [PATCH v4 01/41] arm64/sysreg: Add MPAMSM_EL1 register Ben Horgan
2026-02-03 21:43 ` [PATCH v4 02/41] KVM: arm64: Preserve host MPAM configuration when changing traps Ben Horgan
2026-02-03 21:43 ` [PATCH v4 03/41] KVM: arm64: Make MPAMSM_EL1 accesses UNDEF Ben Horgan
2026-02-03 21:43 ` [PATCH v4 04/41] arm64: mpam: Context switch the MPAM registers Ben Horgan
2026-02-05 16:16   ` Catalin Marinas
2026-02-03 21:43 ` [PATCH v4 05/41] arm64: mpam: Re-initialise MPAM regs when CPU comes online Ben Horgan
2026-02-05 16:20   ` Catalin Marinas
2026-02-03 21:43 ` [PATCH v4 06/41] arm64: mpam: Drop the CONFIG_EXPERT restriction Ben Horgan
2026-02-05 14:08   ` Jonathan Cameron
2026-02-05 16:21   ` Catalin Marinas
2026-02-03 21:43 ` [PATCH v4 07/41] arm64: mpam: Advertise the CPUs MPAM limits to the driver Ben Horgan
2026-02-03 21:43 ` [PATCH v4 08/41] arm64: mpam: Add cpu_pm notifier to restore MPAM sysregs Ben Horgan
2026-02-05 16:54   ` Catalin Marinas
2026-02-03 21:43 ` [PATCH v4 09/41] arm64: mpam: Initialise and context switch the MPAMSM_EL1 register Ben Horgan
2026-02-05 16:55   ` Catalin Marinas
2026-02-03 21:43 ` [PATCH v4 10/41] arm64: mpam: Add helpers to change a task or cpu's MPAM PARTID/PMG values Ben Horgan
2026-02-05 16:56   ` Catalin Marinas
2026-02-03 21:43 ` [PATCH v4 11/41] KVM: arm64: Force guest EL1 to use user-space's partid configuration Ben Horgan
2026-02-03 21:43 ` [PATCH v4 12/41] KVM: arm64: Use kernel-space partid configuration for hypercalls Ben Horgan
2026-02-03 21:43 ` [PATCH v4 13/41] arm_mpam: resctrl: Add boilerplate cpuhp and domain allocation Ben Horgan
2026-02-10 22:57   ` Reinette Chatre
2026-02-11 15:36     ` Ben Horgan
2026-02-03 21:43 ` [PATCH v4 14/41] arm_mpam: resctrl: Sort the order of the domain lists Ben Horgan
2026-02-03 21:43 ` [PATCH v4 15/41] arm_mpam: resctrl: Pick the caches we will use as resctrl resources Ben Horgan
2026-02-10 23:39   ` Reinette Chatre
2026-02-11 11:05     ` Ben Horgan
2026-02-12 16:22       ` Reinette Chatre
2026-02-03 21:43 ` [PATCH v4 16/41] arm_mpam: resctrl: Implement resctrl_arch_reset_all_ctrls() Ben Horgan
2026-02-13  3:32   ` Zeng Heng
2026-02-03 21:43 ` [PATCH v4 17/41] arm_mpam: resctrl: Add resctrl_arch_get_config() Ben Horgan
2026-02-03 21:43 ` [PATCH v4 18/41] arm_mpam: resctrl: Implement helpers to update configuration Ben Horgan
2026-02-14 10:39   ` Zeng Heng
2026-02-16 14:23     ` Ben Horgan
2026-02-25  6:39       ` Zeng Heng
2026-02-03 21:43 ` [PATCH v4 19/41] arm_mpam: resctrl: Add plumbing against arm64 task and cpu hooks Ben Horgan
2026-02-03 21:43 ` [PATCH v4 20/41] arm_mpam: resctrl: Add CDP emulation Ben Horgan
2026-02-09  1:16   ` Fenghua Yu
2026-02-09 15:36     ` Ben Horgan
2026-02-11 10:50       ` Ben Horgan
2026-02-03 21:43 ` [PATCH v4 21/41] arm_mpam: resctrl: Convert to/from MPAMs fixed-point formats Ben Horgan
2026-02-03 21:43 ` [PATCH v4 22/41] arm_mpam: resctrl: Add kunit test for control format conversions Ben Horgan
2026-02-03 21:43 ` [PATCH v4 23/41] arm_mpam: resctrl: Add rmid index helpers Ben Horgan
2026-02-03 21:43 ` [PATCH v4 24/41] arm_mpam: resctrl: Add kunit test for rmid idx conversions Ben Horgan
2026-02-03 21:43 ` [PATCH v4 25/41] arm_mpam: resctrl: Wait for cacheinfo to be ready Ben Horgan
2026-02-03 21:43 ` [PATCH v4 26/41] arm_mpam: resctrl: Add support for 'MB' resource Ben Horgan
2026-02-05 16:50   ` Jonathan Cameron
2026-02-13  7:38     ` Zeng Heng
2026-02-16 13:54       ` Ben Horgan
2026-02-18 16:22         ` Ben Horgan
2026-02-18 17:17           ` Reinette Chatre
2026-02-25  8:08           ` Zeng Heng
2026-02-18 16:40     ` Ben Horgan
2026-02-10  6:20   ` Shaopeng Tan (Fujitsu)
2026-02-18 16:42     ` Ben Horgan
2026-02-03 21:43 ` [PATCH v4 27/41] arm_mpam: resctrl: Add support for csu counters Ben Horgan
2026-02-05 16:55   ` Jonathan Cameron
2026-02-03 21:43 ` [PATCH v4 28/41] arm_mpam: resctrl: Pick classes for use as mbm counters Ben Horgan
2026-02-05 16:58   ` Jonathan Cameron
2026-02-03 21:43 ` [PATCH v4 29/41] arm_mpam: resctrl: Pre-allocate free running monitors Ben Horgan
2026-02-03 21:43 ` [PATCH v4 30/41] arm_mpam: resctrl: Allow resctrl to allocate monitors Ben Horgan
2026-02-03 21:43 ` [PATCH v4 31/41] arm_mpam: resctrl: Add resctrl_arch_rmid_read() and resctrl_arch_reset_rmid() Ben Horgan
2026-02-03 21:43 ` [PATCH v4 32/41] arm_mpam: resctrl: Update the rmid reallocation limit Ben Horgan
2026-02-03 21:43 ` [PATCH v4 33/41] arm_mpam: resctrl: Add empty definitions for assorted resctrl functions Ben Horgan
2026-02-03 21:43 ` [PATCH v4 34/41] arm64: mpam: Select ARCH_HAS_CPU_RESCTRL Ben Horgan
2026-02-03 21:43 ` [PATCH v4 35/41] arm_mpam: resctrl: Call resctrl_init() on platforms that can support resctrl Ben Horgan
2026-02-03 21:43 ` [PATCH v4 36/41] arm_mpam: Add quirk framework Ben Horgan
2026-02-03 21:43 ` [PATCH v4 37/41] arm_mpam: Add workaround for T241-MPAM-1 Ben Horgan
2026-02-03 21:43 ` [PATCH v4 38/41] arm_mpam: Add workaround for T241-MPAM-4 Ben Horgan
2026-02-13  7:02   ` Shaopeng Tan (Fujitsu)
2026-02-14  1:29     ` Zeng Heng
2026-02-20  2:30       ` Shaopeng Tan (Fujitsu)
2026-02-03 21:43 ` [PATCH v4 39/41] arm_mpam: Add workaround for T241-MPAM-6 Ben Horgan
2026-02-03 21:43 ` [PATCH v4 40/41] arm_mpam: Quirk CMN-650's CSU NRDY behaviour Ben Horgan
2026-02-03 21:43 ` [PATCH v4 41/41] arm64: mpam: Add initial MPAM documentation Ben Horgan
2026-02-05 16:57   ` Catalin Marinas
2026-02-05 17:05   ` Jonathan Cameron
2026-02-18 17:02     ` Ben Horgan
2026-02-09  8:25 ` [PATCH v4 00/41] arm_mpam: Add KVM/arm64 and resctrl glue code Shaopeng Tan (Fujitsu)
2026-02-09 10:04   ` Ben Horgan
2026-02-12 14:51     ` Ben Horgan
2026-02-13  7:18       ` Shaopeng Tan (Fujitsu)
2026-02-14  9:40 ` Zeng Heng
2026-02-16 12:22   ` Ben Horgan
2026-02-24 11:03     ` Zeng Heng
2026-02-24 14:19       ` Ben Horgan
2026-02-24 15:27         ` Ben Horgan
2026-02-24 17:53         ` Ben Horgan
2026-02-26  7:17           ` Zeng Heng

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox