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

Ben Horgan ben.horgan at arm.com
Thu Feb 26 05:36:35 PST 2026


Hi Marc,

On 2/26/26 08:22, 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(-)
> 

I checked with just the first patch applied and with all the patchs
applied. In both case I no longer see the preemption warnings on the s/w
model FVP Base C with CONFIG_DEBUG_PREEMPT.

Tested-by: Ben Horgan <ben.horgan at arm.com>

Thanks,

Ben




More information about the linux-arm-kernel mailing list