On Sun, Sep 24 2023 at 08:19, Matthew Wilcox wrote: > On Sun, Sep 24, 2023 at 12:50:43AM +0200, Thomas Gleixner wrote: >> cond_resched() cannot nest and is obviously scope-less. >> >> The TIF_ALLOW_RESCHED mechanism, which sparked this discussion only >> pretends to be scoped. >> >> As Peter pointed out it does not properly nest with other mechanisms and >> it cannot even nest in itself because it is boolean. > > We can nest a single bit without turning it into a counter -- we > do this for memalloc_nofs_save() for example. Simply return the > current value of the bit, and pass it to _restore(). Right. That works, but the reverse logic still does not make sense: allow_resched(); .... spin_lock(); while resched_now_is_suboptimal(); ... spin_lock(); works. Thanks, tglx