> > > > You can't block when scheduling, either. What if you can't refill the pool? > > Why can't we (I am not a scheduler guy)? IRQ's are not yet disabled, > what prevents us from blocking while the old process has not yet been > removed from the CPU? Answering my own question: single cpu machine, the thread is going away, but tries to refill the dynamic-pages, alloc_page() goes into slow path i.e (__alloc_pages_slowpath), where it performs cond_resched() while waiting for oom kills, and yet we cannot leave the CPU.