[PATCH 0/3] arm64: WFxT fixes, take #2

André Draszik andre.draszik at linaro.org
Thu Feb 26 04:53:31 PST 2026


Hi,

On Thu, 2026-02-26 at 08:22 +0000, Marc Zyngier wrote:
> After my previous WFxT fix went in 7.0-rc1 as 29cc0f3aa7c64 ("arm64:
> Force the use of CNTVCT_EL0 in __delay()"), Ben reported that it isn't
> playing nice with preemption, due to the use of the timer workaround
> percpu variable. This series tries to address this, and propose a
> hopefully better alternative.
> 
> That alternative is in the form of a new "virtual counter" accessor,
> available in the same way arch_timer_read_counter() is, except that it
> is guaranteed to be the virtual counter. This helper (a function
> pointer, really) is updated on each CPU boot in the same manner the
> counter accessor is.
> 
> This is then plugged into the __delay() helper, providing the expected
> guarantees (and resulting in a much nicer code gen).
> 
> Patches on top of -rc1.
> 
> Marc Zyngier (3):
>   arm64: Fix sampling the "stable" virtual counter in preemptible
>     section
>   clocksource/drivers/arm_arch_timer: Expose a direct accessor for the
>     virtual counter
>   arm64: Convert __delay_cycles() to arch_timer_read_vcounter()
> 
>  arch/arm64/lib/delay.c               | 5 ++++-
>  drivers/clocksource/arm_arch_timer.c | 5 +++++
>  include/clocksource/arm_arch_timer.h | 1 +
>  3 files changed, 10 insertions(+), 1 deletion(-)

FWIW, I was observing similar traces from various drivers and can confirm that
for me, on Pixel 6, the warnings are gone again with these patches applied on
top of next-20260225

Tested-by: André Draszik <andre.draszik at linaro.org>



More information about the linux-arm-kernel mailing list