Add support to choose the memory monitor bandwidth event independently for each ctrl_mon group when resctrl is mounted with the mba_MBps option. Users may want this for applications that are not localized to NUMA boundaries. Default behavior still uses local memory bandwidth when that event is supported by the platform. Side benefit[0]: Systems that do not support the local bandwidth monitor event but do support the total bandwidth event can now use the mba_MBps mount option. Changes since v7[1]: -------------------- Almost a complete rewrite based on the new user ABI of a file in each ctrl_mon group to select the event instead of a mount option that applies to all groups. Some of the code from the v7 patch0001 was salvaged and is now split between patches 0002/0003 in this series. Patch 0002 addresses comments from Reinette[2] with additional sanity checks, use of WARN_ON_ONCE() and early return from functions where these checks fail. I moved the refactor of mbm_update() to a separate patch to make it easier to review the changes to compute bandwidth for all memory bandwidth events. Signed-off-by: Tony Luck <tony.luck@xxxxxxxxx> [0] My original objective! [1] https://lore.kernel.org/all/20241003191228.67541-1-tony.luck@xxxxxxxxx [2] https://lore.kernel.org/all/bb30835f-5be9-44b4-8544-2f528e7fc573@xxxxxxxxx/ Tony Luck (7): x86/resctrl: Prepare for per-ctrl_mon group mba_MBps control x86/resctrl: Compute memory bandwidth for all supported events x86/resctrl: Refactor mbm_update() x86/resctrl: Relax checks for mba_MBps mount option x86/resctrl: Add "mba_MBps_event" file to ctrl_mon directories x86/resctrl: Add write option to "mba_MBps_event" file x86/resctrl: Document the new "mba_MBps_event" file Documentation/arch/x86/resctrl.rst | 10 +++ include/linux/resctrl.h | 2 + arch/x86/kernel/cpu/resctrl/internal.h | 6 ++ arch/x86/kernel/cpu/resctrl/core.c | 5 ++ arch/x86/kernel/cpu/resctrl/ctrlmondata.c | 71 ++++++++++++++++++ arch/x86/kernel/cpu/resctrl/monitor.c | 91 ++++++++++++----------- arch/x86/kernel/cpu/resctrl/rdtgroup.c | 28 ++++++- 7 files changed, 167 insertions(+), 46 deletions(-) base-commit: 81983758430957d9a5cb3333fe324fd70cf63e7e -- 2.47.0