[PATCH v2 11/12] arm_mpam: Switch to kvzmalloc_objs() for allocation of component cfg

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


Hi Ben,

On 17/09/2026 15:56, Ben Horgan wrote:
> Each component cfg is sized by the size of a per-PARTID multiplied by the
> number of PARTIDs. On a platform sized to push the limits of the
> specification, the allocation using kzalloc_objs() will consistently
> fail. Change to use kvzmalloc_objs() so that large allocations fall back to
> vmalloc() based allocations.

Makes sense. We should do this for any allocation that could be larger than
a page.


> diff --git a/drivers/resctrl/mpam_devices.c b/drivers/resctrl/mpam_devices.c
> index 10fc5168699b..d74292f8cdfd 100644
> --- a/drivers/resctrl/mpam_devices.c
> +++ b/drivers/resctrl/mpam_devices.c
> @@ -157,7 +157,7 @@ static void mpam_free_garbage(void)
>  		if (iter->pdev)
>  			devm_kfree(&iter->pdev->dev, iter->to_free);
>  		else
> -			kfree(iter->to_free);
> +			kvfree(iter->to_free);

And kvfree() is safe to use with non-vmalloc'd memory that we use for things
like struct class, which get free'd here.


>  	}
>  }
>  
> @@ -2692,7 +2692,7 @@ static int __allocate_component_cfg(struct mpam_component *comp)
>  	if (comp->cfg)
>  		return 0;
>  
> -	comp->cfg = kzalloc_objs(*comp->cfg, mpam_partid_max + 1);
> +	comp->cfg = kvzalloc_objs(*comp->cfg, mpam_partid_max + 1);
>  	if (!comp->cfg)
>  		return -ENOMEM;
>  


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


Thanks,

James



More information about the linux-arm-kernel mailing list