As per the discussions [1] [2] this is an attempt to implement David's suggestion that page isolation should disable pcplists to avoid races. This is done without extra checks in fast paths, as I mentioned should be possible in the discussion, and explained in patch 5. Patches 1-4 are preparatory cleanups. Note this is untested RFC for now. Based on v5.9-rc4 plus Pavel's patch [2] (slated as a quick fix for mainline+stable). [1] https://lore.kernel.org/linux-mm/20200901124615.137200-1-pasha.tatashin@xxxxxxxxxx/ [2] https://lore.kernel.org/linux-mm/20200903140032.380431-1-pasha.tatashin@xxxxxxxxxx/ Vlastimil Babka (5): mm, page_alloc: clean up pageset high and batch update mm, page_alloc: calculate pageset high and batch once per zone mm, page_alloc(): remove setup_pageset() mm, page_alloc: cache pageset high and batch in struct zone mm, page_alloc: disable pcplists during page isolation include/linux/gfp.h | 1 + include/linux/mmzone.h | 2 + mm/internal.h | 4 ++ mm/memory_hotplug.c | 24 +++---- mm/page_alloc.c | 138 ++++++++++++++++++++++------------------- mm/page_isolation.c | 45 +++++++++++--- 6 files changed, 127 insertions(+), 87 deletions(-) -- 2.28.0