diff options
-rw-r--r-- | drivers/acpi/Makefile | 2 | ||||
-rw-r--r-- | drivers/acpi/acpi_memhotplug.c | 31 | ||||
-rw-r--r-- | drivers/acpi/internal.h | 6 |
3 files changed, 26 insertions, 13 deletions
diff --git a/drivers/acpi/Makefile b/drivers/acpi/Makefile index 4f23f3295b12..f1c9266430d9 100644 --- a/drivers/acpi/Makefile +++ b/drivers/acpi/Makefile | |||
@@ -66,7 +66,7 @@ obj-$(CONFIG_ACPI_PCI_SLOT) += pci_slot.o | |||
66 | obj-$(CONFIG_ACPI_PROCESSOR) += processor.o | 66 | obj-$(CONFIG_ACPI_PROCESSOR) += processor.o |
67 | obj-y += container.o | 67 | obj-y += container.o |
68 | obj-$(CONFIG_ACPI_THERMAL) += thermal.o | 68 | obj-$(CONFIG_ACPI_THERMAL) += thermal.o |
69 | obj-$(CONFIG_ACPI_HOTPLUG_MEMORY) += acpi_memhotplug.o | 69 | obj-y += acpi_memhotplug.o |
70 | obj-$(CONFIG_ACPI_BATTERY) += battery.o | 70 | obj-$(CONFIG_ACPI_BATTERY) += battery.o |
71 | obj-$(CONFIG_ACPI_SBS) += sbshc.o | 71 | obj-$(CONFIG_ACPI_SBS) += sbshc.o |
72 | obj-$(CONFIG_ACPI_SBS) += sbs.o | 72 | obj-$(CONFIG_ACPI_SBS) += sbs.o |
diff --git a/drivers/acpi/acpi_memhotplug.c b/drivers/acpi/acpi_memhotplug.c index b67be85ff0fc..23e2319ead41 100644 --- a/drivers/acpi/acpi_memhotplug.c +++ b/drivers/acpi/acpi_memhotplug.c | |||
@@ -44,6 +44,13 @@ | |||
44 | 44 | ||
45 | ACPI_MODULE_NAME("acpi_memhotplug"); | 45 | ACPI_MODULE_NAME("acpi_memhotplug"); |
46 | 46 | ||
47 | static const struct acpi_device_id memory_device_ids[] = { | ||
48 | {ACPI_MEMORY_DEVICE_HID, 0}, | ||
49 | {"", 0}, | ||
50 | }; | ||
51 | |||
52 | #ifdef CONFIG_ACPI_HOTPLUG_MEMORY | ||
53 | |||
47 | /* Memory Device States */ | 54 | /* Memory Device States */ |
48 | #define MEMORY_INVALID_STATE 0 | 55 | #define MEMORY_INVALID_STATE 0 |
49 | #define MEMORY_POWER_ON_STATE 1 | 56 | #define MEMORY_POWER_ON_STATE 1 |
@@ -53,11 +60,6 @@ static int acpi_memory_device_add(struct acpi_device *device, | |||
53 | const struct acpi_device_id *not_used); | 60 | const struct acpi_device_id *not_used); |
54 | static void acpi_memory_device_remove(struct acpi_device *device); | 61 | static void acpi_memory_device_remove(struct acpi_device *device); |
55 | 62 | ||
56 | static const struct acpi_device_id memory_device_ids[] = { | ||
57 | {ACPI_MEMORY_DEVICE_HID, 0}, | ||
58 | {"", 0}, | ||
59 | }; | ||
60 | |||
61 | static struct acpi_scan_handler memory_device_handler = { | 63 | static struct acpi_scan_handler memory_device_handler = { |
62 | .ids = memory_device_ids, | 64 | .ids = memory_device_ids, |
63 | .attach = acpi_memory_device_add, | 65 | .attach = acpi_memory_device_add, |
@@ -364,9 +366,11 @@ static bool __initdata acpi_no_memhotplug; | |||
364 | 366 | ||
365 | void __init acpi_memory_hotplug_init(void) | 367 | void __init acpi_memory_hotplug_init(void) |
366 | { | 368 | { |
367 | if (acpi_no_memhotplug) | 369 | if (acpi_no_memhotplug) { |
370 | memory_device_handler.attach = NULL; | ||
371 | acpi_scan_add_handler(&memory_device_handler); | ||
368 | return; | 372 | return; |
369 | 373 | } | |
370 | acpi_scan_add_handler_with_hotplug(&memory_device_handler, "memory"); | 374 | acpi_scan_add_handler_with_hotplug(&memory_device_handler, "memory"); |
371 | } | 375 | } |
372 | 376 | ||
@@ -376,3 +380,16 @@ static int __init disable_acpi_memory_hotplug(char *str) | |||
376 | return 1; | 380 | return 1; |
377 | } | 381 | } |
378 | __setup("acpi_no_memhotplug", disable_acpi_memory_hotplug); | 382 | __setup("acpi_no_memhotplug", disable_acpi_memory_hotplug); |
383 | |||
384 | #else | ||
385 | |||
386 | static struct acpi_scan_handler memory_device_handler = { | ||
387 | .ids = memory_device_ids, | ||
388 | }; | ||
389 | |||
390 | void __init acpi_memory_hotplug_init(void) | ||
391 | { | ||
392 | acpi_scan_add_handler(&memory_device_handler); | ||
393 | } | ||
394 | |||
395 | #endif /* CONFIG_ACPI_HOTPLUG_MEMORY */ | ||
diff --git a/drivers/acpi/internal.h b/drivers/acpi/internal.h index cc93efd22a24..5ad27bf8e4bd 100644 --- a/drivers/acpi/internal.h +++ b/drivers/acpi/internal.h | |||
@@ -33,6 +33,7 @@ void acpi_platform_init(void); | |||
33 | void acpi_pnp_init(void); | 33 | void acpi_pnp_init(void); |
34 | int acpi_sysfs_init(void); | 34 | int acpi_sysfs_init(void); |
35 | void acpi_container_init(void); | 35 | void acpi_container_init(void); |
36 | void acpi_memory_hotplug_init(void); | ||
36 | #ifdef CONFIG_ACPI_DOCK | 37 | #ifdef CONFIG_ACPI_DOCK |
37 | void register_dock_dependent_device(struct acpi_device *adev, | 38 | void register_dock_dependent_device(struct acpi_device *adev, |
38 | acpi_handle dshandle); | 39 | acpi_handle dshandle); |
@@ -44,11 +45,6 @@ static inline void register_dock_dependent_device(struct acpi_device *adev, | |||
44 | static inline int dock_notify(struct acpi_device *adev, u32 event) { return -ENODEV; } | 45 | static inline int dock_notify(struct acpi_device *adev, u32 event) { return -ENODEV; } |
45 | static inline void acpi_dock_add(struct acpi_device *adev) {} | 46 | static inline void acpi_dock_add(struct acpi_device *adev) {} |
46 | #endif | 47 | #endif |
47 | #ifdef CONFIG_ACPI_HOTPLUG_MEMORY | ||
48 | void acpi_memory_hotplug_init(void); | ||
49 | #else | ||
50 | static inline void acpi_memory_hotplug_init(void) {} | ||
51 | #endif | ||
52 | #ifdef CONFIG_X86 | 48 | #ifdef CONFIG_X86 |
53 | void acpi_cmos_rtc_init(void); | 49 | void acpi_cmos_rtc_init(void); |
54 | #else | 50 | #else |