On Tue, 13 Mar 2018 12:04:30 -0400 Pavel Tatashin <pasha.tatashin@xxxxxxxxxx> wrote: > > > > > --- a/mm/page_alloc.c > > > +++ b/mm/page_alloc.c > > > @@ -1506,7 +1506,6 @@ static void __init deferred_free_pages(int nid, int zid, unsigned long pfn, > > > } else if (!(pfn & nr_pgmask)) { > > > deferred_free_range(pfn - nr_free, nr_free); > > > nr_free = 1; > > > - cond_resched(); > > > } else { > > > nr_free++; > > > > And how can we simply remove these cond_resched()s? I assume this is > > being done because interrupts are now disabled? But those were there > > for a reason, weren't they? > > We must remove cond_resched() because we can't sleep anymore. They were > added to fight NMI timeouts, so I will replace them with > touch_nmi_watchdog() in a follow-up fix. This makes no sense. Any code section where we can add cond_resched() was never subject to NMI timeouts because that code cannot be running with disabled interrupts.