Re: [PATCH v2 0/45] arm_mpam: Add KVM/arm64 and resctrl glue code
From: Zeng Heng <hidden>
Date: 2025-12-27 08:10:58
Also in:
kvmarm, lkml
One major departure from the previous snapshot branches referenced in the base driver series is that the same MPAM setting are used for kernel-space and user-space. That is, MPAM1_EL1 is set to the same value as MPAM0_EL1 rather than keeping the default value. The advantages of this are that it is closer to the x86 model where the closid is globally applicable, all partids are usable from user-space and user-space can't bypass MPAM controls by doing the work in the kernel. However, this causes some priority inversion where a high priority task waits to take a mutex held by another whose resources are restricted by MPAM. It also adds some extra isb(). I would be interested in opinions/data on the policy for MPAM in kernel space, i.e how MPAM1_EL1 is set.
Another advantage is that, given the small size of the L2 cache, frequent switching of MPAM configurations between kernel and user modes can cause cache-capacity jitter, making it difficult to isolate interference from noisy neighborhood. However, in addition to the issues mentioned above, updating the MPAM1_EL1 configuration also exposes interrupt handling to the MPAM settings of the current task. I still agree with the current modification of setting MPAM1_EL1 to the same value as MPAM0_EL1. However, the ARM MPAM hardware supports more flexible configuration schemes than x86 RDT and another approach is also worth considering: Software can let a control group choose whether kernel mode follows the user mode MPAM settings, or whether the kernel mode configuration is delegated to the default control group, though this may change the existing user interface. Best Regards, Zeng Heng