Merge to Fedora kernel-2.6.17-1.2142_FC4 patched with stable patch-2.6.17.13-vs2...
[linux-2.6.git] / include / asm-ia64 / mmzone.h
index f28f0b2..34efe88 100644 (file)
 #ifndef _ASM_IA64_MMZONE_H
 #define _ASM_IA64_MMZONE_H
 
-#include <linux/config.h>
+#include <linux/numa.h>
 #include <asm/page.h>
 #include <asm/meminit.h>
 
-#ifdef CONFIG_DISCONTIGMEM
+#ifdef CONFIG_NUMA
+
+static inline int pfn_to_nid(unsigned long pfn)
+{
+#ifdef CONFIG_NUMA
+       extern int paddr_to_nid(unsigned long);
+       int nid = paddr_to_nid(pfn << PAGE_SHIFT);
+       if (nid < 0)
+               return 0;
+       else
+               return nid;
+#else
+       return 0;
+#endif
+}
+
+#ifdef CONFIG_HAVE_ARCH_EARLY_PFN_TO_NID
+extern int early_pfn_to_nid(unsigned long pfn);
+#endif
 
 #ifdef CONFIG_IA64_DIG /* DIG systems are small */
 # define MAX_PHYSNODE_ID       8
-# define NR_NODES              8
-# define NR_NODE_MEMBLKS       (NR_NODES * 8)
+# define NR_NODE_MEMBLKS       (MAX_NUMNODES * 8)
 #else /* sn2 is the biggest case, so we use that if !DIG */
 # define MAX_PHYSNODE_ID       2048
-# define NR_NODES              256
-# define NR_NODE_MEMBLKS       (NR_NODES * 4)
+# define NR_NODE_MEMBLKS       (MAX_NUMNODES * 4)
 #endif
 
-extern unsigned long max_low_pfn;
-
-#define pfn_valid(pfn)         (((pfn) < max_low_pfn) && ia64_pfn_valid(pfn))
-#define page_to_pfn(page)      ((unsigned long) (page - vmem_map))
-#define pfn_to_page(pfn)       (vmem_map + (pfn))
+#else /* CONFIG_NUMA */
+# define NR_NODE_MEMBLKS       (MAX_NUMNODES * 4)
+#endif /* CONFIG_NUMA */
 
-#else /* CONFIG_DISCONTIGMEM */
-# define NR_NODE_MEMBLKS       4
-#endif /* CONFIG_DISCONTIGMEM */
 #endif /* _ASM_IA64_MMZONE_H */