Re: [PATCH v4 00/41] arm_mpam: Add KVM/arm64 and resctrl glue code

Zeng Heng
2026-02-14T09:40:33Z

Hi Ben,

On 2026/2/4 5:43, Ben Horgan wrote:
> 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/
>
>

I've tested the MPAM functionality on my local Kunpeng platform. Here's
a summary of the results:

Features enabled and verified:
* L2 and L3 CPBM
* L3 CSU
* L2 and L3 CDP
All enabled features passed functional testing as expected.

+ Tested-by: Zeng Heng <zengheng4@huawei.com>

Features not enabled:
1. MATA MBMAX partition and MBWU monitor.
Reason: These do not meet the driver's current topology
expectations for MB support, hence they were not initialized.
This behavior is expected.

2. L2 CSU and MBWU monitors.
Reason: The current MPAM driver does not support L2-related
functionality yet.

+ Tested-by: Zeng Heng <zengheng4@huawei.com>

Detailed test logs are as follows:

Boot logs:
[root@localhost ~]# dmesg | grep -i mpam
[ 0.000000] ACPI: MPAM 0x000000007FF35018 003024 (v01 HISI HIP12
00000000 HISI 20151124)
[ 9.509852] mpam_msc mpam_msc.64: Merging features for
vmsc:0xffff0800973cf5a0 |= ris:0xffff08009757ee90
[ 9.509859] mpam_msc mpam_msc.254: Merging features for
class:0xffff08009736fe50 &= vmsc:0xffff080097628520
[ 9.509860] mpam:__props_mismatch:
mpam_has_feature(mpam_feat_cpor_part, parent) = 1
[ 9.509864] mpam:__props_mismatch:
mpam_has_feature(mpam_feat_cpor_part, child) = 0
[ 9.509866] mpam:__props_mismatch: parent->cpbm_wd = 8
[ 9.509869] mpam:__props_mismatch: child->cpbm_wd = 0
[ 9.509871] mpam:__props_mismatch: alias = 0
[ 9.509873] mpam:__props_mismatch: cleared cpor_part
[ 9.509876] mpam:__props_mismatch: took the min num_csu_mon
[ 9.509878] mpam:__props_mismatch: took the min num_mbwu_mon
[ 9.509881] mpam_msc mpam_msc.252: Merging features for
class:0xffff08009736fe50 &= vmsc:0xffff0800976284a0
[ 9.509884] mpam_msc mpam_msc.250: Merging features for
class:0xffff08009736fe50 &= vmsc:0xffff080097628420
[ 9.509887] mpam_msc mpam_msc.248: Merging features for
class:0xffff08009736fe50 &= vmsc:0xffff0800976283a0
[ 9.509889] mpam_msc mpam_msc.246: Merging features for
class:0xffff08009736fe50 &= vmsc:0xffff080097628320
[ 9.509892] mpam_msc mpam_msc.244: Merging features for
class:0xffff08009736fe50 &= vmsc:0xffff0800976282a0
[ 9.509894] mpam_msc mpam_msc.242: Merging features for
class:0xffff08009736fe50 &= vmsc:0xffff080097628220
[ 9.509897] mpam_msc mpam_msc.240: Merging features for
class:0xffff08009736fe50 &= vmsc:0xffff0800976281a0
[ 9.509900] mpam_msc mpam_msc.238: Merging features for
class:0xffff08009736fe50 &= vmsc:0xffff080097628120
[ 9.509902] mpam_msc mpam_msc.236: Merging features for
class:0xffff08009736fe50 &= vmsc:0xffff0800976280a0
[ 9.509905] mpam_msc mpam_msc.234: Merging features for
class:0xffff08009736fe50 &= vmsc:0xffff080097628020
[ 9.509907] mpam_msc mpam_msc.232: Merging features for
class:0xffff08009736fe50 &= vmsc:0xffff0800975affa0
[ 9.509910] mpam_msc mpam_msc.230: Merging features for
class:0xffff08009736fe50 &= vmsc:0xffff0800975aff20
[ 9.509913] mpam_msc mpam_msc.228: Merging features for
class:0xffff08009736fe50 &= vmsc:0xffff0800975afea0
[ 9.509915] mpam_msc mpam_msc.226: Merging features for
class:0xffff08009736fe50 &= vmsc:0xffff0800975afe20
[ 9.509918] mpam_msc mpam_msc.224: Merging features for
class:0xffff08009736fe50 &= vmsc:0xffff0800975afda0
[ 9.509920] mpam_msc mpam_msc.222: Merging features for
class:0xffff08009736fe50 &= vmsc:0xffff0800975afd20
[ 9.509923] mpam_msc mpam_msc.220: Merging features for
class:0xffff08009736fe50 &= vmsc:0xffff0800975afca0
[ 9.509925] mpam_msc mpam_msc.218: Merging features for
class:0xffff08009736fe50 &= vmsc:0xffff0800975afc20
[ 9.509928] mpam_msc mpam_msc.216: Merging features for
class:0xffff08009736fe50 &= vmsc:0xffff0800975afba0
[ 9.509931] mpam_msc mpam_msc.214: Merging features for
class:0xffff08009736fe50 &= vmsc:0xffff0800975afb20
[ 9.509933] mpam_msc mpam_msc.212: Merging features for
class:0xffff08009736fe50 &= vmsc:0xffff0800975afaa0
[ 9.509936] mpam_msc mpam_msc.210: Merging features for
class:0xffff08009736fe50 &= vmsc:0xffff0800975afa20
[ 9.509938] mpam_msc mpam_msc.208: Merging features for
class:0xffff08009736fe50 &= vmsc:0xffff0800975af9a0
[ 9.509941] mpam_msc mpam_msc.206: Merging features for
class:0xffff08009736fe50 &= vmsc:0xffff0800975af920
[ 9.509943] mpam_msc mpam_msc.204: Merging features for
class:0xffff08009736fe50 &= vmsc:0xffff0800975af8a0
[ 9.509946] mpam_msc mpam_msc.202: Merging features for
class:0xffff08009736fe50 &= vmsc:0xffff0800975af820
[ 9.509949] mpam_msc mpam_msc.200: Merging features for
class:0xffff08009736fe50 &= vmsc:0xffff0800975af7a0
[ 9.509951] mpam_msc mpam_msc.198: Merging features for
class:0xffff08009736fe50 &= vmsc:0xffff0800975af720
[ 9.509954] mpam_msc mpam_msc.196: Merging features for
class:0xffff08009736fe50 &= vmsc:0xffff0800975af6a0
[ 9.509956] mpam_msc mpam_msc.194: Merging features for
class:0xffff08009736fe50 &= vmsc:0xffff0800975af620
[ 9.509959] mpam_msc mpam_msc.192: Merging features for
class:0xffff08009736fe50 &= vmsc:0xffff0800975af5a0
[ 9.509962] mpam_msc mpam_msc.190: Merging features for
class:0xffff08009736fe50 &= vmsc:0xffff0800975af520
[ 9.509964] mpam_msc mpam_msc.188: Merging features for
class:0xffff08009736fe50 &= vmsc:0xffff0800975af4a0
[ 9.509967] mpam_msc mpam_msc.186: Merging features for
class:0xffff08009736fe50 &= vmsc:0xffff0800975af420
[ 9.509969] mpam_msc mpam_msc.184: Merging features for
class:0xffff08009736fe50 &= vmsc:0xffff0800975af3a0
[ 9.509972] mpam_msc mpam_msc.182: Merging features for
class:0xffff08009736fe50 &= vmsc:0xffff0800975af320
[ 9.509974] mpam_msc mpam_msc.180: Merging features for
class:0xffff08009736fe50 &= vmsc:0xffff0800975af2a0
[ 9.509977] mpam_msc mpam_msc.178: Merging features for
class:0xffff08009736fe50 &= vmsc:0xffff0800975af220
[ 9.509980] mpam_msc mpam_msc.176: Merging features for
class:0xffff08009736fe50 &= vmsc:0xffff0800975af1a0
[ 9.509982] mpam_msc mpam_msc.174: Merging features for
class:0xffff08009736fe50 &= vmsc:0xffff0800975af120
[ 9.509985] mpam_msc mpam_msc.172: Merging features for
class:0xffff08009736fe50 &= vmsc:0xffff0800975af0a0
[ 9.509987] mpam_msc mpam_msc.170: Merging features for
class:0xffff08009736fe50 &= vmsc:0xffff0800975af020
[ 9.509990] mpam_msc mpam_msc.168: Merging features for
class:0xffff08009736fe50 &= vmsc:0xffff0800975aefa0
[ 9.509993] mpam_msc mpam_msc.166: Merging features for
class:0xffff08009736fe50 &= vmsc:0xffff0800975aef20
[ 9.509995] mpam_msc mpam_msc.164: Merging features for
class:0xffff08009736fe50 &= vmsc:0xffff0800975aeea0
[ 9.509998] mpam_msc mpam_msc.162: Merging features for
class:0xffff08009736fe50 &= vmsc:0xffff0800975aee20
[ 9.510000] mpam_msc mpam_msc.160: Merging features for
class:0xffff08009736fe50 &= vmsc:0xffff0800975aeda0
[ 9.510003] mpam_msc mpam_msc.158: Merging features for
class:0xffff08009736fe50 &= vmsc:0xffff0800975aed20
[ 9.510005] mpam_msc mpam_msc.156: Merging features for
class:0xffff08009736fe50 &= vmsc:0xffff0800975aeca0
[ 9.510008] mpam_msc mpam_msc.154: Merging features for
class:0xffff08009736fe50 &= vmsc:0xffff0800975aec20
[ 9.510010] mpam_msc mpam_msc.152: Merging features for
class:0xffff08009736fe50 &= vmsc:0xffff0800975aeba0
[ 9.510013] mpam_msc mpam_msc.150: Merging features for
class:0xffff08009736fe50 &= vmsc:0xffff0800975aeb20
[ 9.510016] mpam_msc mpam_msc.148: Merging features for
class:0xffff08009736fe50 &= vmsc:0xffff0800975aeaa0
[ 9.510018] mpam_msc mpam_msc.146: Merging features for
class:0xffff08009736fe50 &= vmsc:0xffff0800975aea20
[ 9.510021] mpam_msc mpam_msc.144: Merging features for
class:0xffff08009736fe50 &= vmsc:0xffff0800975ae9a0
[ 9.510023] mpam_msc mpam_msc.142: Merging features for
class:0xffff08009736fe50 &= vmsc:0xffff0800975ae920
[ 9.510026] mpam_msc mpam_msc.140: Merging features for
class:0xffff08009736fe50 &= vmsc:0xffff0800975ae8a0
[ 9.510029] mpam_msc mpam_msc.138: Merging features for
class:0xffff08009736fe50 &= vmsc:0xffff0800975ae820
[ 9.510031] mpam_msc mpam_msc.136: Merging features for
class:0xffff08009736fe50 &= vmsc:0xffff0800975ae7a0
[ 9.510034] mpam_msc mpam_msc.134: Merging features for
class:0xffff08009736fe50 &= vmsc:0xffff0800975ae720
[ 9.510036] mpam_msc mpam_msc.132: Merging features for
class:0xffff08009736fe50 &= vmsc:0xffff0800975ae6a0
[ 9.510039] mpam_msc mpam_msc.130: Merging features for
class:0xffff08009736fe50 &= vmsc:0xffff0800975ae620
[ 9.510041] mpam_msc mpam_msc.128: Merging features for
class:0xffff08009736fe50 &= vmsc:0xffff0800975ae5a0
[ 9.510044] mpam_msc mpam_msc.126: Merging features for
class:0xffff08009736fe50 &= vmsc:0xffff0800975ae520
[ 9.510047] mpam_msc mpam_msc.124: Merging features for
class:0xffff08009736fe50 &= vmsc:0xffff0800975ae4a0
[ 9.510049] mpam_msc mpam_msc.122: Merging features for
class:0xffff08009736fe50 &= vmsc:0xffff0800975ae420
[ 9.510052] mpam_msc mpam_msc.120: Merging features for
class:0xffff08009736fe50 &= vmsc:0xffff0800975ae3a0
[ 9.510054] mpam_msc mpam_msc.118: Merging features for
class:0xffff08009736fe50 &= vmsc:0xffff0800975ae2a0
[ 9.510057] mpam_msc mpam_msc.116: Merging features for
class:0xffff08009736fe50 &= vmsc:0xffff0800975ae220
[ 9.510060] mpam_msc mpam_msc.114: Merging features for
class:0xffff08009736fe50 &= vmsc:0xffff0800975ae1a0
[ 9.510062] mpam_msc mpam_msc.112: Merging features for
class:0xffff08009736fe50 &= vmsc:0xffff0800975ae120
[ 9.510065] mpam_msc mpam_msc.110: Merging features for
class:0xffff08009736fe50 &= vmsc:0xffff0800975ae0a0
[ 9.510067] mpam_msc mpam_msc.108: Merging features for
class:0xffff08009736fe50 &= vmsc:0xffff0800975ae020
[ 9.510070] mpam_msc mpam_msc.106: Merging features for
class:0xffff08009736fe50 &= vmsc:0xffff08009729c720
[ 9.510073] mpam_msc mpam_msc.104: Merging features for
class:0xffff08009736fe50 &= vmsc:0xffff0800973cffa0
[ 9.510075] mpam_msc mpam_msc.102: Merging features for
class:0xffff08009736fe50 &= vmsc:0xffff0800973cff20
[ 9.510078] mpam_msc mpam_msc.100: Merging features for
class:0xffff08009736fe50 &= vmsc:0xffff0800973cfea0
[ 9.510080] mpam_msc mpam_msc.98: Merging features for
class:0xffff08009736fe50 &= vmsc:0xffff0800973cfe20
[ 9.510083] mpam_msc mpam_msc.96: Merging features for
class:0xffff08009736fe50 &= vmsc:0xffff0800973cfda0
[ 9.510086] mpam_msc mpam_msc.94: Merging features for
class:0xffff08009736fe50 &= vmsc:0xffff0800973cfd20
[ 9.510088] mpam_msc mpam_msc.92: Merging features for
class:0xffff08009736fe50 &= vmsc:0xffff0800973cfca0
[ 9.510091] mpam_msc mpam_msc.90: Merging features for
class:0xffff08009736fe50 &= vmsc:0xffff0800973cfc20
[ 9.510094] mpam_msc mpam_msc.88: Merging features for
class:0xffff08009736fe50 &= vmsc:0xffff0800973cfba0
[ 9.510096] mpam_msc mpam_msc.86: Merging features for
class:0xffff08009736fe50 &= vmsc:0xffff0800973cfb20
[ 9.510099] mpam_msc mpam_msc.84: Merging features for
class:0xffff08009736fe50 &= vmsc:0xffff0800973cfaa0
[ 9.510102] mpam_msc mpam_msc.82: Merging features for
class:0xffff08009736fe50 &= vmsc:0xffff0800973cfa20
[ 9.510104] mpam_msc mpam_msc.80: Merging features for
class:0xffff08009736fe50 &= vmsc:0xffff0800973cf9a0
[ 9.510107] mpam_msc mpam_msc.78: Merging features for
class:0xffff08009736fe50 &= vmsc:0xffff0800973cf920
[ 9.510109] mpam_msc mpam_msc.76: Merging features for
class:0xffff08009736fe50 &= vmsc:0xffff0800973cf8a0
[ 9.510112] mpam_msc mpam_msc.74: Merging features for
class:0xffff08009736fe50 &= vmsc:0xffff0800973cf820
[ 9.510115] mpam_msc mpam_msc.72: Merging features for
class:0xffff08009736fe50 &= vmsc:0xffff0800973cf7a0
[ 9.510117] mpam_msc mpam_msc.70: Merging features for
class:0xffff08009736fe50 &= vmsc:0xffff0800973cf720
[ 9.510120] mpam_msc mpam_msc.68: Merging features for
class:0xffff08009736fe50 &= vmsc:0xffff0800973cf6a0
[ 9.510123] mpam_msc mpam_msc.66: Merging features for
class:0xffff08009736fe50 &= vmsc:0xffff0800973cf620
[ 9.510125] mpam_msc mpam_msc.64: Merging features for
class:0xffff08009736fe50 &= vmsc:0xffff0800973cf5a0
[ 9.510129] mpam_msc mpam_msc.62: Merging features for
vmsc:0xffff0800973cf520 |= ris:0xffff08009757ea90
[ 9.510132] mpam_msc mpam_msc.60: Merging features for
vmsc:0xffff0800973cf4a0 |= ris:0xffff08009757e690
[ 9.510133] mpam_msc mpam_msc.58: Merging features for
vmsc:0xffff0800973cf420 |= ris:0xffff08009757e290
[ 9.510136] mpam_msc mpam_msc.56: Merging features for
vmsc:0xffff0800973cf3a0 |= ris:0xffff08009757de90
[ 9.510139] mpam_msc mpam_msc.54: Merging features for
vmsc:0xffff0800973cf320 |= ris:0xffff08009757da90
[ 9.510141] mpam_msc mpam_msc.52: Merging features for
vmsc:0xffff0800973cf2a0 |= ris:0xffff08009757d690
[ 9.510144] mpam_msc mpam_msc.50: Merging features for
vmsc:0xffff0800973cf220 |= ris:0xffff08009757d290
[ 9.510146] mpam_msc mpam_msc.48: Merging features for
vmsc:0xffff0800973cf1a0 |= ris:0xffff08009757ce90
[ 9.510149] mpam_msc mpam_msc.46: Merging features for
vmsc:0xffff0800973cf120 |= ris:0xffff08009757ca90
[ 9.510152] mpam_msc mpam_msc.44: Merging features for
vmsc:0xffff0800973cf0a0 |= ris:0xffff08009757c690
[ 9.510154] mpam_msc mpam_msc.42: Merging features for
vmsc:0xffff0800973cf020 |= ris:0xffff08009757c290
[ 9.510157] mpam_msc mpam_msc.40: Merging features for
vmsc:0xffff0800973cefa0 |= ris:0xffff08009757be90
[ 9.510160] mpam_msc mpam_msc.38: Merging features for
vmsc:0xffff0800973cef20 |= ris:0xffff08009757ba90
[ 9.510162] mpam_msc mpam_msc.36: Merging features for
vmsc:0xffff0800973ceea0 |= ris:0xffff08009757b690
[ 9.510166] mpam_msc mpam_msc.34: Merging features for
vmsc:0xffff0800973cee20 |= ris:0xffff08009757b290
[ 9.510167] mpam_msc mpam_msc.32: Merging features for
vmsc:0xffff0800973ceda0 |= ris:0xffff08009757ae90
[ 9.510170] mpam_msc mpam_msc.30: Merging features for
vmsc:0xffff0800973ced20 |= ris:0xffff08009757aa90
[ 9.510173] mpam_msc mpam_msc.28: Merging features for
vmsc:0xffff0800973ceca0 |= ris:0xffff08009757a690
[ 9.510175] mpam_msc mpam_msc.26: Merging features for
vmsc:0xffff0800973cec20 |= ris:0xffff08009757a290
[ 9.510178] mpam_msc mpam_msc.24: Merging features for
vmsc:0xffff0800973ceba0 |= ris:0xffff080097579e90
[ 9.510181] mpam_msc mpam_msc.22: Merging features for
vmsc:0xffff0800973ceb20 |= ris:0xffff080097579a90
[ 9.510183] mpam_msc mpam_msc.20: Merging features for
vmsc:0xffff0800973ceaa0 |= ris:0xffff080097579690
[ 9.510186] mpam_msc mpam_msc.18: Merging features for
vmsc:0xffff0800973cea20 |= ris:0xffff080097579290
[ 9.510189] mpam_msc mpam_msc.16: Merging features for
vmsc:0xffff0800973ce9a0 |= ris:0xffff080097578e90
[ 9.510191] mpam_msc mpam_msc.62: Merging features for
class:0xffff08009736cc50 &= vmsc:0xffff0800973cf520
[ 9.510195] mpam_msc mpam_msc.60: Merging features for
class:0xffff08009736cc50 &= vmsc:0xffff0800973cf4a0
[ 9.510196] mpam_msc mpam_msc.58: Merging features for
class:0xffff08009736cc50 &= vmsc:0xffff0800973cf420
[ 9.510199] mpam_msc mpam_msc.56: Merging features for
class:0xffff08009736cc50 &= vmsc:0xffff0800973cf3a0
[ 9.510202] mpam_msc mpam_msc.54: Merging features for
class:0xffff08009736cc50 &= vmsc:0xffff0800973cf320
[ 9.510204] mpam_msc mpam_msc.52: Merging features for
class:0xffff08009736cc50 &= vmsc:0xffff0800973cf2a0
[ 9.510207] mpam_msc mpam_msc.50: Merging features for
class:0xffff08009736cc50 &= vmsc:0xffff0800973cf220
[ 9.510209] mpam_msc mpam_msc.48: Merging features for
class:0xffff08009736cc50 &= vmsc:0xffff0800973cf1a0
[ 9.510212] mpam_msc mpam_msc.46: Merging features for
class:0xffff08009736cc50 &= vmsc:0xffff0800973cf120
[ 9.510214] mpam_msc mpam_msc.44: Merging features for
class:0xffff08009736cc50 &= vmsc:0xffff0800973cf0a0
[ 9.510217] mpam_msc mpam_msc.42: Merging features for
class:0xffff08009736cc50 &= vmsc:0xffff0800973cf020
[ 9.510219] mpam_msc mpam_msc.40: Merging features for
class:0xffff08009736cc50 &= vmsc:0xffff0800973cefa0
[ 9.510222] mpam_msc mpam_msc.38: Merging features for
class:0xffff08009736cc50 &= vmsc:0xffff0800973cef20
[ 9.510224] mpam_msc mpam_msc.36: Merging features for
class:0xffff08009736cc50 &= vmsc:0xffff0800973ceea0
[ 9.510227] mpam_msc mpam_msc.34: Merging features for
class:0xffff08009736cc50 &= vmsc:0xffff0800973cee20
[ 9.510230] mpam_msc mpam_msc.32: Merging features for
class:0xffff08009736cc50 &= vmsc:0xffff0800973ceda0
[ 9.510232] mpam_msc mpam_msc.30: Merging features for
class:0xffff08009736cc50 &= vmsc:0xffff0800973ced20
[ 9.510235] mpam_msc mpam_msc.28: Merging features for
class:0xffff08009736cc50 &= vmsc:0xffff0800973ceca0
[ 9.510237] mpam_msc mpam_msc.26: Merging features for
class:0xffff08009736cc50 &= vmsc:0xffff0800973cec20
[ 9.510240] mpam_msc mpam_msc.24: Merging features for
class:0xffff08009736cc50 &= vmsc:0xffff0800973ceba0
[ 9.510242] mpam_msc mpam_msc.22: Merging features for
class:0xffff08009736cc50 &= vmsc:0xffff0800973ceb20
[ 9.510245] mpam_msc mpam_msc.20: Merging features for
class:0xffff08009736cc50 &= vmsc:0xffff0800973ceaa0
[ 9.510247] mpam_msc mpam_msc.18: Merging features for
class:0xffff08009736cc50 &= vmsc:0xffff0800973cea20
[ 9.510250] mpam_msc mpam_msc.16: Merging features for
class:0xffff08009736cc50 &= vmsc:0xffff0800973ce9a0
[ 9.510254] mpam_msc mpam_msc.14: Merging features for
vmsc:0xffff0800973ce920 |= ris:0xffff080097578a90
[ 9.510255] mpam_msc mpam_msc.12: Merging features for
vmsc:0xffff0800973ce8a0 |= ris:0xffff080097578690
[ 9.510258] mpam_msc mpam_msc.10: Merging features for
vmsc:0xffff0800973ce820 |= ris:0xffff080097578290
[ 9.510260] mpam_msc mpam_msc.8: Merging features for
vmsc:0xffff0800973ce7a0 |= ris:0xffff080097417e90
[ 9.510263] mpam_msc mpam_msc.6: Merging features for
vmsc:0xffff0800973ce720 |= ris:0xffff080097417a90
[ 9.510266] mpam_msc mpam_msc.4: Merging features for
vmsc:0xffff0800973ce6a0 |= ris:0xffff080097417690
[ 9.510268] mpam_msc mpam_msc.2: Merging features for
vmsc:0xffff0800973ce620 |= ris:0xffff080097417290
[ 9.510271] mpam_msc mpam_msc.0: Merging features for
vmsc:0xffff0800973ce5a0 |= ris:0xffff080097416e90
[ 9.510274] mpam_msc mpam_msc.14: Merging features for
class:0xffff08009735bb50 &= vmsc:0xffff0800973ce920
[ 9.510276] mpam_msc mpam_msc.12: Merging features for
class:0xffff08009735bb50 &= vmsc:0xffff0800973ce8a0
[ 9.510279] mpam_msc mpam_msc.10: Merging features for
class:0xffff08009735bb50 &= vmsc:0xffff0800973ce820
[ 9.510281] mpam_msc mpam_msc.8: Merging features for
class:0xffff08009735bb50 &= vmsc:0xffff0800973ce7a0
[ 9.510284] mpam_msc mpam_msc.6: Merging features for
class:0xffff08009735bb50 &= vmsc:0xffff0800973ce720
[ 9.510287] mpam_msc mpam_msc.4: Merging features for
class:0xffff08009735bb50 &= vmsc:0xffff0800973ce6a0
[ 9.510289] mpam_msc mpam_msc.2: Merging features for
class:0xffff08009735bb50 &= vmsc:0xffff0800973ce620
[ 9.510292] mpam_msc mpam_msc.0: Merging features for
class:0xffff08009735bb50 &= vmsc:0xffff0800973ce5a0
[ 10.978496] mpam:mpam_resctrl_pick_caches: class 2 cache misses CPOR
[ 10.978497] mpam:mpam_resctrl_pick_caches: class 255 is not a cache
[ 10.980470] mpam:mpam_resctrl_pick_mba: class 2 is before L3
[ 10.980472] mpam:mpam_resctrl_pick_mba: class 3 has no bandwidth control
[ 10.997406] mpam:topology_matches_l3: class 255 component 0 has
Mismatched CPU mask with L3 equivalent
[ 10.997411] mpam:mpam_resctrl_pick_mba: class 255 topology doesn't
match L3
[ 10.997415] mpam:mpam_resctrl_pick_counters: class 2 is before L3
[ 11.024109] mpam:topology_matches_l3: class 3 component 276 has
Mismatched CPU mask with L3 equivalent
[ 11.024114] mpam:class_has_usable_mbwu: monitors usable in
free-running mode
[ 11.063882] mpam:topology_matches_l3: class 255 component 0 has
Mismatched CPU mask with L3 equivalent
[ 11.113183] mpam:mpam_resctrl_alloc_domain: Skipped monitor domain
online - no monitors
[ 11.113189] MPAM enabled with 32 PARTIDs and 4 PMGs

Kunit test logs:
[ 31.253697] KTAP version 1
[ 31.253698] 1..2
[ 31.258263] KTAP version 1
[ 31.258265] # Subtest: mpam_devices_test_suite
[ 31.258267] # module: mpam
[ 31.258268] 1..3
[ 31.258775] ok 1 test_mpam_reset_msc_bitmap
[ 31.259558] ok 2 test_mpam_enable_merge_features
[ 31.260259] ok 3 test__props_mismatch
[ 31.260261] # mpam_devices_test_suite: pass:3 fail:0 skip:0 total:3
[ 31.260263] # Totals: pass:3 fail:0 skip:0 total:3
[ 31.260265] ok 1 mpam_devices_test_suite
[ 31.260267] KTAP version 1
[ 31.260268] # Subtest: mpam_resctrl_test_suite
[ 31.260269] # module: mpam
[ 31.260271] 1..7
[ 31.260965] ok 1 test_get_mba_granularity
[ 31.260968] KTAP version 1
[ 31.260969] # Subtest: test_mbw_max_to_percent
[ 31.261372] ok 1 pc=1, width=8, value=0x01
[ 31.261794] ok 2 pc=1, width=12, value=0x027
[ 31.262081] ok 3 pc=1, width=16, value=0x028e
[ 31.262183] ok 4 pc=25, width=8, value=0x3f
[ 31.262287] ok 5 pc=25, width=12, value=0x3ff
[ 31.262388] ok 6 pc=25, width=16, value=0x3fff
[ 31.262489] ok 7 pc=33, width=8, value=0x53
[ 31.262608] ok 8 pc=33, width=12, value=0x546
[ 31.262860] ok 9 pc=33, width=16, value=0x5479
[ 31.263113] ok 10 pc=35, width=8, value=0x58
[ 31.263491] ok 11 pc=35, width=12, value=0x598
[ 31.263872] ok 12 pc=35, width=16, value=0x5998
[ 31.264249] ok 13 pc=45, width=8, value=0x72
[ 31.264352] ok 14 pc=45, width=12, value=0x732
[ 31.264455] ok 15 pc=45, width=16, value=0x7332
[ 31.264559] ok 16 pc=50, width=8, value=0x7f
[ 31.264661] ok 17 pc=50, width=12, value=0x7ff
[ 31.264764] ok 18 pc=50, width=16, value=0x7fff
[ 31.264872] ok 19 pc=52, width=8, value=0x84
[ 31.264978] ok 20 pc=52, width=12, value=0x850
[ 31.265082] ok 21 pc=52, width=16, value=0x851d
[ 31.265190] ok 22 pc=55, width=8, value=0x8b
[ 31.265297] ok 23 pc=55, width=12, value=0x8cb
[ 31.265403] ok 24 pc=55, width=16, value=0x8ccb
[ 31.265507] ok 25 pc=58, width=8, value=0x93
[ 31.265609] ok 26 pc=58, width=12, value=0x946
[ 31.265714] ok 27 pc=58, width=16, value=0x9479
[ 31.265817] ok 28 pc=75, width=8, value=0xbf
[ 31.265918] ok 29 pc=75, width=12, value=0xbff
[ 31.266020] ok 30 pc=75, width=16, value=0xbfff
[ 31.266120] ok 31 pc=80, width=8, value=0xcb
[ 31.266220] ok 32 pc=80, width=12, value=0xccb
[ 31.266322] ok 33 pc=80, width=16, value=0xcccb
[ 31.266425] ok 34 pc=88, width=8, value=0xe0
[ 31.266533] ok 35 pc=88, width=12, value=0xe13
[ 31.266637] ok 36 pc=88, width=16, value=0xe146
[ 31.266758] ok 37 pc=95, width=8, value=0xf2
[ 31.267150] ok 38 pc=95, width=12, value=0xf32
[ 31.267535] ok 39 pc=95, width=16, value=0xf332
[ 31.267918] ok 40 pc=100, width=8, value=0xff
[ 31.268160] ok 41 pc=100, width=12, value=0xfff
[ 31.268264] ok 42 pc=100, width=16, value=0xffff
[ 31.268266] # test_mbw_max_to_percent: pass:42 fail:0 skip:0 total:42
[ 31.268268] ok 2 test_mbw_max_to_percent
[ 31.268270] KTAP version 1
[ 31.268271] # Subtest: test_percent_to_mbw_max
[ 31.268376] ok 1 pc=1, width=8, value=0x01
[ 31.268483] ok 2 pc=1, width=12, value=0x027
[ 31.268595] ok 3 pc=1, width=16, value=0x028e
[ 31.268701] ok 4 pc=25, width=8, value=0x3f
[ 31.268806] ok 5 pc=25, width=12, value=0x3ff
[ 31.268915] ok 6 pc=25, width=16, value=0x3fff
[ 31.269022] ok 7 pc=33, width=8, value=0x53
[ 31.269129] ok 8 pc=33, width=12, value=0x546
[ 31.269237] ok 9 pc=33, width=16, value=0x5479
[ 31.269342] ok 10 pc=35, width=8, value=0x58
[ 31.269446] ok 11 pc=35, width=12, value=0x598
[ 31.269551] ok 12 pc=35, width=16, value=0x5998
[ 31.269658] ok 13 pc=45, width=8, value=0x72
[ 31.269764] ok 14 pc=45, width=12, value=0x732
[ 31.269868] ok 15 pc=45, width=16, value=0x7332
[ 31.269975] ok 16 pc=50, width=8, value=0x7f
[ 31.270081] ok 17 pc=50, width=12, value=0x7ff
[ 31.270185] ok 18 pc=50, width=16, value=0x7fff
[ 31.270287] ok 19 pc=52, width=8, value=0x84
[ 31.270388] ok 20 pc=52, width=12, value=0x850
[ 31.270494] ok 21 pc=52, width=16, value=0x851d
[ 31.270606] ok 22 pc=55, width=8, value=0x8b
[ 31.271004] ok 23 pc=55, width=12, value=0x8cb
[ 31.271387] ok 24 pc=55, width=16, value=0x8ccb
[ 31.271770] ok 25 pc=58, width=8, value=0x93
[ 31.272151] ok 26 pc=58, width=12, value=0x946
[ 31.272260] ok 27 pc=58, width=16, value=0x9479
[ 31.272366] ok 28 pc=75, width=8, value=0xbf
[ 31.272472] ok 29 pc=75, width=12, value=0xbff
[ 31.272580] ok 30 pc=75, width=16, value=0xbfff
[ 31.272686] ok 31 pc=80, width=8, value=0xcb
[ 31.272790] ok 32 pc=80, width=12, value=0xccb
[ 31.272895] ok 33 pc=80, width=16, value=0xcccb
[ 31.273000] ok 34 pc=88, width=8, value=0xe0
[ 31.273106] ok 35 pc=88, width=12, value=0xe13
[ 31.273209] ok 36 pc=88, width=16, value=0xe146
[ 31.273318] ok 37 pc=95, width=8, value=0xf2
[ 31.273424] ok 38 pc=95, width=12, value=0xf32
[ 31.273528] ok 39 pc=95, width=16, value=0xf332
[ 31.273635] ok 40 pc=100, width=8, value=0xff
[ 31.273742] ok 41 pc=100, width=12, value=0xfff
[ 31.273847] ok 42 pc=100, width=16, value=0xffff
[ 31.273849] # test_percent_to_mbw_max: pass:42 fail:0 skip:0 total:42
[ 31.273850] ok 3 test_percent_to_mbw_max
[ 31.273852] KTAP version 1
[ 31.273853] # Subtest: test_mbw_max_to_percent_limits
[ 31.273957] ok 1 wd=1
[ 31.274064] ok 2 wd=2
[ 31.274171] ok 3 wd=3
[ 31.274276] ok 4 wd=4
[ 31.274381] ok 5 wd=5
[ 31.274485] ok 6 wd=6
[ 31.274603] ok 7 wd=7
[ 31.274710] ok 8 wd=8
[ 31.274974] ok 9 wd=9
[ 31.275362] ok 10 wd=10
[ 31.275746] ok 11 wd=11
[ 31.276122] ok 12 wd=12
[ 31.276230] ok 13 wd=13
[ 31.276335] ok 14 wd=14
[ 31.276444] ok 15 wd=15
[ 31.276551] ok 16 wd=16
[ 31.276553] # test_mbw_max_to_percent_limits: pass:16 fail:0
skip:0 total:16
[ 31.276554] ok 4 test_mbw_max_to_percent_limits
[ 31.276605] # test_percent_to_max_rounding: Round-up rate: 43%
(18/42)
[ 31.276668] ok 5 test_percent_to_max_rounding
[ 31.276671] KTAP version 1
[ 31.276672] # Subtest: test_percent_max_roundtrip_stability
[ 31.276776] ok 1 wd=1
[ 31.276883] ok 2 wd=2
[ 31.276988] ok 3 wd=3
[ 31.277096] ok 4 wd=4
[ 31.277202] ok 5 wd=5
[ 31.277309] ok 6 wd=6
[ 31.277416] ok 7 wd=7
[ 31.277524] ok 8 wd=8
[ 31.277629] ok 9 wd=9
[ 31.277737] ok 10 wd=10
[ 31.277843] ok 11 wd=11
[ 31.277948] ok 12 wd=12
[ 31.278061] ok 13 wd=13
[ 31.278167] ok 14 wd=14
[ 31.278273] ok 15 wd=15
[ 31.278380] ok 16 wd=16
[ 31.278381] # test_percent_max_roundtrip_stability: pass:16
fail:0 skip:0 total:16
[ 31.278383] ok 6 test_percent_max_roundtrip_stability
[ 31.278385] KTAP version 1
[ 31.278386] # Subtest: test_rmid_idx_encoding
[ 31.278490] ok 1 max_partid=0, max_pmg=0
[ 31.278604] ok 2 max_partid=1, max_pmg=4
[ 31.279008] ok 3 max_partid=3, max_pmg=1
[ 31.279394] ok 4 max_partid=5, max_pmg=9
[ 31.279777] ok 5 max_partid=4, max_pmg=4
[ 31.280167] ok 6 max_partid=100, max_pmg=11
[ 31.358979] ok 7 max_partid=65535, max_pmg=255
[ 31.358985] # test_rmid_idx_encoding: pass:7 fail:0 skip:0 total:7
[ 31.358987] ok 7 test_rmid_idx_encoding
[ 31.358989] # mpam_resctrl_test_suite: pass:7 fail:0 skip:0 total:7
[ 31.358990] # Totals: pass:125 fail:0 skip:0 total:125
[ 31.358992] ok 2 mpam_resctrl_test_suite

------

Best regards,
Zeng Heng