At 06/27/2012 12:21 PM, David Rientjes Wrote: > On Tue, 26 Jun 2012, Wen Congyang wrote: > >> diff --git a/drivers/acpi/acpi_memhotplug.c b/drivers/acpi/acpi_memhotplug.c >> index a325bb9..2e5d5ab 100644 >> --- a/drivers/acpi/acpi_memhotplug.c >> +++ b/drivers/acpi/acpi_memhotplug.c >> @@ -78,6 +78,7 @@ struct acpi_memory_info { >> unsigned short caching; /* memory cache attribute */ >> unsigned short write_protect; /* memory read/write attribute */ >> unsigned int enabled:1; >> + unsigned int failed:1; >> }; >> >> struct acpi_memory_device { >> @@ -251,9 +252,19 @@ static int acpi_memory_enable_device(struct acpi_memory_device *mem_device) >> node = memory_add_physaddr_to_nid(info->start_addr); >> >> result = add_memory(node, info->start_addr, info->length); >> - if (result) >> + >> + /* >> + * If the memory block has been used by the kernel, add_memory() >> + * returns -EEXIST. If add_memory() returns the other error, it >> + * means that this memory block is not used by the kernel. >> + */ >> + if (result && result != -EEXIST) { >> + info->failed = 1; >> continue; >> - info->enabled = 1; >> + } >> + >> + if (!result) >> + info->enabled = 1; >> num_enabled++; >> } >> if (!num_enabled) { > > num_enabled should only be incremented for result == 0. > If num_enabled is not incremented for result == -EEXIST, this device is not managed by this module, and it is not able to be hot removed. Another problem is the user will see a strange message: add_memory failed Thanks Wen Congyang -- To unsubscribe from this list: send the line "unsubscribe linux-acpi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html