[PATCH v2 10/12] arm_mpam: Don't loop forever if there is the maximum possible amount of PARTIDs

James Morse james.morse at arm.com
Fri Oct 2 08:18:03 PDT 2026


Hi Ben,

On 17/09/2026 15:56, Ben Horgan wrote:
> On a theoretical platform with the maximum possible number of usable
> PARTIDs, 0XFFFF, the loops iterating over PARTID in mpam_reset_ris() and
> mpam_reprogram_ris() will never reach their termination condition leading
> to a system hang when register the cpu hotplug handlers when MPAM is
> enabling.
> 
> Fix these loops.

Ha! MPAM's mixture of num/max fields is really annoying.

Looks like we never loop over the PMG field.


> diff --git a/drivers/resctrl/mpam_devices.c b/drivers/resctrl/mpam_devices.c
> index cdc2d9d19e19..10fc5168699b 100644
> --- a/drivers/resctrl/mpam_devices.c
> +++ b/drivers/resctrl/mpam_devices.c
> @@ -1754,7 +1754,7 @@ static int mpam_save_mbwu_state(void *arg)
>   */
>  static int mpam_reset_ris(void *arg)
>  {
> -	u16 partid, partid_max;
> +	u16 partid_max;
>  	struct mpam_config reset_cfg = {};
>  	struct mpam_msc_ris *ris = arg;
>  
> @@ -1764,7 +1764,7 @@ static int mpam_reset_ris(void *arg)
>  	spin_lock(&partid_max_lock);
>  	partid_max = mpam_partid_max;
>  	spin_unlock(&partid_max_lock);
> -	for (partid = 0; partid <= partid_max; partid++)
> +	for (u32 partid = 0; partid <= partid_max; partid++)
>  		mpam_reprogram_ris_partid(ris, partid, &reset_cfg);
>  
>  	return 0;
> @@ -1811,7 +1811,6 @@ static int __write_config(void *arg)
>  
>  static void mpam_reprogram_msc(struct mpam_msc *msc)
>  {
> -	u16 partid;
>  	bool reset;
>  	struct mpam_config *cfg;
>  	struct mpam_msc_ris *ris;
> @@ -1835,7 +1834,7 @@ static void mpam_reprogram_msc(struct mpam_msc *msc)
>  		arg.comp = ris->vmsc->comp;
>  		arg.ris = ris;
>  		reset = true;
> -		for (partid = 0; partid <= mpam_partid_max; partid++) {
> +		for (u32 partid = 0; partid <= mpam_partid_max; partid++) {
>  			cfg = &ris->vmsc->comp->cfg[partid];
>  			if (!bitmap_empty(cfg->features, MPAM_FEATURE_LAST))
>  				reset = false;

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



Thanks,

James



More information about the linux-arm-kernel mailing list