The patch titled Subject: mm, page_alloc: skip ->watermark_boost for atomic order-0 allocations-fix has been removed from the -mm tree. Its filename was mm-page_alloc-skip-watermark_boost-for-atomic-order-0-allocations-fix.patch This patch was dropped because it was folded into mm-page_alloc-skip-waternark_boost-for-atomic-order-0-allocations.patch ------------------------------------------------------ From: Charan Teja Kalla <charante@xxxxxxxxxxxxxx> Subject: mm, page_alloc: skip ->watermark_boost for atomic order-0 allocations-fix fix suggested by Mel Gorman Link: http://lkml.kernel.org/r/31556793-57b1-1c21-1a9d-22674d9bd938@xxxxxxxxxxxxxx Signed-off-by: Charan Teja Reddy <charante@xxxxxxxxxxxxxx> Cc: Vinayak Menon <vinmenon@xxxxxxxxxxxxxx> Cc: Mel Gorman <mgorman@xxxxxxxxxxxxxxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> --- mm/page_alloc.c | 36 ++++++++++++++++++++---------------- 1 file changed, 20 insertions(+), 16 deletions(-) --- a/mm/page_alloc.c~mm-page_alloc-skip-watermark_boost-for-atomic-order-0-allocations-fix +++ a/mm/page_alloc.c @@ -3588,7 +3588,7 @@ bool zone_watermark_ok(struct zone *z, u static inline bool zone_watermark_fast(struct zone *z, unsigned int order, unsigned long mark, int highest_zoneidx, - unsigned int alloc_flags) + unsigned int alloc_flags, gfp_t gfp_mask) { long free_pages; @@ -3607,8 +3607,23 @@ static inline bool zone_watermark_fast(s return true; } - return __zone_watermark_ok(z, order, mark, highest_zoneidx, alloc_flags, - free_pages); + if (__zone_watermark_ok(z, order, mark, highest_zoneidx, alloc_flags, + free_pages)) + return true; + /* + * Ignore watermark boosting for GFP_ATOMIC order-0 allocations + * when checking the min watermark. The min watermark is the + * point where boosting is ignored so that kswapd is woken up + * when below the low watermark. + */ + if (unlikely(!order && (gfp_mask & __GFP_ATOMIC) && z->watermark_boost + && ((alloc_flags & ALLOC_WMARK_MASK) == WMARK_MIN))) { + mark = z->_watermark[WMARK_MIN]; + return __zone_watermark_ok(z, order, mark, highest_zoneidx, + alloc_flags, free_pages); + } + + return false; } bool zone_watermark_ok_safe(struct zone *z, unsigned int order, @@ -3751,20 +3766,9 @@ retry: } mark = wmark_pages(zone, alloc_flags & ALLOC_WMARK_MASK); - /* - * Allow GFP_ATOMIC order-0 allocations to exclude the - * zone->watermark_boost in their watermark calculations. - * We rely on the ALLOC_ flags set for GFP_ATOMIC requests in - * gfp_to_alloc_flags() for this. Reason not to use the - * GFP_ATOMIC directly is that we want to fall back to slow path - * thus wake up kswapd. - */ - if (unlikely(!order && !(alloc_flags & ALLOC_WMARK_MASK) && - (alloc_flags & (ALLOC_HARDER | ALLOC_HIGH)))) { - mark = zone->_watermark[WMARK_MIN]; - } if (!zone_watermark_fast(zone, order, mark, - ac->highest_zoneidx, alloc_flags)) { + ac->highest_zoneidx, alloc_flags, + gfp_mask)) { int ret; #ifdef CONFIG_DEFERRED_STRUCT_PAGE_INIT _ Patches currently in -mm which might be from charante@xxxxxxxxxxxxxx are mm-page_alloc-skip-waternark_boost-for-atomic-order-0-allocations.patch mm-memory_hotplug-update-pcp-lists-everytime-onlining-a-memory-block.patch