aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/linux/gfp.h5
-rw-r--r--mm/page_alloc.c3
2 files changed, 6 insertions, 2 deletions
diff --git a/include/linux/gfp.h b/include/linux/gfp.h
index f54adfcbec9c..49d2356bb82d 100644
--- a/include/linux/gfp.h
+++ b/include/linux/gfp.h
@@ -34,6 +34,7 @@ struct vm_area_struct;
34#else 34#else
35#define ___GFP_NOTRACK 0 35#define ___GFP_NOTRACK 0
36#endif 36#endif
37#define ___GFP_NO_KSWAPD 0x400000u
37 38
38/* 39/*
39 * GFP bitmasks.. 40 * GFP bitmasks..
@@ -81,13 +82,15 @@ struct vm_area_struct;
81#define __GFP_RECLAIMABLE ((__force gfp_t)___GFP_RECLAIMABLE) /* Page is reclaimable */ 82#define __GFP_RECLAIMABLE ((__force gfp_t)___GFP_RECLAIMABLE) /* Page is reclaimable */
82#define __GFP_NOTRACK ((__force gfp_t)___GFP_NOTRACK) /* Don't track with kmemcheck */ 83#define __GFP_NOTRACK ((__force gfp_t)___GFP_NOTRACK) /* Don't track with kmemcheck */
83 84
85#define __GFP_NO_KSWAPD ((__force gfp_t)___GFP_NO_KSWAPD)
86
84/* 87/*
85 * This may seem redundant, but it's a way of annotating false positives vs. 88 * This may seem redundant, but it's a way of annotating false positives vs.
86 * allocations that simply cannot be supported (e.g. page tables). 89 * allocations that simply cannot be supported (e.g. page tables).
87 */ 90 */
88#define __GFP_NOTRACK_FALSE_POSITIVE (__GFP_NOTRACK) 91#define __GFP_NOTRACK_FALSE_POSITIVE (__GFP_NOTRACK)
89 92
90#define __GFP_BITS_SHIFT 22 /* Room for 22 __GFP_FOO bits */ 93#define __GFP_BITS_SHIFT 23 /* Room for 23 __GFP_FOO bits */
91#define __GFP_BITS_MASK ((__force gfp_t)((1 << __GFP_BITS_SHIFT) - 1)) 94#define __GFP_BITS_MASK ((__force gfp_t)((1 << __GFP_BITS_SHIFT) - 1))
92 95
93/* This equals 0, but use constants in case they ever change */ 96/* This equals 0, but use constants in case they ever change */
diff --git a/mm/page_alloc.c b/mm/page_alloc.c
index 6e62d5f9d40b..bbd0423f2820 100644
--- a/mm/page_alloc.c
+++ b/mm/page_alloc.c
@@ -2027,7 +2027,8 @@ __alloc_pages_slowpath(gfp_t gfp_mask, unsigned int order,
2027 goto nopage; 2027 goto nopage;
2028 2028
2029restart: 2029restart:
2030 wake_all_kswapd(order, zonelist, high_zoneidx, 2030 if (!(gfp_mask & __GFP_NO_KSWAPD))
2031 wake_all_kswapd(order, zonelist, high_zoneidx,
2031 zone_idx(preferred_zone)); 2032 zone_idx(preferred_zone));
2032 2033
2033 /* 2034 /*