mirror of
https://github.com/torvalds/linux.git
synced 2026-03-08 04:04:43 +01:00
ata: libata-sata: Improve link_power_management_supported sysfs attribute
The link_power_management_supported sysfs attribute is currently set as
true even for ata ports that lack a .set_lpm() callback, e.g. dummy ports.
This is a bit silly, because while writing to the
link_power_management_policy sysfs attribute will make ata_scsi_lpm_store()
update ap->target_lpm_policy (thus sysfs will reflect the new value) and
call ata_port_schedule_eh() for the port, it is essentially a no-op.
This is because for a port without a .set_lpm() callback, once EH gets to
run, the ata_eh_link_set_lpm() will simply return, since the port does not
provide a .set_lpm() callback.
Thus, make sure that the link_power_management_supported sysfs attribute
is set to false for ports that lack a .set_lpm() callback. This way the
link_power_management_policy sysfs attribute will no longer be writable,
so we will no longer be misleading users to think that their sysfs write
actually does something.
Fixes: 0060beec0b ("ata: libata-sata: Add link_power_management_supported sysfs attribute")
Signed-off-by: Niklas Cassel <cassel@kernel.org>
Tested-by: Wolf <wolf@yoxt.cc>
Signed-off-by: Damien Le Moal <dlemoal@kernel.org>
This commit is contained in:
parent
8f3fb33f8f
commit
ce83767ea3
1 changed files with 1 additions and 1 deletions
|
|
@ -909,7 +909,7 @@ static bool ata_scsi_lpm_supported(struct ata_port *ap)
|
|||
struct ata_link *link;
|
||||
struct ata_device *dev;
|
||||
|
||||
if (ap->flags & ATA_FLAG_NO_LPM)
|
||||
if ((ap->flags & ATA_FLAG_NO_LPM) || !ap->ops->set_lpm)
|
||||
return false;
|
||||
|
||||
ata_for_each_link(link, ap, EDGE) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue