summaryrefslogtreecommitdiffstats
path: root/arch/i386/mm/discontig.c
diff options
context:
space:
mode:
authorYasunori Goto <y-goto@jp.fujitsu.com>2006-12-22 01:11:13 -0800
committerLinus Torvalds <torvalds@woody.osdl.org>2006-12-22 08:55:50 -0800
commit7c7e9425f114a109b07be2c2c1c6c169e34e9bb3 (patch)
tree9b530791da2e7683d80f779492347fff148d16b2 /arch/i386/mm/discontig.c
parent080dd51d81c8a9373303e9c344bbc75aacf54dce (diff)
downloadlinux-7c7e9425f114a109b07be2c2c1c6c169e34e9bb3.tar.gz
linux-7c7e9425f114a109b07be2c2c1c6c169e34e9bb3.tar.bz2
linux-7c7e9425f114a109b07be2c2c1c6c169e34e9bb3.zip
[PATCH] memory hotplug: fix compile error for i386 with NUMA config
Fix compile error when config memory hotplug with numa on i386. The cause of compile error was missing of arch_add_memory(), remove_memory(), and memory_add_physaddr_to_nid(). Signed-off-by: Yasunori Goto <y-goto@jp.fujitsu.com> Acked-by: David Rientjes <rientjes@cs.washington.edu> Acked-by: Randy Dunlap <randy.dunlap@oracle.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'arch/i386/mm/discontig.c')
-rw-r--r--arch/i386/mm/discontig.c28
1 files changed, 28 insertions, 0 deletions
diff --git a/arch/i386/mm/discontig.c b/arch/i386/mm/discontig.c
index 103b76e56a94..e0c390d6ceb5 100644
--- a/arch/i386/mm/discontig.c
+++ b/arch/i386/mm/discontig.c
@@ -405,3 +405,31 @@ void __init set_highmem_pages_init(int bad_ppro)
totalram_pages += totalhigh_pages;
#endif
}
+
+#ifdef CONFIG_MEMORY_HOTPLUG
+int paddr_to_nid(u64 addr)
+{
+ int nid;
+ unsigned long pfn = PFN_DOWN(addr);
+
+ for_each_node(nid)
+ if (node_start_pfn[nid] <= pfn &&
+ pfn < node_end_pfn[nid])
+ return nid;
+
+ return -1;
+}
+
+/*
+ * This function is used to ask node id BEFORE memmap and mem_section's
+ * initialization (pfn_to_nid() can't be used yet).
+ * If _PXM is not defined on ACPI's DSDT, node id must be found by this.
+ */
+int memory_add_physaddr_to_nid(u64 addr)
+{
+ int nid = paddr_to_nid(addr);
+ return (nid >= 0) ? nid : 0;
+}
+
+EXPORT_SYMBOL_GPL(memory_add_physaddr_to_nid);
+#endif