[PATCH] ahci: fix status register check in ahci_softreset
ahci_softreset() used to use ahci_tf_read() which reads D2H_REG area to check for the Status register. However, this area is zeroed on initialization and not set by initial signature FIS. Replace it with ahci_check_status(). This bug prevented CLO code from being activated whenever BSY and/or DRQ is set prior to softreset. This fix makes AHCI_FLAG_RESET_NEEDS_CLO flag redundant. Signed-off-by: Tejun Heo <htejun@gmail.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
This commit is contained in:
parent
30574b6161
commit
1244a19cde
@ -736,8 +736,7 @@ static int ahci_softreset(struct ata_port *ap, unsigned int *class)
|
||||
}
|
||||
|
||||
/* check BUSY/DRQ, perform Command List Override if necessary */
|
||||
ahci_tf_read(ap, &tf);
|
||||
if (tf.command & (ATA_BUSY | ATA_DRQ)) {
|
||||
if (ahci_check_status(ap) & (ATA_BUSY | ATA_DRQ)) {
|
||||
rc = ahci_clo(ap);
|
||||
|
||||
if (rc == -EOPNOTSUPP) {
|
||||
|
Loading…
Reference in New Issue
Block a user