From: Yasunori Goto <[EMAIL PROTECTED]>

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.

[EMAIL PROTECTED]: coding cleanups]
Signed-off-by: Yasunori Goto <[EMAIL PROTECTED]>
Cc: "Brown, Len" <[EMAIL PROTECTED]>
Cc: Dave Hansen <[EMAIL PROTECTED]>
Signed-off-by: Andrew Morton <[EMAIL PROTECTED]>
---

 drivers/acpi/acpi_memhotplug.c |   11 +++++++++++
 1 file changed, 11 insertions(+)

diff -puN 
drivers/acpi/acpi_memhotplug.c~catch-notification-of-memory-add-event-of-acpi-via-container-driveravoid-redundant-call-add_memory
 drivers/acpi/acpi_memhotplug.c
--- 
devel/drivers/acpi/acpi_memhotplug.c~catch-notification-of-memory-add-event-of-acpi-via-container-driveravoid-redundant-call-add_memory
     2006-06-01 20:17:06.000000000 -0700
+++ devel-akpm/drivers/acpi/acpi_memhotplug.c   2006-06-01 20:17:06.000000000 
-0700
@@ -225,6 +225,17 @@ static int acpi_memory_enable_device(str
          * (i.e. memory-hot-remove function)
         */
        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);
                if (result)
                        continue;
_
-
To unsubscribe from this list: send the line "unsubscribe linux-acpi" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to