diff options
Diffstat (limited to 'drivers/ata/libahci.c')
-rw-r--r-- | drivers/ata/libahci.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/drivers/ata/libahci.c b/drivers/ata/libahci.c index acfd0f711069..aaac4fb0d564 100644 --- a/drivers/ata/libahci.c +++ b/drivers/ata/libahci.c | |||
@@ -778,8 +778,16 @@ static void ahci_start_port(struct ata_port *ap) | |||
778 | rc = ap->ops->transmit_led_message(ap, | 778 | rc = ap->ops->transmit_led_message(ap, |
779 | emp->led_state, | 779 | emp->led_state, |
780 | 4); | 780 | 4); |
781 | /* | ||
782 | * If busy, give a breather but do not | ||
783 | * release EH ownership by using msleep() | ||
784 | * instead of ata_msleep(). EM Transmit | ||
785 | * bit is busy for the whole host and | ||
786 | * releasing ownership will cause other | ||
787 | * ports to fail the same way. | ||
788 | */ | ||
781 | if (rc == -EBUSY) | 789 | if (rc == -EBUSY) |
782 | ata_msleep(ap, 1); | 790 | msleep(1); |
783 | else | 791 | else |
784 | break; | 792 | break; |
785 | } | 793 | } |