[PATCH v2 09/12] arm_mpam: resctrl: Make read_mon_cdp_safe() self consistent

Ben Horgan ben.horgan at arm.com
Thu Sep 17 07:56:14 PDT 2026


When read_mon_cdp_safe() is called with cdp_enabled equal to false then the
reading returned in val is the sum of the monitor values for the given
component. However, when cdp_enabled equal to true it is again the sum of
the monitor values but with the initial value of val also added. Both
resctrl_arch_cntr_read() and resctrl_arch_rmid_read() call
read_mon_cdp_safe() and are documented to return the val directly without
consideration of the older value.

 The val is always zeroed before read_mon_cdp_safe() is called except in
 __check_limbo() and __l3_mon_event_count_sum() but the latter is not
 relevant on MPAM systems.  The extra accumulation in __check_limbo() means
 when there are multiple RMIDs in limbo some of them may be marked dirty
 when they are already clean.

Change the cdp_enabled equals true case to match the false case and the
documentation of the resctrl arch hooks.

Fixes: fb56b29932ca ("arm_mpam: resctrl: Add resctrl_arch_rmid_read()")
Signed-off-by: Ben Horgan <ben.horgan at arm.com>
Tested-by: Gavin Shan <gshan at redhat.com>
---
Add fixes tag as actually fixes an issue (Sashiko)
Update commit message
---
 drivers/resctrl/mpam_resctrl.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/resctrl/mpam_resctrl.c b/drivers/resctrl/mpam_resctrl.c
index b825bd90d4bd..321741a702fe 100644
--- a/drivers/resctrl/mpam_resctrl.c
+++ b/drivers/resctrl/mpam_resctrl.c
@@ -497,7 +497,7 @@ static int read_mon_cdp_safe(struct mpam_resctrl_mon *mon, struct mpam_component
 		if (err)
 			return err;
 
-		*val += code_val + data_val;
+		*val = code_val + data_val;
 		return 0;
 	}
 
-- 
2.43.0




More information about the linux-arm-kernel mailing list