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

James Morse james.morse at arm.com
Fri Oct 2 08:17:46 PDT 2026


Hi Ben,

On 17/09/2026 15:56, Ben Horgan wrote:
> 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.
Weird indenting - I'll fix that.


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

Nothing about the documentation of the resctrl arch hooks here...
I'll drop this part of the commit message.


> 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;
>  	}

I mistakenly thought mpam_msmon_read() was summing, so did the same here. But its not.

Reviewed-by: James Morse <james.morse at arm.com>


Thanks,

James






More information about the linux-arm-kernel mailing list