diff options
Diffstat (limited to 'include')
-rw-r--r-- | include/linux/mmzone.h | 4 | ||||
-rw-r--r-- | include/linux/pageblock-flags.h | 25 |
2 files changed, 26 insertions, 3 deletions
diff --git a/include/linux/mmzone.h b/include/linux/mmzone.h index fef08c6cf75e..87a4045580f2 100644 --- a/include/linux/mmzone.h +++ b/include/linux/mmzone.h | |||
@@ -235,7 +235,7 @@ struct zone { | |||
235 | 235 | ||
236 | #ifndef CONFIG_SPARSEMEM | 236 | #ifndef CONFIG_SPARSEMEM |
237 | /* | 237 | /* |
238 | * Flags for a MAX_ORDER_NR_PAGES block. See pageblock-flags.h. | 238 | * Flags for a pageblock_nr_pages block. See pageblock-flags.h. |
239 | * In SPARSEMEM, this map is stored in struct mem_section | 239 | * In SPARSEMEM, this map is stored in struct mem_section |
240 | */ | 240 | */ |
241 | unsigned long *pageblock_flags; | 241 | unsigned long *pageblock_flags; |
@@ -740,7 +740,7 @@ extern struct zone *next_zone(struct zone *zone); | |||
740 | #define PAGE_SECTION_MASK (~(PAGES_PER_SECTION-1)) | 740 | #define PAGE_SECTION_MASK (~(PAGES_PER_SECTION-1)) |
741 | 741 | ||
742 | #define SECTION_BLOCKFLAGS_BITS \ | 742 | #define SECTION_BLOCKFLAGS_BITS \ |
743 | ((1 << (PFN_SECTION_SHIFT - (MAX_ORDER-1))) * NR_PAGEBLOCK_BITS) | 743 | ((1UL << (PFN_SECTION_SHIFT - pageblock_order)) * NR_PAGEBLOCK_BITS) |
744 | 744 | ||
745 | #if (MAX_ORDER - 1 + PAGE_SHIFT) > SECTION_SIZE_BITS | 745 | #if (MAX_ORDER - 1 + PAGE_SHIFT) > SECTION_SIZE_BITS |
746 | #error Allocator MAX_ORDER exceeds SECTION_SIZE | 746 | #error Allocator MAX_ORDER exceeds SECTION_SIZE |
diff --git a/include/linux/pageblock-flags.h b/include/linux/pageblock-flags.h index 5456da6b4ade..9ea130829fb4 100644 --- a/include/linux/pageblock-flags.h +++ b/include/linux/pageblock-flags.h | |||
@@ -1,6 +1,6 @@ | |||
1 | /* | 1 | /* |
2 | * Macros for manipulating and testing flags related to a | 2 | * Macros for manipulating and testing flags related to a |
3 | * MAX_ORDER_NR_PAGES block of pages. | 3 | * pageblock_nr_pages number of pages. |
4 | * | 4 | * |
5 | * This program is free software; you can redistribute it and/or modify | 5 | * This program is free software; you can redistribute it and/or modify |
6 | * it under the terms of the GNU General Public License as published by | 6 | * it under the terms of the GNU General Public License as published by |
@@ -35,6 +35,29 @@ enum pageblock_bits { | |||
35 | NR_PAGEBLOCK_BITS | 35 | NR_PAGEBLOCK_BITS |
36 | }; | 36 | }; |
37 | 37 | ||
38 | #ifdef CONFIG_HUGETLB_PAGE | ||
39 | |||
40 | #ifdef CONFIG_HUGETLB_PAGE_SIZE_VARIABLE | ||
41 | |||
42 | /* Huge page sizes are variable */ | ||
43 | extern int pageblock_order; | ||
44 | |||
45 | #else /* CONFIG_HUGETLB_PAGE_SIZE_VARIABLE */ | ||
46 | |||
47 | /* Huge pages are a constant size */ | ||
48 | #define pageblock_order HUGETLB_PAGE_ORDER | ||
49 | |||
50 | #endif /* CONFIG_HUGETLB_PAGE_SIZE_VARIABLE */ | ||
51 | |||
52 | #else /* CONFIG_HUGETLB_PAGE */ | ||
53 | |||
54 | /* If huge pages are not used, group by MAX_ORDER_NR_PAGES */ | ||
55 | #define pageblock_order (MAX_ORDER-1) | ||
56 | |||
57 | #endif /* CONFIG_HUGETLB_PAGE */ | ||
58 | |||
59 | #define pageblock_nr_pages (1UL << pageblock_order) | ||
60 | |||
38 | /* Forward declaration */ | 61 | /* Forward declaration */ |
39 | struct page; | 62 | struct page; |
40 | 63 | ||