Commit 8c2676a5870ab15cbeea9f826266bc946fe3cc26
Committed by
Linus Torvalds
1 parent
4942e998b4
Exists in
master
and in
7 other branches
[PATCH] hot-add-mem x86_64: memory_add_physaddr_to_nid node fixup
In cases where the acpi memory-add event does not containe the pxm (node) infomation allow the driver to look up node info based on the address. The acpi_get_node call returns -1 if it can't decode the pxm info, this causes add_memory to panic. acpi_get_node would have to decode the resource from the handle (a lenghty proposition). This seems to be the cleanist point to interject the hook. [kamezawa.hiroyu@jp.fujitsu.com: build fixes] [y-goto@jp.fujitsu.com: build fixes] Signed-off-by: Keith Mannthey <kmannth@us.ibm.com> Cc: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com> Cc: Andi Kleen <ak@muc.de> Signed-off-by: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com> Signed-off-by: Yasunori Goto <y-goto@jp.fujitsu.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Showing 4 changed files with 25 additions and 0 deletions Side-by-side Diff
arch/ia64/mm/numa.c
... | ... | @@ -16,6 +16,7 @@ |
16 | 16 | #include <linux/node.h> |
17 | 17 | #include <linux/init.h> |
18 | 18 | #include <linux/bootmem.h> |
19 | +#include <linux/module.h> | |
19 | 20 | #include <asm/mmzone.h> |
20 | 21 | #include <asm/numa.h> |
21 | 22 | |
... | ... | @@ -69,5 +70,22 @@ |
69 | 70 | |
70 | 71 | return 0; |
71 | 72 | } |
73 | + | |
74 | +#ifdef CONFIG_MEMORY_HOTPLUG | |
75 | +/* | |
76 | + * SRAT information is stored in node_memblk[], then we can use SRAT | |
77 | + * information at memory-hot-add if necessary. | |
78 | + */ | |
79 | + | |
80 | +int memory_add_physaddr_to_nid(u64 addr) | |
81 | +{ | |
82 | + int nid = paddr_to_nid(addr); | |
83 | + if (nid < 0) | |
84 | + return 0; | |
85 | + return nid; | |
86 | +} | |
87 | + | |
88 | +EXPORT_SYMBOL_GPL(memory_add_physaddr_to_nid); | |
89 | +#endif | |
72 | 90 | #endif |
arch/x86_64/mm/init.c
arch/x86_64/mm/srat.c
drivers/acpi/acpi_memhotplug.c