diff options
Diffstat (limited to 'mm/page_alloc.c')
-rw-r--r-- | mm/page_alloc.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/mm/page_alloc.c b/mm/page_alloc.c index 0f92e04b58db..a34d9fcf1339 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c | |||
@@ -3367,10 +3367,14 @@ static void wake_all_kswapds(unsigned int order, const struct alloc_context *ac) | |||
3367 | { | 3367 | { |
3368 | struct zoneref *z; | 3368 | struct zoneref *z; |
3369 | struct zone *zone; | 3369 | struct zone *zone; |
3370 | pg_data_t *last_pgdat = NULL; | ||
3370 | 3371 | ||
3371 | for_each_zone_zonelist_nodemask(zone, z, ac->zonelist, | 3372 | for_each_zone_zonelist_nodemask(zone, z, ac->zonelist, |
3372 | ac->high_zoneidx, ac->nodemask) | 3373 | ac->high_zoneidx, ac->nodemask) { |
3373 | wakeup_kswapd(zone, order, ac_classzone_idx(ac)); | 3374 | if (last_pgdat != zone->zone_pgdat) |
3375 | wakeup_kswapd(zone, order, ac_classzone_idx(ac)); | ||
3376 | last_pgdat = zone->zone_pgdat; | ||
3377 | } | ||
3374 | } | 3378 | } |
3375 | 3379 | ||
3376 | static inline unsigned int | 3380 | static inline unsigned int |