[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