Re: [PATCH v2 0/45] arm_mpam: Add KVM/arm64 and resctrl glue code

From: Zeng Heng
Date: Sat Dec 27 2025 - 03:11:10 EST


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