Jeff Garzik wrote:
Tejun Heo wrote:
ahci_init_controller() calls ahci_deinit_port() to make sure the
controller is stopped before initializing the controller. In turn,
ahci_deinit_port() invokes ahci_power_down() to power down the port.
If the controller supports slumber mode, the link is put into it.
I would rather just pass a 'dont suspend port' flag to
ahci_deinit_port(). That leaves ahci_port_stop() behavior unchanged.
That behavior change is intended. ahci_port_stop() must not call
ahci_power_down(); otherwise, it will cause strange behaviors on some
devices on driver unloading.
The baseline is that power up/down shouldn't be done as part of
controller init/deinit. Power up/down involves link power management
operation which make some devices choke. They should only be done when
actual power management is required. This is okay even for devices
which choke on link pm because system-wide PM powers those devices down
clearing lockup. I dunno what should be done with partial power
management tho.
--
tejun
-
To unsubscribe from this list: send the line "unsubscribe linux-ide" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html