[PATCH] ARM: stm32: Fix secure_waitbits() mask check

Patrick DELAUNAY patrick.delaunay at foss.st.com
Wed Sep 25 20:19:32 CEST 2024


On 9/25/24 19:37, Patrick DELAUNAY wrote:
> Hi Marek,
>
> On 7/8/24 13:43, Marek Vasut wrote:
>> Do not apply bitwise AND to register value and expected value, only
>> apply bitwise AND to register value and mask, and only then compare
>> the result with expected value that the function polls for.
>>
>> Fixes: b49105320a5b ("stm32mp: psci: Implement PSCI system suspend 
>> and DRAM SSR")
>> Signed-off-by: Marek Vasut <marex at denx.de>
>> ---
>> Cc: Patrice Chotard <patrice.chotard at foss.st.com>
>> Cc: Patrick Delaunay <patrick.delaunay at foss.st.com>
>> Cc: Tom Rini <trini at konsulko.com>
>> Cc: u-boot at lists.denx.de
>> Cc: uboot-stm32 at st-md-mailman.stormreply.com
>> ---
>>   arch/arm/mach-stm32mp/stm32mp1/psci.c | 3 +--
>>   1 file changed, 1 insertion(+), 2 deletions(-)
>>
>> diff --git a/arch/arm/mach-stm32mp/stm32mp1/psci.c 
>> b/arch/arm/mach-stm32mp/stm32mp1/psci.c
>> index e99103910d9..ffdafea464d 100644
>> --- a/arch/arm/mach-stm32mp/stm32mp1/psci.c
>> +++ b/arch/arm/mach-stm32mp/stm32mp1/psci.c
>> @@ -393,8 +393,7 @@ static int __secure secure_waitbits(u32 reg, u32 
>> mask, u32 val)
>>       asm volatile("mrrc p15, 0, %Q0, %R0, c14" : "=r" (start));
>>       for (;;) {
>>           tmp = readl(reg);
>> -        tmp &= mask;
>> -        if ((tmp & val) == val)
>> +        if ((tmp & mask) == val)
>>               return 0;
>>           asm volatile("mrrc p15, 0, %Q0, %R0, c14" : "=r" (end));
>>           if ((end - start) > delay)
>
>
>
> Reviewed-by: Patrick Delaunay <patrick.delaunay at foss.st.com>
>
> Thanks
> Patrick
>



Applied to u-boot-stm/master, thanks!

Regards
Patrick




More information about the U-Boot mailing list