Re: [PATCH v13 01/17] preempt: Track NMI nesting to separate per-CPU counter
From: Peter Zijlstra
Date: Tue Oct 14 2025 - 06:48:58 EST
On Mon, Oct 13, 2025 at 11:48:03AM -0400, Lyude Paul wrote:
> #define __nmi_enter() \
> do { \
> lockdep_off(); \
> arch_nmi_enter(); \
> - BUG_ON(in_nmi() == NMI_MASK); \
> - __preempt_count_add(NMI_OFFSET + HARDIRQ_OFFSET); \
> + BUG_ON(__this_cpu_read(nmi_nesting) == UINT_MAX); \
> + __this_cpu_inc(nmi_nesting); \
An NMI that nests from here..
> + __preempt_count_add(HARDIRQ_OFFSET); \
> + if (__this_cpu_read(nmi_nesting) == 1) \
.. until here, will see nmi_nesting > 1 and not set NMI_OFFSET.
> + __preempt_count_add(NMI_OFFSET); \