Re: [PATCH v3 02/47] arm_mpam: Use non-atomic bitops when modifying feature bitmap

Ben Horgan
2026-01-16T12:02:18Z

Hi Catalin,

On 1/16/26 11:57, Catalin Marinas wrote:
> On Mon, Jan 12, 2026 at 04:58:29PM +0000, Ben Horgan wrote:
>> In the test__props_mismatch() kunit test we rely on the struct mpam_props
>> being packed to ensure memcmp doesn't consider packing. Making it packed
>> reduces the alignment of the features bitmap and so breaks a requirement
>> for the use of atomics. As we don't rely on the set/clear of these bits
>> being atomic, just make them non-atomic.
>>
>> Reviewed-by: Jonathan Cameron <jonathan.cameron@huawei.com>
>> Signed-off-by: Ben Horgan <ben.horgan@arm.com>
>> ---
>> Changes since v2:
>> Add comment (Jonathan)
>> ---
>> drivers/resctrl/mpam_internal.h | 8 ++++++--
>> 1 file changed, 6 insertions(+), 2 deletions(-)
>>
>> diff --git a/drivers/resctrl/mpam_internal.h b/drivers/resctrl/mpam_internal.h
>> index 17cdc3080d58..e8971842b124 100644
>> --- a/drivers/resctrl/mpam_internal.h
>> +++ b/drivers/resctrl/mpam_internal.h
>> @@ -200,8 +200,12 @@ struct mpam_props {
>> } PACKED_FOR_KUNIT;
>>
>> #define mpam_has_feature(_feat, x) test_bit(_feat, (x)->features)
>> -#define mpam_set_feature(_feat, x) set_bit(_feat, (x)->features)
>> -#define mpam_clear_feature(_feat, x) clear_bit(_feat, (x)->features)
>> +/*
>> + * The non-atomic get/set operations are used because if struct mpam_props is
>> + * packed, the alignment requirements for atomics aren't met.
>> + */
>> +#define mpam_set_feature(_feat, x) __set_bit(_feat, (x)->features)
>> +#define mpam_clear_feature(_feat, x) __clear_bit(_feat, (x)->features)
>
> After discussing privately, I can see how test__props_mismatch() can
> end up with unaligned atomics on the mmap_props::features array. Happy to
> pick it up for 6.19 (probably the first patch as well, though that's
> harmless).

Yes please.

>
> Is there a Fixes tag here for future reference?
>

Yes, the mpam_set/clear macros were introduced in

Fixes: 8c90dc68a5de ("arm_mpam: Probe the hardware features resctrl supports")

Thanks,

Ben