|
@@ -4300,25 +4300,24 @@ static inline void setup_usemap(struct pglist_data *pgdat,
|
|
|
|
|
|
#ifdef CONFIG_HUGETLB_PAGE_SIZE_VARIABLE
|
|
|
|
|
|
-/* Return a sensible default order for the pageblock size. */
|
|
|
-static inline int pageblock_default_order(void)
|
|
|
-{
|
|
|
- if (HPAGE_SHIFT > PAGE_SHIFT)
|
|
|
- return HUGETLB_PAGE_ORDER;
|
|
|
-
|
|
|
- return MAX_ORDER-1;
|
|
|
-}
|
|
|
-
|
|
|
/* Initialise the number of pages represented by NR_PAGEBLOCK_BITS */
|
|
|
-static inline void __init set_pageblock_order(unsigned int order)
|
|
|
+static inline void __init set_pageblock_order(void)
|
|
|
{
|
|
|
+ unsigned int order;
|
|
|
+
|
|
|
/* Check that pageblock_nr_pages has not already been setup */
|
|
|
if (pageblock_order)
|
|
|
return;
|
|
|
|
|
|
+ if (HPAGE_SHIFT > PAGE_SHIFT)
|
|
|
+ order = HUGETLB_PAGE_ORDER;
|
|
|
+ else
|
|
|
+ order = MAX_ORDER - 1;
|
|
|
+
|
|
|
/*
|
|
|
* Assume the largest contiguous order of interest is a huge page.
|
|
|
- * This value may be variable depending on boot parameters on IA64
|
|
|
+ * This value may be variable depending on boot parameters on IA64 and
|
|
|
+ * powerpc.
|
|
|
*/
|
|
|
pageblock_order = order;
|
|
|
}
|
|
@@ -4326,15 +4325,13 @@ static inline void __init set_pageblock_order(unsigned int order)
|
|
|
|
|
|
/*
|
|
|
* When CONFIG_HUGETLB_PAGE_SIZE_VARIABLE is not set, set_pageblock_order()
|
|
|
- * and pageblock_default_order() are unused as pageblock_order is set
|
|
|
- * at compile-time. See include/linux/pageblock-flags.h for the values of
|
|
|
- * pageblock_order based on the kernel config
|
|
|
+ * is unused as pageblock_order is set at compile-time. See
|
|
|
+ * include/linux/pageblock-flags.h for the values of pageblock_order based on
|
|
|
+ * the kernel config
|
|
|
*/
|
|
|
-static inline int pageblock_default_order(unsigned int order)
|
|
|
+static inline void set_pageblock_order(void)
|
|
|
{
|
|
|
- return MAX_ORDER-1;
|
|
|
}
|
|
|
-#define set_pageblock_order(x) do {} while (0)
|
|
|
|
|
|
#endif /* CONFIG_HUGETLB_PAGE_SIZE_VARIABLE */
|
|
|
|
|
@@ -4422,7 +4419,7 @@ static void __paginginit free_area_init_core(struct pglist_data *pgdat,
|
|
|
if (!size)
|
|
|
continue;
|
|
|
|
|
|
- set_pageblock_order(pageblock_default_order());
|
|
|
+ set_pageblock_order();
|
|
|
setup_usemap(pgdat, zone, size);
|
|
|
ret = init_currently_empty_zone(zone, zone_start_pfn,
|
|
|
size, MEMMAP_EARLY);
|