[PATCH] Catch notification of memory add event of ACPI via container driver. (avoid redundant call add_memory)
When acpi_memory_device_init() is called at boottime to register struct memory acpi_memory_device, acpi_bus_add() are called via acpi_driver_attach(). But it also calls ops->start() function. It is called even if the memory blocks are initialized at early boottime. In this case add_memory() return -EEXIST, and the memory blocks becomes INVALID state even if it is normal. This is patch to avoid calling add_memory() for already available memory. [akpm@osdl.org: coding cleanups] Signed-off-by: Yasunori Goto <y-goto@jp.fujitsu.com> Cc: "Brown, Len" <len.brown@intel.com> Cc: Dave Hansen <haveblue@us.ibm.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
parent
1f425994f9
commit
dd56a8e36f
|
@ -234,6 +234,17 @@ static int acpi_memory_enable_device(struct acpi_memory_device *mem_device)
|
||||||
* (i.e. memory-hot-remove function)
|
* (i.e. memory-hot-remove function)
|
||||||
*/
|
*/
|
||||||
list_for_each_entry(info, &mem_device->res_list, list) {
|
list_for_each_entry(info, &mem_device->res_list, list) {
|
||||||
|
u64 start_pfn, end_pfn;
|
||||||
|
|
||||||
|
start_pfn = info->start_addr >> PAGE_SHIFT;
|
||||||
|
end_pfn = (info->start_addr + info->length - 1) >> PAGE_SHIFT;
|
||||||
|
|
||||||
|
if (pfn_valid(start_pfn) || pfn_valid(end_pfn)) {
|
||||||
|
/* already enabled. try next area */
|
||||||
|
num_enabled++;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
result = add_memory(info->start_addr, info->length);
|
result = add_memory(info->start_addr, info->length);
|
||||||
if (result)
|
if (result)
|
||||||
continue;
|
continue;
|
||||||
|
|
Loading…
Reference in New Issue