aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/acpi/acpi_memhotplug.c15
1 files changed, 2 insertions, 13 deletions
diff --git a/drivers/acpi/acpi_memhotplug.c b/drivers/acpi/acpi_memhotplug.c
index ea78988bc13f..5e6301e94920 100644
--- a/drivers/acpi/acpi_memhotplug.c
+++ b/drivers/acpi/acpi_memhotplug.c
@@ -73,7 +73,6 @@ struct acpi_memory_info {
73 unsigned short caching; /* memory cache attribute */ 73 unsigned short caching; /* memory cache attribute */
74 unsigned short write_protect; /* memory read/write attribute */ 74 unsigned short write_protect; /* memory read/write attribute */
75 unsigned int enabled:1; 75 unsigned int enabled:1;
76 unsigned int failed:1;
77}; 76};
78 77
79struct acpi_memory_device { 78struct acpi_memory_device {
@@ -201,10 +200,8 @@ static int acpi_memory_enable_device(struct acpi_memory_device *mem_device)
201 * returns -EEXIST. If add_memory() returns the other error, it 200 * returns -EEXIST. If add_memory() returns the other error, it
202 * means that this memory block is not used by the kernel. 201 * means that this memory block is not used by the kernel.
203 */ 202 */
204 if (result && result != -EEXIST) { 203 if (result && result != -EEXIST)
205 info->failed = 1;
206 continue; 204 continue;
207 }
208 205
209 info->enabled = 1; 206 info->enabled = 1;
210 207
@@ -238,16 +235,8 @@ static int acpi_memory_remove_memory(struct acpi_memory_device *mem_device)
238 nid = acpi_get_node(mem_device->device->handle); 235 nid = acpi_get_node(mem_device->device->handle);
239 236
240 list_for_each_entry_safe(info, n, &mem_device->res_list, list) { 237 list_for_each_entry_safe(info, n, &mem_device->res_list, list) {
241 if (info->failed)
242 /* The kernel does not use this memory block */
243 continue;
244
245 if (!info->enabled) 238 if (!info->enabled)
246 /* 239 continue;
247 * The kernel uses this memory block, but it may be not
248 * managed by us.
249 */
250 return -EBUSY;
251 240
252 if (nid < 0) 241 if (nid < 0)
253 nid = memory_add_physaddr_to_nid(info->start_addr); 242 nid = memory_add_physaddr_to_nid(info->start_addr);