Introduce SINGLE_ZONE Signed-off-by: Christoph Lameter Index: linux-2.6.17-mm6/include/linux/mmzone.h =================================================================== --- linux-2.6.17-mm6.orig/include/linux/mmzone.h 2006-07-05 23:27:53.251773767 -0700 +++ linux-2.6.17-mm6/include/linux/mmzone.h 2006-07-05 23:32:15.251141520 -0700 @@ -424,6 +424,26 @@ unsigned long __init node_memmap_size_by /* * zone_idx() returns 0 for the ZONE_DMA zone, 1 for the ZONE_NORMAL zone, etc. */ +#ifdef SINGLE_ZONE +#define zone_idx(zone) 0 + +static inline int populated_zone(struct zone *zone) +{ + return 1; +} + +static inline int is_normal_idx(int idx) +{ + return 1; +} + +static inline int is_normal(struct zone *zone) +{ + return 1; +} + +#else + #define zone_idx(zone) ((zone) - (zone)->zone_pgdat->node_zones) static inline int populated_zone(struct zone *zone) Index: linux-2.6.17-mm6/include/linux/mm.h =================================================================== --- linux-2.6.17-mm6.orig/include/linux/mm.h 2006-07-05 23:32:04.193233853 -0700 +++ linux-2.6.17-mm6/include/linux/mm.h 2006-07-05 23:32:15.252118022 -0700 @@ -469,16 +469,37 @@ void split_page(struct page *page, unsig #error SECTIONS_WIDTH+NODES_WIDTH+ZONES_WIDTH > FLAGS_RESERVED #endif +#ifdef SINGLE_ZONE +static inline unsigned long page_zonenum(struct page *page) +{ + return ZONE_NORMAL; +} + +static inline void set_page_zone(struct page *page, unsigned long zone) +{ + BUG_ON(zone); +} + +#else + #define ZONES_MASK ((1UL << ZONES_WIDTH) - 1) -#define NODES_MASK ((1UL << NODES_WIDTH) - 1) -#define SECTIONS_MASK ((1UL << SECTIONS_WIDTH) - 1) -#define ZONETABLE_MASK ((1UL << ZONETABLE_SHIFT) - 1) static inline unsigned long page_zonenum(struct page *page) { return (page->flags >> ZONES_PGSHIFT) & ZONES_MASK; } +static inline void set_page_zone(struct page *page, unsigned long zone) +{ + page->flags &= ~(ZONES_MASK << ZONES_PGSHIFT); + page->flags |= (zone & ZONES_MASK) << ZONES_PGSHIFT; +} +#endif + +#define NODES_MASK ((1UL << NODES_WIDTH) - 1) +#define SECTIONS_MASK ((1UL << SECTIONS_WIDTH) - 1) +#define ZONETABLE_MASK ((1UL << ZONETABLE_SHIFT) - 1) + struct zone; extern struct zone *zone_table[]; @@ -503,11 +524,6 @@ static inline unsigned long page_to_sect return (page->flags >> SECTIONS_PGSHIFT) & SECTIONS_MASK; } -static inline void set_page_zone(struct page *page, unsigned long zone) -{ - page->flags &= ~(ZONES_MASK << ZONES_PGSHIFT); - page->flags |= (zone & ZONES_MASK) << ZONES_PGSHIFT; -} static inline void set_page_node(struct page *page, unsigned long node) { page->flags &= ~(NODES_MASK << NODES_PGSHIFT);