at v4.8 21 kB view raw
1#ifndef __LINUX_GFP_H 2#define __LINUX_GFP_H 3 4#include <linux/mmdebug.h> 5#include <linux/mmzone.h> 6#include <linux/stddef.h> 7#include <linux/linkage.h> 8#include <linux/topology.h> 9 10struct vm_area_struct; 11 12/* 13 * In case of changes, please don't forget to update 14 * include/trace/events/mmflags.h and tools/perf/builtin-kmem.c 15 */ 16 17/* Plain integer GFP bitmasks. Do not use this directly. */ 18#define ___GFP_DMA 0x01u 19#define ___GFP_HIGHMEM 0x02u 20#define ___GFP_DMA32 0x04u 21#define ___GFP_MOVABLE 0x08u 22#define ___GFP_RECLAIMABLE 0x10u 23#define ___GFP_HIGH 0x20u 24#define ___GFP_IO 0x40u 25#define ___GFP_FS 0x80u 26#define ___GFP_COLD 0x100u 27#define ___GFP_NOWARN 0x200u 28#define ___GFP_REPEAT 0x400u 29#define ___GFP_NOFAIL 0x800u 30#define ___GFP_NORETRY 0x1000u 31#define ___GFP_MEMALLOC 0x2000u 32#define ___GFP_COMP 0x4000u 33#define ___GFP_ZERO 0x8000u 34#define ___GFP_NOMEMALLOC 0x10000u 35#define ___GFP_HARDWALL 0x20000u 36#define ___GFP_THISNODE 0x40000u 37#define ___GFP_ATOMIC 0x80000u 38#define ___GFP_ACCOUNT 0x100000u 39#define ___GFP_NOTRACK 0x200000u 40#define ___GFP_DIRECT_RECLAIM 0x400000u 41#define ___GFP_OTHER_NODE 0x800000u 42#define ___GFP_WRITE 0x1000000u 43#define ___GFP_KSWAPD_RECLAIM 0x2000000u 44/* If the above are modified, __GFP_BITS_SHIFT may need updating */ 45 46/* 47 * Physical address zone modifiers (see linux/mmzone.h - low four bits) 48 * 49 * Do not put any conditional on these. If necessary modify the definitions 50 * without the underscores and use them consistently. The definitions here may 51 * be used in bit comparisons. 52 */ 53#define __GFP_DMA ((__force gfp_t)___GFP_DMA) 54#define __GFP_HIGHMEM ((__force gfp_t)___GFP_HIGHMEM) 55#define __GFP_DMA32 ((__force gfp_t)___GFP_DMA32) 56#define __GFP_MOVABLE ((__force gfp_t)___GFP_MOVABLE) /* ZONE_MOVABLE allowed */ 57#define GFP_ZONEMASK (__GFP_DMA|__GFP_HIGHMEM|__GFP_DMA32|__GFP_MOVABLE) 58 59/* 60 * Page mobility and placement hints 61 * 62 * These flags provide hints about how mobile the page is. Pages with similar 63 * mobility are placed within the same pageblocks to minimise problems due 64 * to external fragmentation. 65 * 66 * __GFP_MOVABLE (also a zone modifier) indicates that the page can be 67 * moved by page migration during memory compaction or can be reclaimed. 68 * 69 * __GFP_RECLAIMABLE is used for slab allocations that specify 70 * SLAB_RECLAIM_ACCOUNT and whose pages can be freed via shrinkers. 71 * 72 * __GFP_WRITE indicates the caller intends to dirty the page. Where possible, 73 * these pages will be spread between local zones to avoid all the dirty 74 * pages being in one zone (fair zone allocation policy). 75 * 76 * __GFP_HARDWALL enforces the cpuset memory allocation policy. 77 * 78 * __GFP_THISNODE forces the allocation to be satisified from the requested 79 * node with no fallbacks or placement policy enforcements. 80 * 81 * __GFP_ACCOUNT causes the allocation to be accounted to kmemcg. 82 */ 83#define __GFP_RECLAIMABLE ((__force gfp_t)___GFP_RECLAIMABLE) 84#define __GFP_WRITE ((__force gfp_t)___GFP_WRITE) 85#define __GFP_HARDWALL ((__force gfp_t)___GFP_HARDWALL) 86#define __GFP_THISNODE ((__force gfp_t)___GFP_THISNODE) 87#define __GFP_ACCOUNT ((__force gfp_t)___GFP_ACCOUNT) 88 89/* 90 * Watermark modifiers -- controls access to emergency reserves 91 * 92 * __GFP_HIGH indicates that the caller is high-priority and that granting 93 * the request is necessary before the system can make forward progress. 94 * For example, creating an IO context to clean pages. 95 * 96 * __GFP_ATOMIC indicates that the caller cannot reclaim or sleep and is 97 * high priority. Users are typically interrupt handlers. This may be 98 * used in conjunction with __GFP_HIGH 99 * 100 * __GFP_MEMALLOC allows access to all memory. This should only be used when 101 * the caller guarantees the allocation will allow more memory to be freed 102 * very shortly e.g. process exiting or swapping. Users either should 103 * be the MM or co-ordinating closely with the VM (e.g. swap over NFS). 104 * 105 * __GFP_NOMEMALLOC is used to explicitly forbid access to emergency reserves. 106 * This takes precedence over the __GFP_MEMALLOC flag if both are set. 107 */ 108#define __GFP_ATOMIC ((__force gfp_t)___GFP_ATOMIC) 109#define __GFP_HIGH ((__force gfp_t)___GFP_HIGH) 110#define __GFP_MEMALLOC ((__force gfp_t)___GFP_MEMALLOC) 111#define __GFP_NOMEMALLOC ((__force gfp_t)___GFP_NOMEMALLOC) 112 113/* 114 * Reclaim modifiers 115 * 116 * __GFP_IO can start physical IO. 117 * 118 * __GFP_FS can call down to the low-level FS. Clearing the flag avoids the 119 * allocator recursing into the filesystem which might already be holding 120 * locks. 121 * 122 * __GFP_DIRECT_RECLAIM indicates that the caller may enter direct reclaim. 123 * This flag can be cleared to avoid unnecessary delays when a fallback 124 * option is available. 125 * 126 * __GFP_KSWAPD_RECLAIM indicates that the caller wants to wake kswapd when 127 * the low watermark is reached and have it reclaim pages until the high 128 * watermark is reached. A caller may wish to clear this flag when fallback 129 * options are available and the reclaim is likely to disrupt the system. The 130 * canonical example is THP allocation where a fallback is cheap but 131 * reclaim/compaction may cause indirect stalls. 132 * 133 * __GFP_RECLAIM is shorthand to allow/forbid both direct and kswapd reclaim. 134 * 135 * __GFP_REPEAT: Try hard to allocate the memory, but the allocation attempt 136 * _might_ fail. This depends upon the particular VM implementation. 137 * 138 * __GFP_NOFAIL: The VM implementation _must_ retry infinitely: the caller 139 * cannot handle allocation failures. New users should be evaluated carefully 140 * (and the flag should be used only when there is no reasonable failure 141 * policy) but it is definitely preferable to use the flag rather than 142 * opencode endless loop around allocator. 143 * 144 * __GFP_NORETRY: The VM implementation must not retry indefinitely and will 145 * return NULL when direct reclaim and memory compaction have failed to allow 146 * the allocation to succeed. The OOM killer is not called with the current 147 * implementation. 148 */ 149#define __GFP_IO ((__force gfp_t)___GFP_IO) 150#define __GFP_FS ((__force gfp_t)___GFP_FS) 151#define __GFP_DIRECT_RECLAIM ((__force gfp_t)___GFP_DIRECT_RECLAIM) /* Caller can reclaim */ 152#define __GFP_KSWAPD_RECLAIM ((__force gfp_t)___GFP_KSWAPD_RECLAIM) /* kswapd can wake */ 153#define __GFP_RECLAIM ((__force gfp_t)(___GFP_DIRECT_RECLAIM|___GFP_KSWAPD_RECLAIM)) 154#define __GFP_REPEAT ((__force gfp_t)___GFP_REPEAT) 155#define __GFP_NOFAIL ((__force gfp_t)___GFP_NOFAIL) 156#define __GFP_NORETRY ((__force gfp_t)___GFP_NORETRY) 157 158/* 159 * Action modifiers 160 * 161 * __GFP_COLD indicates that the caller does not expect to be used in the near 162 * future. Where possible, a cache-cold page will be returned. 163 * 164 * __GFP_NOWARN suppresses allocation failure reports. 165 * 166 * __GFP_COMP address compound page metadata. 167 * 168 * __GFP_ZERO returns a zeroed page on success. 169 * 170 * __GFP_NOTRACK avoids tracking with kmemcheck. 171 * 172 * __GFP_NOTRACK_FALSE_POSITIVE is an alias of __GFP_NOTRACK. It's a means of 173 * distinguishing in the source between false positives and allocations that 174 * cannot be supported (e.g. page tables). 175 * 176 * __GFP_OTHER_NODE is for allocations that are on a remote node but that 177 * should not be accounted for as a remote allocation in vmstat. A 178 * typical user would be khugepaged collapsing a huge page on a remote 179 * node. 180 */ 181#define __GFP_COLD ((__force gfp_t)___GFP_COLD) 182#define __GFP_NOWARN ((__force gfp_t)___GFP_NOWARN) 183#define __GFP_COMP ((__force gfp_t)___GFP_COMP) 184#define __GFP_ZERO ((__force gfp_t)___GFP_ZERO) 185#define __GFP_NOTRACK ((__force gfp_t)___GFP_NOTRACK) 186#define __GFP_NOTRACK_FALSE_POSITIVE (__GFP_NOTRACK) 187#define __GFP_OTHER_NODE ((__force gfp_t)___GFP_OTHER_NODE) 188 189/* Room for N __GFP_FOO bits */ 190#define __GFP_BITS_SHIFT 26 191#define __GFP_BITS_MASK ((__force gfp_t)((1 << __GFP_BITS_SHIFT) - 1)) 192 193/* 194 * Useful GFP flag combinations that are commonly used. It is recommended 195 * that subsystems start with one of these combinations and then set/clear 196 * __GFP_FOO flags as necessary. 197 * 198 * GFP_ATOMIC users can not sleep and need the allocation to succeed. A lower 199 * watermark is applied to allow access to "atomic reserves" 200 * 201 * GFP_KERNEL is typical for kernel-internal allocations. The caller requires 202 * ZONE_NORMAL or a lower zone for direct access but can direct reclaim. 203 * 204 * GFP_KERNEL_ACCOUNT is the same as GFP_KERNEL, except the allocation is 205 * accounted to kmemcg. 206 * 207 * GFP_NOWAIT is for kernel allocations that should not stall for direct 208 * reclaim, start physical IO or use any filesystem callback. 209 * 210 * GFP_NOIO will use direct reclaim to discard clean pages or slab pages 211 * that do not require the starting of any physical IO. 212 * 213 * GFP_NOFS will use direct reclaim but will not use any filesystem interfaces. 214 * 215 * GFP_USER is for userspace allocations that also need to be directly 216 * accessibly by the kernel or hardware. It is typically used by hardware 217 * for buffers that are mapped to userspace (e.g. graphics) that hardware 218 * still must DMA to. cpuset limits are enforced for these allocations. 219 * 220 * GFP_DMA exists for historical reasons and should be avoided where possible. 221 * The flags indicates that the caller requires that the lowest zone be 222 * used (ZONE_DMA or 16M on x86-64). Ideally, this would be removed but 223 * it would require careful auditing as some users really require it and 224 * others use the flag to avoid lowmem reserves in ZONE_DMA and treat the 225 * lowest zone as a type of emergency reserve. 226 * 227 * GFP_DMA32 is similar to GFP_DMA except that the caller requires a 32-bit 228 * address. 229 * 230 * GFP_HIGHUSER is for userspace allocations that may be mapped to userspace, 231 * do not need to be directly accessible by the kernel but that cannot 232 * move once in use. An example may be a hardware allocation that maps 233 * data directly into userspace but has no addressing limitations. 234 * 235 * GFP_HIGHUSER_MOVABLE is for userspace allocations that the kernel does not 236 * need direct access to but can use kmap() when access is required. They 237 * are expected to be movable via page reclaim or page migration. Typically, 238 * pages on the LRU would also be allocated with GFP_HIGHUSER_MOVABLE. 239 * 240 * GFP_TRANSHUGE and GFP_TRANSHUGE_LIGHT are used for THP allocations. They are 241 * compound allocations that will generally fail quickly if memory is not 242 * available and will not wake kswapd/kcompactd on failure. The _LIGHT 243 * version does not attempt reclaim/compaction at all and is by default used 244 * in page fault path, while the non-light is used by khugepaged. 245 */ 246#define GFP_ATOMIC (__GFP_HIGH|__GFP_ATOMIC|__GFP_KSWAPD_RECLAIM) 247#define GFP_KERNEL (__GFP_RECLAIM | __GFP_IO | __GFP_FS) 248#define GFP_KERNEL_ACCOUNT (GFP_KERNEL | __GFP_ACCOUNT) 249#define GFP_NOWAIT (__GFP_KSWAPD_RECLAIM) 250#define GFP_NOIO (__GFP_RECLAIM) 251#define GFP_NOFS (__GFP_RECLAIM | __GFP_IO) 252#define GFP_TEMPORARY (__GFP_RECLAIM | __GFP_IO | __GFP_FS | \ 253 __GFP_RECLAIMABLE) 254#define GFP_USER (__GFP_RECLAIM | __GFP_IO | __GFP_FS | __GFP_HARDWALL) 255#define GFP_DMA __GFP_DMA 256#define GFP_DMA32 __GFP_DMA32 257#define GFP_HIGHUSER (GFP_USER | __GFP_HIGHMEM) 258#define GFP_HIGHUSER_MOVABLE (GFP_HIGHUSER | __GFP_MOVABLE) 259#define GFP_TRANSHUGE_LIGHT ((GFP_HIGHUSER_MOVABLE | __GFP_COMP | \ 260 __GFP_NOMEMALLOC | __GFP_NOWARN) & ~__GFP_RECLAIM) 261#define GFP_TRANSHUGE (GFP_TRANSHUGE_LIGHT | __GFP_DIRECT_RECLAIM) 262 263/* Convert GFP flags to their corresponding migrate type */ 264#define GFP_MOVABLE_MASK (__GFP_RECLAIMABLE|__GFP_MOVABLE) 265#define GFP_MOVABLE_SHIFT 3 266 267static inline int gfpflags_to_migratetype(const gfp_t gfp_flags) 268{ 269 VM_WARN_ON((gfp_flags & GFP_MOVABLE_MASK) == GFP_MOVABLE_MASK); 270 BUILD_BUG_ON((1UL << GFP_MOVABLE_SHIFT) != ___GFP_MOVABLE); 271 BUILD_BUG_ON((___GFP_MOVABLE >> GFP_MOVABLE_SHIFT) != MIGRATE_MOVABLE); 272 273 if (unlikely(page_group_by_mobility_disabled)) 274 return MIGRATE_UNMOVABLE; 275 276 /* Group based on mobility */ 277 return (gfp_flags & GFP_MOVABLE_MASK) >> GFP_MOVABLE_SHIFT; 278} 279#undef GFP_MOVABLE_MASK 280#undef GFP_MOVABLE_SHIFT 281 282static inline bool gfpflags_allow_blocking(const gfp_t gfp_flags) 283{ 284 return !!(gfp_flags & __GFP_DIRECT_RECLAIM); 285} 286 287#ifdef CONFIG_HIGHMEM 288#define OPT_ZONE_HIGHMEM ZONE_HIGHMEM 289#else 290#define OPT_ZONE_HIGHMEM ZONE_NORMAL 291#endif 292 293#ifdef CONFIG_ZONE_DMA 294#define OPT_ZONE_DMA ZONE_DMA 295#else 296#define OPT_ZONE_DMA ZONE_NORMAL 297#endif 298 299#ifdef CONFIG_ZONE_DMA32 300#define OPT_ZONE_DMA32 ZONE_DMA32 301#else 302#define OPT_ZONE_DMA32 ZONE_NORMAL 303#endif 304 305/* 306 * GFP_ZONE_TABLE is a word size bitstring that is used for looking up the 307 * zone to use given the lowest 4 bits of gfp_t. Entries are ZONE_SHIFT long 308 * and there are 16 of them to cover all possible combinations of 309 * __GFP_DMA, __GFP_DMA32, __GFP_MOVABLE and __GFP_HIGHMEM. 310 * 311 * The zone fallback order is MOVABLE=>HIGHMEM=>NORMAL=>DMA32=>DMA. 312 * But GFP_MOVABLE is not only a zone specifier but also an allocation 313 * policy. Therefore __GFP_MOVABLE plus another zone selector is valid. 314 * Only 1 bit of the lowest 3 bits (DMA,DMA32,HIGHMEM) can be set to "1". 315 * 316 * bit result 317 * ================= 318 * 0x0 => NORMAL 319 * 0x1 => DMA or NORMAL 320 * 0x2 => HIGHMEM or NORMAL 321 * 0x3 => BAD (DMA+HIGHMEM) 322 * 0x4 => DMA32 or DMA or NORMAL 323 * 0x5 => BAD (DMA+DMA32) 324 * 0x6 => BAD (HIGHMEM+DMA32) 325 * 0x7 => BAD (HIGHMEM+DMA32+DMA) 326 * 0x8 => NORMAL (MOVABLE+0) 327 * 0x9 => DMA or NORMAL (MOVABLE+DMA) 328 * 0xa => MOVABLE (Movable is valid only if HIGHMEM is set too) 329 * 0xb => BAD (MOVABLE+HIGHMEM+DMA) 330 * 0xc => DMA32 (MOVABLE+DMA32) 331 * 0xd => BAD (MOVABLE+DMA32+DMA) 332 * 0xe => BAD (MOVABLE+DMA32+HIGHMEM) 333 * 0xf => BAD (MOVABLE+DMA32+HIGHMEM+DMA) 334 * 335 * GFP_ZONES_SHIFT must be <= 2 on 32 bit platforms. 336 */ 337 338#if defined(CONFIG_ZONE_DEVICE) && (MAX_NR_ZONES-1) <= 4 339/* ZONE_DEVICE is not a valid GFP zone specifier */ 340#define GFP_ZONES_SHIFT 2 341#else 342#define GFP_ZONES_SHIFT ZONES_SHIFT 343#endif 344 345#if 16 * GFP_ZONES_SHIFT > BITS_PER_LONG 346#error GFP_ZONES_SHIFT too large to create GFP_ZONE_TABLE integer 347#endif 348 349#define GFP_ZONE_TABLE ( \ 350 (ZONE_NORMAL << 0 * GFP_ZONES_SHIFT) \ 351 | (OPT_ZONE_DMA << ___GFP_DMA * GFP_ZONES_SHIFT) \ 352 | (OPT_ZONE_HIGHMEM << ___GFP_HIGHMEM * GFP_ZONES_SHIFT) \ 353 | (OPT_ZONE_DMA32 << ___GFP_DMA32 * GFP_ZONES_SHIFT) \ 354 | (ZONE_NORMAL << ___GFP_MOVABLE * GFP_ZONES_SHIFT) \ 355 | (OPT_ZONE_DMA << (___GFP_MOVABLE | ___GFP_DMA) * GFP_ZONES_SHIFT) \ 356 | (ZONE_MOVABLE << (___GFP_MOVABLE | ___GFP_HIGHMEM) * GFP_ZONES_SHIFT)\ 357 | (OPT_ZONE_DMA32 << (___GFP_MOVABLE | ___GFP_DMA32) * GFP_ZONES_SHIFT)\ 358) 359 360/* 361 * GFP_ZONE_BAD is a bitmap for all combinations of __GFP_DMA, __GFP_DMA32 362 * __GFP_HIGHMEM and __GFP_MOVABLE that are not permitted. One flag per 363 * entry starting with bit 0. Bit is set if the combination is not 364 * allowed. 365 */ 366#define GFP_ZONE_BAD ( \ 367 1 << (___GFP_DMA | ___GFP_HIGHMEM) \ 368 | 1 << (___GFP_DMA | ___GFP_DMA32) \ 369 | 1 << (___GFP_DMA32 | ___GFP_HIGHMEM) \ 370 | 1 << (___GFP_DMA | ___GFP_DMA32 | ___GFP_HIGHMEM) \ 371 | 1 << (___GFP_MOVABLE | ___GFP_HIGHMEM | ___GFP_DMA) \ 372 | 1 << (___GFP_MOVABLE | ___GFP_DMA32 | ___GFP_DMA) \ 373 | 1 << (___GFP_MOVABLE | ___GFP_DMA32 | ___GFP_HIGHMEM) \ 374 | 1 << (___GFP_MOVABLE | ___GFP_DMA32 | ___GFP_DMA | ___GFP_HIGHMEM) \ 375) 376 377static inline enum zone_type gfp_zone(gfp_t flags) 378{ 379 enum zone_type z; 380 int bit = (__force int) (flags & GFP_ZONEMASK); 381 382 z = (GFP_ZONE_TABLE >> (bit * GFP_ZONES_SHIFT)) & 383 ((1 << GFP_ZONES_SHIFT) - 1); 384 VM_BUG_ON((GFP_ZONE_BAD >> bit) & 1); 385 return z; 386} 387 388/* 389 * There is only one page-allocator function, and two main namespaces to 390 * it. The alloc_page*() variants return 'struct page *' and as such 391 * can allocate highmem pages, the *get*page*() variants return 392 * virtual kernel addresses to the allocated page(s). 393 */ 394 395static inline int gfp_zonelist(gfp_t flags) 396{ 397#ifdef CONFIG_NUMA 398 if (unlikely(flags & __GFP_THISNODE)) 399 return ZONELIST_NOFALLBACK; 400#endif 401 return ZONELIST_FALLBACK; 402} 403 404/* 405 * We get the zone list from the current node and the gfp_mask. 406 * This zone list contains a maximum of MAXNODES*MAX_NR_ZONES zones. 407 * There are two zonelists per node, one for all zones with memory and 408 * one containing just zones from the node the zonelist belongs to. 409 * 410 * For the normal case of non-DISCONTIGMEM systems the NODE_DATA() gets 411 * optimized to &contig_page_data at compile-time. 412 */ 413static inline struct zonelist *node_zonelist(int nid, gfp_t flags) 414{ 415 return NODE_DATA(nid)->node_zonelists + gfp_zonelist(flags); 416} 417 418#ifndef HAVE_ARCH_FREE_PAGE 419static inline void arch_free_page(struct page *page, int order) { } 420#endif 421#ifndef HAVE_ARCH_ALLOC_PAGE 422static inline void arch_alloc_page(struct page *page, int order) { } 423#endif 424 425struct page * 426__alloc_pages_nodemask(gfp_t gfp_mask, unsigned int order, 427 struct zonelist *zonelist, nodemask_t *nodemask); 428 429static inline struct page * 430__alloc_pages(gfp_t gfp_mask, unsigned int order, 431 struct zonelist *zonelist) 432{ 433 return __alloc_pages_nodemask(gfp_mask, order, zonelist, NULL); 434} 435 436/* 437 * Allocate pages, preferring the node given as nid. The node must be valid and 438 * online. For more general interface, see alloc_pages_node(). 439 */ 440static inline struct page * 441__alloc_pages_node(int nid, gfp_t gfp_mask, unsigned int order) 442{ 443 VM_BUG_ON(nid < 0 || nid >= MAX_NUMNODES); 444 VM_WARN_ON(!node_online(nid)); 445 446 return __alloc_pages(gfp_mask, order, node_zonelist(nid, gfp_mask)); 447} 448 449/* 450 * Allocate pages, preferring the node given as nid. When nid == NUMA_NO_NODE, 451 * prefer the current CPU's closest node. Otherwise node must be valid and 452 * online. 453 */ 454static inline struct page *alloc_pages_node(int nid, gfp_t gfp_mask, 455 unsigned int order) 456{ 457 if (nid == NUMA_NO_NODE) 458 nid = numa_mem_id(); 459 460 return __alloc_pages_node(nid, gfp_mask, order); 461} 462 463#ifdef CONFIG_NUMA 464extern struct page *alloc_pages_current(gfp_t gfp_mask, unsigned order); 465 466static inline struct page * 467alloc_pages(gfp_t gfp_mask, unsigned int order) 468{ 469 return alloc_pages_current(gfp_mask, order); 470} 471extern struct page *alloc_pages_vma(gfp_t gfp_mask, int order, 472 struct vm_area_struct *vma, unsigned long addr, 473 int node, bool hugepage); 474#define alloc_hugepage_vma(gfp_mask, vma, addr, order) \ 475 alloc_pages_vma(gfp_mask, order, vma, addr, numa_node_id(), true) 476#else 477#define alloc_pages(gfp_mask, order) \ 478 alloc_pages_node(numa_node_id(), gfp_mask, order) 479#define alloc_pages_vma(gfp_mask, order, vma, addr, node, false)\ 480 alloc_pages(gfp_mask, order) 481#define alloc_hugepage_vma(gfp_mask, vma, addr, order) \ 482 alloc_pages(gfp_mask, order) 483#endif 484#define alloc_page(gfp_mask) alloc_pages(gfp_mask, 0) 485#define alloc_page_vma(gfp_mask, vma, addr) \ 486 alloc_pages_vma(gfp_mask, 0, vma, addr, numa_node_id(), false) 487#define alloc_page_vma_node(gfp_mask, vma, addr, node) \ 488 alloc_pages_vma(gfp_mask, 0, vma, addr, node, false) 489 490extern unsigned long __get_free_pages(gfp_t gfp_mask, unsigned int order); 491extern unsigned long get_zeroed_page(gfp_t gfp_mask); 492 493void *alloc_pages_exact(size_t size, gfp_t gfp_mask); 494void free_pages_exact(void *virt, size_t size); 495void * __meminit alloc_pages_exact_nid(int nid, size_t size, gfp_t gfp_mask); 496 497#define __get_free_page(gfp_mask) \ 498 __get_free_pages((gfp_mask), 0) 499 500#define __get_dma_pages(gfp_mask, order) \ 501 __get_free_pages((gfp_mask) | GFP_DMA, (order)) 502 503extern void __free_pages(struct page *page, unsigned int order); 504extern void free_pages(unsigned long addr, unsigned int order); 505extern void free_hot_cold_page(struct page *page, bool cold); 506extern void free_hot_cold_page_list(struct list_head *list, bool cold); 507 508struct page_frag_cache; 509extern void *__alloc_page_frag(struct page_frag_cache *nc, 510 unsigned int fragsz, gfp_t gfp_mask); 511extern void __free_page_frag(void *addr); 512 513#define __free_page(page) __free_pages((page), 0) 514#define free_page(addr) free_pages((addr), 0) 515 516void page_alloc_init(void); 517void drain_zone_pages(struct zone *zone, struct per_cpu_pages *pcp); 518void drain_all_pages(struct zone *zone); 519void drain_local_pages(struct zone *zone); 520 521void page_alloc_init_late(void); 522 523/* 524 * gfp_allowed_mask is set to GFP_BOOT_MASK during early boot to restrict what 525 * GFP flags are used before interrupts are enabled. Once interrupts are 526 * enabled, it is set to __GFP_BITS_MASK while the system is running. During 527 * hibernation, it is used by PM to avoid I/O during memory allocation while 528 * devices are suspended. 529 */ 530extern gfp_t gfp_allowed_mask; 531 532/* Returns true if the gfp_mask allows use of ALLOC_NO_WATERMARK */ 533bool gfp_pfmemalloc_allowed(gfp_t gfp_mask); 534 535extern void pm_restrict_gfp_mask(void); 536extern void pm_restore_gfp_mask(void); 537 538#ifdef CONFIG_PM_SLEEP 539extern bool pm_suspended_storage(void); 540#else 541static inline bool pm_suspended_storage(void) 542{ 543 return false; 544} 545#endif /* CONFIG_PM_SLEEP */ 546 547#if (defined(CONFIG_MEMORY_ISOLATION) && defined(CONFIG_COMPACTION)) || defined(CONFIG_CMA) 548/* The below functions must be run on a range from a single zone. */ 549extern int alloc_contig_range(unsigned long start, unsigned long end, 550 unsigned migratetype); 551extern void free_contig_range(unsigned long pfn, unsigned nr_pages); 552#endif 553 554#ifdef CONFIG_CMA 555/* CMA stuff */ 556extern void init_cma_reserved_pageblock(struct page *page); 557#endif 558 559#endif /* __LINUX_GFP_H */