Re: [PATCH] libata-core: Don't have screaming fits over DF/ERR combinations

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Sergei Shtylyov wrote:
Jeff Garzik wrote:

Some hardware seems to get this wrong in a non-harmful way, and there are
some devices that seem to do it deliberately for various reasons.

Just take it as a device error not a catastrophic state machine
explosion.

Signed-off-by: Alan Cox <alan@xxxxxxxxxx>

diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6.23-mm1/drivers/ata/libata-core.c linux-2.6.23-mm1/drivers/ata/libata-core.c --- linux.vanilla-2.6.23-mm1/drivers/ata/libata-core.c 2007-10-15 15:03:26.000000000 +0100 +++ linux-2.6.23-mm1/drivers/ata/libata-core.c 2007-10-15 15:13:49.000000000 +0100
@@ -5258,7 +5319,15 @@
         if (unlikely(status & (ATA_ERR | ATA_DF))) {
             ata_port_printk(ap, KERN_WARNING, "DRQ=1 with device "
                     "error, dev_stat 0x%X\n", status);
-            qc->err_mask |= AC_ERR_HSM;
+            /* Some devices muck this up. Some follow an ATA
+               non-standard that permits the damaged sector to
+               be retrieved at this point. The ATA spec says
+               we should jump up and down on DRQ + ERR, reality

I've always thought that setting both DRQ and ERR is perfectly valid (well, maybe it's become invalid since ATAPI-4 where all these state transition flow charts have made its first appearance, to be quickly replaced by the state diagrams :-) -- I'm too lazy to check now... :-)

DRQ+ERR is valid, and SRST (or hard reset) is defined as the method of kicking the device out of that state.

Well, in the times of old, reading a sector (or group of them for multiple mode) was valid for that purpose, wasn't it?

Yes, hence the recent FIFO drain patches.

But that doesn't make sense for SATA devices, where the FIFO is really emulated, and it works on older PATA devices.

	Jeff



-
To unsubscribe from this list: 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

[Index of Archives]     [Linux Filesystems]     [Linux SCSI]     [Linux RAID]     [Git]     [Kernel Newbies]     [Linux Newbie]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Samba]     [Device Mapper]

  Powered by Linux