On Sun, Nov 25, 2012 at 12:20:47AM +0800, Wen Congyang wrote: > At 2012/11/24 1:50, Vasilis Liaskovitis Wrote: > > Consider the following sequence of operations for a hotplugged memory device: > > > > 1. echo "PNP0C80:XX"> /sys/bus/acpi/drivers/acpi_memhotplug/unbind > > 2. echo "PNP0C80:XX"> /sys/bus/acpi/drivers/acpi_memhotplug/bind > > 3. echo 1>/sys/bus/pci/devices/PNP0C80:XX/eject > > > > The driver is successfully re-bound to the device in step 2. However step 3 will > > not attempt to remove the memory. This is because the acpi_memory_info enabled > > bit for the newly bound driver has not been set to 1. This bit needs to be set > > in the case where the memory is already used by the kernel (add_memory returns > > -EEXIST) > > Hmm, I think the reason is that we don't offline/remove memory when > unbinding it > from the driver. I have sent a patch to fix this problem, and this patch > is in > pm tree now. With this patch, we will offline/remove memory when > unbinding it from > the drriver. ok. Which patch is this? Does it require driver-core changes? > > Consider the following sequence of operations for a hotplugged memory > device: > > 1. echo "PNP0C80:XX" > /sys/bus/acpi/drivers/acpi_memhotplug/unbind > 2. echo 1 >/sys/bus/pci/devices/PNP0C80:XX/eject > > If we don't offline/remove the memory, we have no chance to do it in > step 2. After > step2, the memory is used by the kernel, but we have powered off it. It > is very > dangerous. How does power-off happen after unbind? acpi_eject_store checks for existing driver before taking any action: #ifndef FORCE_EJECT if (acpi_device->driver == NULL) { ret = -ENODEV; goto err; } #endif FORCE_EJECT is not defined afaict, so the function returns without scheduling acpi_bus_hot_remove_device. Is there another code path that calls power-off? thanks, - Vasilis -- 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