summaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorYasunori Goto <y-goto@jp.fujitsu.com>2006-10-19 23:28:31 -0700
committerLinus Torvalds <torvalds@g5.osdl.org>2006-10-20 10:26:38 -0700
commit887b95931b4072e60e3bf4253ff7bffe372bca46 (patch)
tree9d6a9fa71532e1e0846b31ff71431b1067e89601 /drivers
parent6cbe44cd8d48a92856295f445183f52bf42a544d (diff)
downloadlinux-887b95931b4072e60e3bf4253ff7bffe372bca46.tar.bz2
[PATCH] acpi memory hotplug: remove strange add_memory fail message
I wrote a patch to avoid redundant memory hot-add call at boot time. This was cause of strange fail message of memory hotplug like "ACPI: add_memory failed". Memory is recognized by early boot code with EFI/E820. But, if DSDT describes memory devices for them, then hot-add code is called for already recognized memory, and it shows fail messages with -EEXIST. So, sys admin will misunderstand this message as something wrong by it. This patch avoids them by preventing redundant hot-add call until completion of driver initialization. [akpm@osdl.org: cleanups] Signed-off-by: Yasunori Goto <y-goto@jp.fujitsu.com> Cc: "Brown, Len" <len.brown@intel.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/acpi/acpi_memhotplug.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/drivers/acpi/acpi_memhotplug.c b/drivers/acpi/acpi_memhotplug.c
index 9090b5acc5e3..6bcd9e8e7bcb 100644
--- a/drivers/acpi/acpi_memhotplug.c
+++ b/drivers/acpi/acpi_memhotplug.c
@@ -85,6 +85,8 @@ struct acpi_memory_device {
struct list_head res_list;
};
+static int acpi_hotmem_initialized;
+
static acpi_status
acpi_memory_get_resource(struct acpi_resource *resource, void *context)
{
@@ -438,6 +440,15 @@ static int acpi_memory_device_start (struct acpi_device *device)
struct acpi_memory_device *mem_device;
int result = 0;
+ /*
+ * Early boot code has recognized memory area by EFI/E820.
+ * If DSDT shows these memory devices on boot, hotplug is not necessary
+ * for them. So, it just returns until completion of this driver's
+ * start up.
+ */
+ if (!acpi_hotmem_initialized)
+ return 0;
+
mem_device = acpi_driver_data(device);
if (!acpi_memory_check_device(mem_device)) {
@@ -537,6 +548,7 @@ static int __init acpi_memory_device_init(void)
return -ENODEV;
}
+ acpi_hotmem_initialized = 1;
return 0;
}