[PATCH] memory hotadd fixes: avoid check in acpi

add_memory() does all necessary check to avoid collision. then, acpi layer
doesn't have to check region by itself.

(*) pfn_valid() just returns page struct is valid or not. It returns 0
if a section has been already added even is ioresource is not added.
ioresource collision check in mm/memory_hotplug.c can do more precise
collistion check.
added enabled bit check just for sanity check..

Signed-off-by: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
Cc: Keith Mannthey <kmannth@gmail.com>
Cc: Yasunori Goto <y-goto@jp.fujitsu.com>
Cc: Dave Hansen <haveblue@us.ibm.com>
Cc: "Brown, Len" <len.brown@intel.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>

authored by KAMEZAWA Hiroyuki and committed by Linus Torvalds fa25d8d6 58c1b5b0

+1 -8
+1 -8
drivers/acpi/acpi_memhotplug.c
··· 230 * (i.e. memory-hot-remove function) 231 */ 232 list_for_each_entry(info, &mem_device->res_list, list) { 233 - u64 start_pfn, end_pfn; 234 - 235 - start_pfn = info->start_addr >> PAGE_SHIFT; 236 - end_pfn = (info->start_addr + info->length - 1) >> PAGE_SHIFT; 237 - 238 - if (pfn_valid(start_pfn) || pfn_valid(end_pfn)) { 239 - /* already enabled. try next area */ 240 num_enabled++; 241 continue; 242 } 243 - 244 result = add_memory(node, info->start_addr, info->length); 245 if (result) 246 continue;
··· 230 * (i.e. memory-hot-remove function) 231 */ 232 list_for_each_entry(info, &mem_device->res_list, list) { 233 + if (info->enabled) { /* just sanity check...*/ 234 num_enabled++; 235 continue; 236 } 237 result = add_memory(node, info->start_addr, info->length); 238 if (result) 239 continue;