libata: fix hotplug for drivers which don't implement LPM
ata_eh_analyze_serror() suppresses hotplug notifications if LPM is being used because LPM generates spurious hotplug events. It compared whether link->lpm_policy was different from ATA_LPM_MAX_POWER to determine whether LPM is enabled; however, this is incorrect as for drivers which don't implement LPM, lpm_policy is always ATA_LPM_UNKNOWN. This disabled hotplug detection for all drivers which don't implement LPM. Fix it by comparing whether lpm_policy is greater than ATA_LPM_MAX_POWER. Signed-off-by: Tejun Heo <tj@kernel.org> Cc: stable@kernel.org Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
This commit is contained in:
parent
3e1f2356ce
commit
eb0e85e36b
@ -1618,7 +1618,7 @@ static void ata_eh_analyze_serror(struct ata_link *link)
|
||||
* host links. For disabled PMP links, only N bit is
|
||||
* considered as X bit is left at 1 for link plugging.
|
||||
*/
|
||||
if (link->lpm_policy != ATA_LPM_MAX_POWER)
|
||||
if (link->lpm_policy > ATA_LPM_MAX_POWER)
|
||||
hotplug_mask = 0; /* hotplug doesn't work w/ LPM */
|
||||
else if (!(link->flags & ATA_LFLAG_DISABLED) || ata_is_host_link(link))
|
||||
hotplug_mask = SERR_PHYRDY_CHG | SERR_DEV_XCHG;
|
||||
|
Loading…
x
Reference in New Issue
Block a user