On 2020-06-30 13:10:12 [+0200], Peter Zijlstra wrote:
> > --- a/arch/x86/entry/common.c
> > +++ b/arch/x86/entry/common.c
> > @@ -612,13 +612,12 @@ bool noinstr idtentry_enter_cond_rcu(struct pt_regs
> > *regs)
> >
> > static void idtentry_exit_cond_resched(struct pt_regs *regs, bool
> > may_sched)
> > {
> > - if (may_sched && !preempt_count()) {
> > + if (may_sched && should_resched(0)) {
> > /* Sanity check RCU and thread stack */
> > rcu_irq_exit_check_preempt();
> > if (IS_ENABLED(CONFIG_DEBUG_ENTRY))
> > WARN_ON_ONCE(!on_thread_stack());
>
> This was done on purpose, your change avoids hitting this WARN.
>
> The thing is, if we could preempt (but not nessecarily have to) we want
> to validate we're on the thread stack.
Okay then.
Sebastian