Clear SError in ata_std_postreset(). This is to clear SError bits which get set during reset. Signed-off-by: Tejun Heo <htejun@xxxxxxxxx> --- drivers/scsi/libata-core.c | 4 ++++ 1 files changed, 4 insertions(+), 0 deletions(-) 23283e46f471fc36974603136f72212d26ac76c1 diff --git a/drivers/scsi/libata-core.c b/drivers/scsi/libata-core.c index e559347..7907f9a 100644 --- a/drivers/scsi/libata-core.c +++ b/drivers/scsi/libata-core.c @@ -2538,6 +2538,10 @@ void ata_std_postreset(struct ata_port * if (ap->cbl == ATA_CBL_SATA) sata_print_link_status(ap); + /* clear SError */ + if (ap->cbl == ATA_CBL_SATA && ap->ops->scr_read) + scr_write(ap, SCR_ERROR, scr_read(ap, SCR_ERROR)); + /* clear & re-enable interrupts */ ata_chk_status(ap); if (ap->ioaddr.ctl_addr) /* FIXME: hack. create a hook instead */ -- 1.2.4 - : 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