Hi Hillf, On Wed, 2022-04-20 at 22:02 +0800, Hillf Danton wrote: > On Wed, 20 Apr 2022 10:59:05 +0100 Mel Gorman wrote: > > void drain_zone_pages(struct zone *zone, struct per_cpu_pages *pcp) > > { > > - unsigned long flags; > > int to_drain, batch; > > > > - local_lock_irqsave(&pagesets.lock, flags); > > batch = READ_ONCE(pcp->batch); > > to_drain = min(pcp->count, batch); > > - if (to_drain > 0) > > + if (to_drain > 0) { > > + unsigned long flags; > > + > > + /* free_pcppages_bulk expects IRQs disabled for zone->lock */ > > + local_irq_save(flags); > > + > > + spin_lock(&pcp->lock); > > Nit, spin_lock_irqsave() instead. See cover letter's: "This series is a partial series. Follow-on work would allow the local_irq_save to be converted to a local_irq to avoid IRQs being disabled/enabled in most cases. However, there are enough corner cases that it deserves a series on its own separated by one kernel release and the priority right now is to avoid interference of high priority tasks." Regards, -- Nicolás Sáenz