[U-Boot] [PATCH] arm: timer: sunxi: fix a64 spurious timeout issues

Oskari Lemmelä oskari at lemmela.net
Sun Mar 17 18:41:31 UTC 2019


On 3/17/19 6:04 PM, Peter Robinson wrote:
> On Sun, Mar 17, 2019 at 2:56 PM Oskari Lemmela <oskari at lemmela.net> wrote:
>> Fixes spurious timeouts which have been seen during testing
>> SPI_SUNXI driver. The false timeouts disappear when number of
>> bits reduced to 10 in workaround.
>>
>> The false timeouts are caused by timer backward jumps.
> Wouldn't it be best to apply the same fix as the kernel uses here [1]
> as a more permanent fix?
>
> [1] https://www.spinics.net/lists/arm-kernel/msg699622.html

Sure. Difference is that retry counter was added to while loop in kernel 
side.

Only CNTPCT is used in u-boot.
So CNTVCT part of kernel patch is currently not needed?

>
>> Signed-off-by: Oskari Lemmela <oskari at lemmela.net>
>> ---
>>   arch/arm/cpu/armv8/generic_timer.c | 2 +-
>>   1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/arch/arm/cpu/armv8/generic_timer.c b/arch/arm/cpu/armv8/generic_timer.c
>> index c1706dcec1..2e06ee4ed2 100644
>> --- a/arch/arm/cpu/armv8/generic_timer.c
>> +++ b/arch/arm/cpu/armv8/generic_timer.c
>> @@ -66,7 +66,7 @@ unsigned long timer_read_counter(void)
>>          isb();
>>          do {
>>                  asm volatile("mrs %0, cntpct_el0" : "=r" (cntpct));
>> -       } while (((cntpct + 1) & GENMASK(10, 0)) <= 1);
>> +       } while (((cntpct + 1) & GENMASK(9, 0)) <= 1);
>>
>>          return cntpct;
>>   }
>> --
>> 2.17.1
>>
>> _______________________________________________
>> U-Boot mailing list
>> U-Boot at lists.denx.de
>> https://lists.denx.de/listinfo/u-boot

Oskari



More information about the U-Boot mailing list