[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <c1dcc2a6-ca11-49e7-b7cd-d2ec70fed7f1@arm.com>
Date: Fri, 16 Jan 2026 12:12:53 +0000
From: Ben Horgan <ben.horgan@....com>
To: Catalin Marinas <catalin.marinas@....com>
Cc: amitsinght@...vell.com, baisheng.gao@...soc.com,
baolin.wang@...ux.alibaba.com, carl@...amperecomputing.com,
dave.martin@....com, david@...nel.org, dfustini@...libre.com,
fenghuay@...dia.com, gshan@...hat.com, james.morse@....com,
jonathan.cameron@...wei.com, kobak@...dia.com, lcherian@...vell.com,
linux-arm-kernel@...ts.infradead.org, linux-kernel@...r.kernel.org,
peternewman@...gle.com, punit.agrawal@....qualcomm.com,
quic_jiles@...cinc.com, reinette.chatre@...el.com, rohit.mathew@....com,
scott@...amperecomputing.com, sdonthineni@...dia.com,
tan.shaopeng@...itsu.com, xhao@...ux.alibaba.com, will@...nel.org,
corbet@....net, maz@...nel.org, oupton@...nel.org, joey.gouly@....com,
suzuki.poulose@....com, kvmarm@...ts.linux.dev
Subject: Re: [PATCH v3 02/47] arm_mpam: Use non-atomic bitops when modifying
feature bitmap
On 1/16/26 12:02, Ben Horgan wrote:
> 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@...wei.com>
>>> Signed-off-by: Ben Horgan <ben.horgan@....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
The mpam_set_clear() actually comes after in:
c10ca83a7783 arm_mpam: Merge supported features during mpam_enable() into mpam_class
but I think the fixes below is still the correct one as it is where we could
first start seeing the problem.
>
> Fixes: 8c90dc68a5de ("arm_mpam: Probe the hardware features resctrl supports")
>
> Thanks,
>
> Ben
>
>
Thanks,
Ben
Powered by blists - more mailing lists