diff options
Diffstat (limited to 'include/linux')
-rw-r--r-- | include/linux/mm.h | 6 | ||||
-rw-r--r-- | include/linux/mmzone.h | 19 | ||||
-rw-r--r-- | include/linux/page-flags.h | 19 |
3 files changed, 15 insertions, 29 deletions
diff --git a/include/linux/mm.h b/include/linux/mm.h index 4f3c1b2f44de..526f810367d9 100644 --- a/include/linux/mm.h +++ b/include/linux/mm.h | |||
@@ -407,7 +407,7 @@ static inline void set_compound_order(struct page *page, unsigned long order) | |||
407 | 407 | ||
408 | #define ZONES_WIDTH ZONES_SHIFT | 408 | #define ZONES_WIDTH ZONES_SHIFT |
409 | 409 | ||
410 | #if SECTIONS_WIDTH+ZONES_WIDTH+NODES_SHIFT <= FLAGS_RESERVED | 410 | #if SECTIONS_WIDTH+ZONES_WIDTH+NODES_SHIFT <= BITS_PER_LONG - NR_PAGEFLAGS |
411 | #define NODES_WIDTH NODES_SHIFT | 411 | #define NODES_WIDTH NODES_SHIFT |
412 | #else | 412 | #else |
413 | #ifdef CONFIG_SPARSEMEM_VMEMMAP | 413 | #ifdef CONFIG_SPARSEMEM_VMEMMAP |
@@ -455,8 +455,8 @@ static inline void set_compound_order(struct page *page, unsigned long order) | |||
455 | 455 | ||
456 | #define ZONEID_PGSHIFT (ZONEID_PGOFF * (ZONEID_SHIFT != 0)) | 456 | #define ZONEID_PGSHIFT (ZONEID_PGOFF * (ZONEID_SHIFT != 0)) |
457 | 457 | ||
458 | #if SECTIONS_WIDTH+NODES_WIDTH+ZONES_WIDTH > FLAGS_RESERVED | 458 | #if SECTIONS_WIDTH+NODES_WIDTH+ZONES_WIDTH > BITS_PER_LONG - NR_PAGEFLAGS |
459 | #error SECTIONS_WIDTH+NODES_WIDTH+ZONES_WIDTH > FLAGS_RESERVED | 459 | #error SECTIONS_WIDTH+NODES_WIDTH+ZONES_WIDTH > BITS_PER_LONG - NR_PAGEFLAGS |
460 | #endif | 460 | #endif |
461 | 461 | ||
462 | #define ZONES_MASK ((1UL << ZONES_WIDTH) - 1) | 462 | #define ZONES_MASK ((1UL << ZONES_WIDTH) - 1) |
diff --git a/include/linux/mmzone.h b/include/linux/mmzone.h index 0aece6d8937e..c7a51dac441d 100644 --- a/include/linux/mmzone.h +++ b/include/linux/mmzone.h | |||
@@ -820,25 +820,6 @@ static inline struct zoneref *first_zones_zonelist(struct zonelist *zonelist, | |||
820 | #include <asm/sparsemem.h> | 820 | #include <asm/sparsemem.h> |
821 | #endif | 821 | #endif |
822 | 822 | ||
823 | #if BITS_PER_LONG == 32 | ||
824 | /* | ||
825 | * with 32 bit page->flags field, we reserve 9 bits for node/zone info. | ||
826 | * there are 4 zones (3 bits) and this leaves 9-3=6 bits for nodes. | ||
827 | */ | ||
828 | #define FLAGS_RESERVED 9 | ||
829 | |||
830 | #elif BITS_PER_LONG == 64 | ||
831 | /* | ||
832 | * with 64 bit flags field, there's plenty of room. | ||
833 | */ | ||
834 | #define FLAGS_RESERVED 32 | ||
835 | |||
836 | #else | ||
837 | |||
838 | #error BITS_PER_LONG not defined | ||
839 | |||
840 | #endif | ||
841 | |||
842 | #if !defined(CONFIG_HAVE_ARCH_EARLY_PFN_TO_NID) && \ | 823 | #if !defined(CONFIG_HAVE_ARCH_EARLY_PFN_TO_NID) && \ |
843 | !defined(CONFIG_ARCH_POPULATES_NODE_MAP) | 824 | !defined(CONFIG_ARCH_POPULATES_NODE_MAP) |
844 | static inline unsigned long early_pfn_to_nid(unsigned long pfn) | 825 | static inline unsigned long early_pfn_to_nid(unsigned long pfn) |
diff --git a/include/linux/page-flags.h b/include/linux/page-flags.h index d66971530caa..00e55e23b777 100644 --- a/include/linux/page-flags.h +++ b/include/linux/page-flags.h | |||
@@ -6,7 +6,10 @@ | |||
6 | #define PAGE_FLAGS_H | 6 | #define PAGE_FLAGS_H |
7 | 7 | ||
8 | #include <linux/types.h> | 8 | #include <linux/types.h> |
9 | #ifndef __GENERATING_BOUNDS_H | ||
9 | #include <linux/mm_types.h> | 10 | #include <linux/mm_types.h> |
11 | #include <linux/bounds.h> | ||
12 | #endif /* !__GENERATING_BOUNDS_H */ | ||
10 | 13 | ||
11 | /* | 14 | /* |
12 | * Various page->flags bits: | 15 | * Various page->flags bits: |
@@ -59,13 +62,12 @@ | |||
59 | * extends from the high bits downwards. | 62 | * extends from the high bits downwards. |
60 | * | 63 | * |
61 | * | FIELD | ... | FLAGS | | 64 | * | FIELD | ... | FLAGS | |
62 | * N-1 ^ 0 | 65 | * N-1 ^ 0 |
63 | * (N-FLAGS_RESERVED) | 66 | * (NR_PAGEFLAGS) |
64 | * | 67 | * |
65 | * The fields area is reserved for fields mapping zone, node and SPARSEMEM | 68 | * The fields area is reserved for fields mapping zone, node (for NUMA) and |
66 | * section. The boundry between these two areas is defined by | 69 | * SPARSEMEM section (for variants of SPARSEMEM that require section ids like |
67 | * FLAGS_RESERVED which defines the width of the fields section | 70 | * SPARSEMEM_EXTREME with !SPARSEMEM_VMEMMAP). |
68 | * (see linux/mmzone.h). New flags must _not_ overlap with this area. | ||
69 | */ | 71 | */ |
70 | enum pageflags { | 72 | enum pageflags { |
71 | PG_locked, /* Page is locked. Don't touch. */ | 73 | PG_locked, /* Page is locked. Don't touch. */ |
@@ -101,9 +103,11 @@ enum pageflags { | |||
101 | */ | 103 | */ |
102 | PG_uncached = 31, /* Page has been mapped as uncached */ | 104 | PG_uncached = 31, /* Page has been mapped as uncached */ |
103 | #endif | 105 | #endif |
104 | NR_PAGEFLAGS | 106 | __NR_PAGEFLAGS |
105 | }; | 107 | }; |
106 | 108 | ||
109 | #ifndef __GENERATING_BOUNDS_H | ||
110 | |||
107 | /* | 111 | /* |
108 | * Manipulation of page state flags | 112 | * Manipulation of page state flags |
109 | */ | 113 | */ |
@@ -304,4 +308,5 @@ static inline void set_page_writeback(struct page *page) | |||
304 | test_set_page_writeback(page); | 308 | test_set_page_writeback(page); |
305 | } | 309 | } |
306 | 310 | ||
311 | #endif /* !__GENERATING_BOUNDS_H */ | ||
307 | #endif /* PAGE_FLAGS_H */ | 312 | #endif /* PAGE_FLAGS_H */ |