Index: 2.6.12-rc1/include/asm-ppc64/mmzone.h =================================================================== --- 2.6.12-rc1.orig/include/asm-ppc64/mmzone.h 2005-03-21 17:08:43.000000000 -0600 +++ 2.6.12-rc1/include/asm-ppc64/mmzone.h 2005-03-21 17:09:20.000000000 -0600 @@ -10,7 +10,8 @@ #include #include -#ifdef CONFIG_DISCONTIGMEM +/* Put things that are common to DISCONTIGMEM and NUMA here */ +#if (CONFIG_DISCONTIGMEM) || (CONFIG_NUMA) extern struct pglist_data *node_data[]; @@ -29,6 +30,13 @@ extern int nr_cpus_in_node[]; /* NUMA debugging, will not work on a DLPAR machine */ #undef DEBUG_NUMA +#endif /* (CONFIG_DISCONTIGMEM) || (CONFIG_NUMA) */ + +#ifdef CONFIG_NUMA +/* + * Return a pointer to the node data for node n. + */ +#define NODE_DATA(nid) (node_data[nid]) static inline int pa_to_nid(unsigned long pa) { @@ -50,9 +58,9 @@ static inline int pa_to_nid(unsigned lon #define pfn_to_nid(pfn) pa_to_nid((pfn) << PAGE_SHIFT) /* - * Return a pointer to the node data for node n. + * Given a kernel address, find the home node of the underlying memory. */ -#define NODE_DATA(nid) (node_data[nid]) +#define kvaddr_to_nid(kaddr) pa_to_nid(__pa(kaddr)) #define node_localnr(pfn, nid) ((pfn) - NODE_DATA(nid)->node_start_pfn) @@ -60,18 +68,33 @@ static inline int pa_to_nid(unsigned lon * Following are macros that each numa implmentation must define. */ -/* - * Given a kernel address, find the home node of the underlying memory. - */ -#define kvaddr_to_nid(kaddr) pa_to_nid(__pa(kaddr)) - #define node_mem_map(nid) (NODE_DATA(nid)->node_mem_map) #define node_start_pfn(nid) (NODE_DATA(nid)->node_start_pfn) #define node_end_pfn(nid) (NODE_DATA(nid)->node_end_pfn) + + #define local_mapnr(kvaddr) \ ( (__pa(kvaddr) >> PAGE_SHIFT) - node_start_pfn(kvaddr_to_nid(kvaddr)) +#endif /* CONFIG_NUMA */ + +#if (CONFIG_DISCONTIGMEM) && (!CONFIG_NUMA) +#define NODE_DATA(nid) (node_data[0]) +#define pa_to_nid(pa) 0 +#define pfn_to_nid(pfn) 0 +#define kvaddr_to_nid(kaddr) 0 +#define node_localnr(pfn, nid) ((pfn) - NODE_DATA(0)->node_start_pfn) +#define node_mem_map(nid) (NODE_DATA(0)->node_mem_map) +#define node_start_pfn(nid) (NODE_DATA(0)->node_start_pfn) +#define node_end_pfn(nid) (NODE_DATA(0)->node_end_pfn) + +#define local_mapnr(kvaddr) \ + ( (__pa(kvaddr) >> PAGE_SHIFT) - node_start_pfn(0) + +#endif /* (CONFIG_DISCONTIGMEM) && (!CONFIG_NUMA) */ + +#ifdef CONFIG_DISCONTIGMEM /* Written this way to avoid evaluating arguments twice */ #define discontigmem_pfn_to_page(pfn) \ ({ \