Re: [PATCH v2 11/12] arm64: sched/preempt: Enable HAS_SEPARATE_PREEMPT_RESCHED_BITS
From: Peter Zijlstra
Date: Thu May 28 2026 - 06:55:03 EST
On Tue, May 26, 2026 at 08:21:47AM -0700, Boqun Feng wrote:
> ARM64 already uses 64bit preempt count and the need reschedule bit is
> maintained in a separate 32bit than the preempt count. Therefore preempt
> count has enough bits to represent 16 level of NMI nesting, hence enable
> it for ARM64. This saves a per-CPU variable and additional instructions
> in the NMI path.
Egads, so ARM being load-store gets around the preempt bit scribble by
moving it into a separate word. And while that works, that does *not*
make the preempt_count 64bit.
All of this really only works because the actual preempt count bits
still fit inside a u32. The moment that changes, this comes unstuck :-(
And I suppose this is the reason Mark wanted that name change.
I suppose Power could employ the same scheme..
> Signed-off-by: Boqun Feng <boqun@xxxxxxxxxx>
> ---
> arch/arm64/Kconfig | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig
> index fe60738e5943..8178cb857115 100644
> --- a/arch/arm64/Kconfig
> +++ b/arch/arm64/Kconfig
> @@ -248,6 +248,7 @@ config ARM64
> select PCI_SYSCALL if PCI
> select POWER_RESET
> select POWER_SUPPLY
> + select HAS_SEPARATE_PREEMPT_RESCHED_BITS
> select SPARSE_IRQ
> select SWIOTLB
> select SYSCTL_EXCEPTION_TRACE
> --
> 2.50.1 (Apple Git-155)
>