|
@@ -85,6 +85,8 @@ struct acpi_memory_device {
|
|
struct list_head res_list;
|
|
struct list_head res_list;
|
|
};
|
|
};
|
|
|
|
|
|
|
|
+static int acpi_hotmem_initialized;
|
|
|
|
+
|
|
static acpi_status
|
|
static acpi_status
|
|
acpi_memory_get_resource(struct acpi_resource *resource, void *context)
|
|
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;
|
|
struct acpi_memory_device *mem_device;
|
|
int result = 0;
|
|
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);
|
|
mem_device = acpi_driver_data(device);
|
|
|
|
|
|
if (!acpi_memory_check_device(mem_device)) {
|
|
if (!acpi_memory_check_device(mem_device)) {
|
|
@@ -537,6 +548,7 @@ static int __init acpi_memory_device_init(void)
|
|
return -ENODEV;
|
|
return -ENODEV;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ acpi_hotmem_initialized = 1;
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
|