linux-ide.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] libata: add human-readable error value decoding
@ 2007-05-10  2:18 Robert Hancock
  2007-05-10  9:43 ` Tejun Heo
  0 siblings, 1 reply; 14+ messages in thread
From: Robert Hancock @ 2007-05-10  2:18 UTC (permalink / raw)
  To: linux-kernel, linux-ide, Andrew Morton, Jeff Garzik

This adds human-readable decoding of the ATA status and error registers (similar
to what drivers/ide does) as well as the SATA Serror register to libata error
handling output. This prevents the need to pore through standards documents
to figure out the meaning of the bits in these registers when looking at error
reports. Some bits that drivers/ide decoded are not decoded here, since the bits
are either command-dependent or obsolete, and properly parsing them would add
too much complexity.

Signed-off-by: Robert Hancock <hancockr@shaw.ca>

--- linux-2.6.21.1/drivers/ata/libata-eh.c	2007-04-27 15:49:26.000000000 -0600
+++ linux-2.6.21.1edit/drivers/ata/libata-eh.c	2007-05-09 19:47:53.000000000 -0600
@@ -1523,6 +1523,27 @@ static void ata_eh_report(struct ata_por
 			ata_port_printk(ap, KERN_ERR, "(%s)\n", desc);
 	}
 
+	if (ehc->i.serror)
+		ata_port_printk(ap, KERN_ERR,
+		  "SError: {%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s}\n",
+		  ehc->i.serror & SERR_DATA_RECOVERED ? "RecovDataErr " : "",
+		  ehc->i.serror & SERR_COMM_RECOVERED ? "RecovCommErr " : "",
+		  ehc->i.serror & SERR_DATA ? "UnrecovDataErr " : "",
+		  ehc->i.serror & SERR_PERSISTENT ? "PersistErr " : "",
+		  ehc->i.serror & SERR_PROTOCOL ? "ProtocolErr " : "",
+		  ehc->i.serror & SERR_INTERNAL ? "HostInternalErr " : "",
+		  ehc->i.serror & SERR_PHYRDY_CHG ? "PHYRdyChg " : "",
+		  ehc->i.serror & SERR_PHY_INT_ERR ? "PHYInternalErr " : "",
+		  ehc->i.serror & SERR_COMM_WAKE ? "CommWake " : "",
+		  ehc->i.serror & SERR_10B_8B_ERR ? "10B8BErr " : "",
+		  ehc->i.serror & SERR_DISPARITY ? "Disparity " : "",
+		  ehc->i.serror & SERR_CRC ? "CRCErr " : "",
+		  ehc->i.serror & SERR_HANDSHAKE ? "HandshakeErr " : "",
+		  ehc->i.serror & SERR_LINK_SEQ_ERR ? "LinkSeqErr " : "",
+		  ehc->i.serror & SERR_TRANS_ST_ERROR ? "TransStatTransErr " : "",
+		  ehc->i.serror & SERR_UNRECOG_FIS ? "UnrecogFIS " : "",
+		  ehc->i.serror & SERR_DEV_XCHG ? "DevExchanged " : "" );
+
 	for (tag = 0; tag < ATA_MAX_QUEUE; tag++) {
 		static const char *dma_str[] = {
 			[DMA_BIDIRECTIONAL]	= "bidi",
@@ -1552,6 +1573,29 @@ static void ata_eh_report(struct ata_por
 			res->hob_feature, res->hob_nsect,
 			res->hob_lbal, res->hob_lbam, res->hob_lbah,
 			res->device, qc->err_mask, ata_err_string(qc->err_mask));
+		
+		if (res->command & (ATA_BUSY | ATA_DRDY | ATA_DF | ATA_DRQ |
+		                    ATA_ERR) ) {
+			if (res->command & ATA_BUSY)
+				ata_dev_printk(qc->dev, KERN_ERR,
+				  "status: {Busy}\n" );
+			else
+				ata_dev_printk(qc->dev, KERN_ERR,
+				  "status: {%s%s%s%s}\n",
+				  res->command & ATA_DRDY ? "DRDY " : "",
+				  res->command & ATA_DF ? "DF " : "",
+				  res->command & ATA_DRQ ? "DRQ " : "",
+				  res->command & ATA_ERR ? "ERR " : "" );
+		}
+		
+		if (cmd->command != ATA_CMD_PACKET &&
+		    (res->feature & (ATA_ICRC | ATA_UNC | ATA_IDNF | ATA_ABORTED)))
+			ata_dev_printk(qc->dev, KERN_ERR,
+			  "error: {%s%s%s%s}\n",
+			  res->feature & ATA_ICRC ? "ICRC " : "",
+			  res->feature & ATA_UNC ? "UNC " : "",
+			  res->feature & ATA_IDNF ? "IDNF " : "",
+			  res->feature & ATA_ABORTED ? "ABRT " : "" );
 	}
 }
 
--- linux-2.6.21.1/include/linux/ata.h	2007-04-27 15:49:26.000000000 -0600
+++ linux-2.6.21.1edit/include/linux/ata.h	2007-05-09 19:25:54.000000000 -0600
@@ -223,6 +223,15 @@ enum {
 	SERR_PROTOCOL		= (1 << 10), /* protocol violation */
 	SERR_INTERNAL		= (1 << 11), /* host internal error */
 	SERR_PHYRDY_CHG		= (1 << 16), /* PHY RDY changed */
+	SERR_PHY_INT_ERR	= (1 << 17), /* PHY internal error */
+	SERR_COMM_WAKE		= (1 << 18), /* Comm wake */
+	SERR_10B_8B_ERR		= (1 << 19), /* 10b to 8b decode error */
+	SERR_DISPARITY		= (1 << 20), /* Disparity */
+	SERR_CRC		= (1 << 21), /* CRC error */
+	SERR_HANDSHAKE		= (1 << 22), /* Handshake error */
+	SERR_LINK_SEQ_ERR	= (1 << 23), /* Link sequence error */
+	SERR_TRANS_ST_ERROR	= (1 << 24), /* Transport state transition error */
+	SERR_UNRECOG_FIS	= (1 << 25), /* Unrecognized FIS */
 	SERR_DEV_XCHG		= (1 << 26), /* device exchanged */
 
 	/* struct ata_taskfile flags */


^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH] libata: add human-readable error value decoding
  2007-05-10  2:18 [PATCH] libata: add human-readable error value decoding Robert Hancock
@ 2007-05-10  9:43 ` Tejun Heo
  2007-05-10 13:24   ` Mark Lord
  2007-05-10 23:29   ` Robert Hancock
  0 siblings, 2 replies; 14+ messages in thread
From: Tejun Heo @ 2007-05-10  9:43 UTC (permalink / raw)
  To: Robert Hancock; +Cc: linux-kernel, linux-ide, Andrew Morton, Jeff Garzik

Robert Hancock wrote:
> This adds human-readable decoding of the ATA status and error registers
> (similar
> to what drivers/ide does) as well as the SATA Serror register to libata
> error
> handling output. This prevents the need to pore through standards documents
> to figure out the meaning of the bits in these registers when looking at
> error
> reports. Some bits that drivers/ide decoded are not decoded here, since
> the bits
> are either command-dependent or obsolete, and properly parsing them
> would add
> too much complexity.
> 
> Signed-off-by: Robert Hancock <hancockr@shaw.ca>
> 
> --- linux-2.6.21.1/drivers/ata/libata-eh.c    2007-04-27
> 15:49:26.000000000 -0600
> +++ linux-2.6.21.1edit/drivers/ata/libata-eh.c    2007-05-09
> 19:47:53.000000000 -0600
> @@ -1523,6 +1523,27 @@ static void ata_eh_report(struct ata_por
>             ata_port_printk(ap, KERN_ERR, "(%s)\n", desc);
>     }
> 
> +    if (ehc->i.serror)
> +        ata_port_printk(ap, KERN_ERR,
> +          "SError: {%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s}\n",
> +          ehc->i.serror & SERR_DATA_RECOVERED ? "RecovDataErr " : "",
> +          ehc->i.serror & SERR_COMM_RECOVERED ? "RecovCommErr " : "",
> +          ehc->i.serror & SERR_DATA ? "UnrecovDataErr " : "",
> +          ehc->i.serror & SERR_PERSISTENT ? "PersistErr " : "",
> +          ehc->i.serror & SERR_PROTOCOL ? "ProtocolErr " : "",
> +          ehc->i.serror & SERR_INTERNAL ? "HostInternalErr " : "",
> +          ehc->i.serror & SERR_PHYRDY_CHG ? "PHYRdyChg " : "",
> +          ehc->i.serror & SERR_PHY_INT_ERR ? "PHYInternalErr " : "",
> +          ehc->i.serror & SERR_COMM_WAKE ? "CommWake " : "",
> +          ehc->i.serror & SERR_10B_8B_ERR ? "10B8BErr " : "",
> +          ehc->i.serror & SERR_DISPARITY ? "Disparity " : "",
> +          ehc->i.serror & SERR_CRC ? "CRCErr " : "",
> +          ehc->i.serror & SERR_HANDSHAKE ? "HandshakeErr " : "",
> +          ehc->i.serror & SERR_LINK_SEQ_ERR ? "LinkSeqErr " : "",
> +          ehc->i.serror & SERR_TRANS_ST_ERROR ? "TransStatTransErr " : "",
> +          ehc->i.serror & SERR_UNRECOG_FIS ? "UnrecogFIS " : "",
> +          ehc->i.serror & SERR_DEV_XCHG ? "DevExchanged " : "" );

I'm not really convinced whether this is necessary.  The human readable
form is also a bit cryptic and can get quite long.  So, mild NACK from me.

-- 
tejun

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH] libata: add human-readable error value decoding
  2007-05-10  9:43 ` Tejun Heo
@ 2007-05-10 13:24   ` Mark Lord
  2007-05-10 16:40     ` Jeff Garzik
  2007-05-10 23:29   ` Robert Hancock
  1 sibling, 1 reply; 14+ messages in thread
From: Mark Lord @ 2007-05-10 13:24 UTC (permalink / raw)
  To: Tejun Heo
  Cc: Robert Hancock, linux-kernel, linux-ide, Andrew Morton,
	Jeff Garzik

Tejun Heo wrote:
> Robert Hancock wrote:
>> This adds human-readable decoding of the ATA status and error registers
>> (similar
>> to what drivers/ide does) as well as the SATA Serror register to libata
...
> I'm not really convinced whether this is necessary.  The human readable
> form is also a bit cryptic and can get quite long.  So, mild NACK from me.

Same here, but I would like to see it in there under a CONFIG_DEBUG_LIBATA
kernel build option or something.  Kind of like the "FANCY_STATUS_DUMPS" flag
that drivers/ide used to have for this kind of stuff.

Cheers


^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH] libata: add human-readable error value decoding
  2007-05-10 13:24   ` Mark Lord
@ 2007-05-10 16:40     ` Jeff Garzik
  2007-05-10 21:33       ` Mark Lord
  0 siblings, 1 reply; 14+ messages in thread
From: Jeff Garzik @ 2007-05-10 16:40 UTC (permalink / raw)
  To: Mark Lord
  Cc: Tejun Heo, Robert Hancock, linux-kernel, linux-ide, Andrew Morton

Mark Lord wrote:
> Same here, but I would like to see it in there under a CONFIG_DEBUG_LIBATA
> kernel build option or something.  Kind of like the "FANCY_STATUS_DUMPS" 
> flag
> that drivers/ide used to have for this kind of stuff.


The long term goal is to enable verbose output with a module option 
and/or sysfs knob, rather than a compile-time switch.

That's what ata_msg_xxx is for.  We just don't have the knob yet. 
Patches welcome...

	Jeff




^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH] libata: add human-readable error value decoding
  2007-05-10 16:40     ` Jeff Garzik
@ 2007-05-10 21:33       ` Mark Lord
  2007-05-10 21:42         ` Jeff Garzik
  0 siblings, 1 reply; 14+ messages in thread
From: Mark Lord @ 2007-05-10 21:33 UTC (permalink / raw)
  To: Jeff Garzik
  Cc: Tejun Heo, Robert Hancock, linux-kernel, linux-ide, Andrew Morton

Jeff Garzik wrote:
> Mark Lord wrote:
>> Same here, but I would like to see it in there under a 
>> CONFIG_DEBUG_LIBATA
>> kernel build option or something.  Kind of like the 
>> "FANCY_STATUS_DUMPS" flag
>> that drivers/ide used to have for this kind of stuff.
> 
> 
> The long term goal is to enable verbose output with a module option 
> and/or sysfs knob, rather than a compile-time switch.

If we're compiling the messages into the kernel regardless,
then it doesn't really make much sense to NOT show all of them
on the error paths.

This stuff (fancy status dumps) is mostly just for the error paths,
where more information is always a good thing.

Controlling the rest of the ata_msg_xxx stuff from sysctl is fine
for non-error paths.

Cheers

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH] libata: add human-readable error value decoding
  2007-05-10 21:33       ` Mark Lord
@ 2007-05-10 21:42         ` Jeff Garzik
  2007-05-10 23:32           ` Robert Hancock
  0 siblings, 1 reply; 14+ messages in thread
From: Jeff Garzik @ 2007-05-10 21:42 UTC (permalink / raw)
  To: Mark Lord
  Cc: Tejun Heo, Robert Hancock, linux-kernel, linux-ide, Andrew Morton

Mark Lord wrote:
> If we're compiling the messages into the kernel regardless,
> then it doesn't really make much sense to NOT show all of them
> on the error paths.


Not true.  Uncontrolled message spewage inevitably results in critical 
information scrolling off the screen, before a user can take a digital 
photo of the output...  Or of users being confused by subsequent error 
fallout (i.e. multiple oopses reporting problem).

Moderation and restraint still have roles to play...  :)

	Jeff





^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH] libata: add human-readable error value decoding
  2007-05-10  9:43 ` Tejun Heo
  2007-05-10 13:24   ` Mark Lord
@ 2007-05-10 23:29   ` Robert Hancock
  2007-05-11 16:48     ` Chuck Ebbert
  1 sibling, 1 reply; 14+ messages in thread
From: Robert Hancock @ 2007-05-10 23:29 UTC (permalink / raw)
  To: Tejun Heo; +Cc: linux-kernel, linux-ide, Andrew Morton, Jeff Garzik

Tejun Heo wrote:
>> +    if (ehc->i.serror)
>> +        ata_port_printk(ap, KERN_ERR,
>> +          "SError: {%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s}\n",
>> +          ehc->i.serror & SERR_DATA_RECOVERED ? "RecovDataErr " : "",
>> +          ehc->i.serror & SERR_COMM_RECOVERED ? "RecovCommErr " : "",
>> +          ehc->i.serror & SERR_DATA ? "UnrecovDataErr " : "",
>> +          ehc->i.serror & SERR_PERSISTENT ? "PersistErr " : "",
>> +          ehc->i.serror & SERR_PROTOCOL ? "ProtocolErr " : "",
>> +          ehc->i.serror & SERR_INTERNAL ? "HostInternalErr " : "",
>> +          ehc->i.serror & SERR_PHYRDY_CHG ? "PHYRdyChg " : "",
>> +          ehc->i.serror & SERR_PHY_INT_ERR ? "PHYInternalErr " : "",
>> +          ehc->i.serror & SERR_COMM_WAKE ? "CommWake " : "",
>> +          ehc->i.serror & SERR_10B_8B_ERR ? "10B8BErr " : "",
>> +          ehc->i.serror & SERR_DISPARITY ? "Disparity " : "",
>> +          ehc->i.serror & SERR_CRC ? "CRCErr " : "",
>> +          ehc->i.serror & SERR_HANDSHAKE ? "HandshakeErr " : "",
>> +          ehc->i.serror & SERR_LINK_SEQ_ERR ? "LinkSeqErr " : "",
>> +          ehc->i.serror & SERR_TRANS_ST_ERROR ? "TransStatTransErr " : "",
>> +          ehc->i.serror & SERR_UNRECOG_FIS ? "UnrecogFIS " : "",
>> +          ehc->i.serror & SERR_DEV_XCHG ? "DevExchanged " : "" );
> 
> I'm not really convinced whether this is necessary.  The human readable
> form is also a bit cryptic and can get quite long.  So, mild NACK from me.
> 

It certainly seems useful when debugging hotplug issues or random SATA 
problems which end up being caused by communication problems. Without 
this output, Joe User stands no chance of figuring out what's going on, 
and neither does Joe libata Developer unless they really care to dig 
through the spec and count bits to figure out what they mean. At least 
with this you can see that there was a CRC error, etc. and go from that..

-- 
Robert Hancock      Saskatoon, SK, Canada
To email, remove "nospam" from hancockr@nospamshaw.ca
Home Page: http://www.roberthancock.com/


^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH] libata: add human-readable error value decoding
  2007-05-10 21:42         ` Jeff Garzik
@ 2007-05-10 23:32           ` Robert Hancock
  2007-05-10 23:47             ` Jeff Garzik
  0 siblings, 1 reply; 14+ messages in thread
From: Robert Hancock @ 2007-05-10 23:32 UTC (permalink / raw)
  To: Jeff Garzik; +Cc: Mark Lord, Tejun Heo, linux-kernel, linux-ide, Andrew Morton

Jeff Garzik wrote:
> Mark Lord wrote:
>> If we're compiling the messages into the kernel regardless,
>> then it doesn't really make much sense to NOT show all of them
>> on the error paths.
> 
> 
> Not true.  Uncontrolled message spewage inevitably results in critical 
> information scrolling off the screen, before a user can take a digital 
> photo of the output...  Or of users being confused by subsequent error 
> fallout (i.e. multiple oopses reporting problem).
> 
> Moderation and restraint still have roles to play...  :)
> 
>     Jeff

I don't think this is as big of a deal here as in other cases, like oops 
output. With libata errors, if they're at the console (which they'd have 
to be to see these messages), unless something has actually caused a 
panic the scrollback buffer should still be functional and they'd be 
able to see the entire output..

-- 
Robert Hancock      Saskatoon, SK, Canada
To email, remove "nospam" from hancockr@nospamshaw.ca
Home Page: http://www.roberthancock.com/


^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH] libata: add human-readable error value decoding
  2007-05-10 23:32           ` Robert Hancock
@ 2007-05-10 23:47             ` Jeff Garzik
  2007-05-11  0:55               ` Alan Cox
  0 siblings, 1 reply; 14+ messages in thread
From: Jeff Garzik @ 2007-05-10 23:47 UTC (permalink / raw)
  To: Robert Hancock
  Cc: Mark Lord, Tejun Heo, linux-kernel, linux-ide, Andrew Morton

Robert Hancock wrote:
> I don't think this is as big of a deal here as in other cases, like oops 
> output. With libata errors, if they're at the console (which they'd have 
> to be to see these messages), unless something has actually caused a 
> panic the scrollback buffer should still be functional and they'd be 
> able to see the entire output..


Scrollback rarely works as planned, for me.  Overall, a balance must be 
found.

More information is more helpful.  But.

There are downsides to spewing everything possible, upon error.  You 
cause logging to the possibly problematic disk, you push older messages 
out of the printk ring buffer, etc., etc.

	Jeff



^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH] libata: add human-readable error value decoding
  2007-05-10 23:47             ` Jeff Garzik
@ 2007-05-11  0:55               ` Alan Cox
  0 siblings, 0 replies; 14+ messages in thread
From: Alan Cox @ 2007-05-11  0:55 UTC (permalink / raw)
  To: Jeff Garzik
  Cc: Robert Hancock, Mark Lord, Tejun Heo, linux-kernel, linux-ide,
	Andrew Morton

> Scrollback rarely works as planned, for me.  Overall, a balance must be 
> found.
> 
> More information is more helpful.  But.
> 
> There are downsides to spewing everything possible, upon error.  You 
> cause logging to the possibly problematic disk, you push older messages 
> out of the printk ring buffer, etc., etc.

Get yourself a Voodoo5 or similar card cheap off ebay. The firmware on
most of them doesn't clear the top 30MB of RAM on a reboot/PCI reset
which makes them excellent debug buffers providing you empty the buffer
before you run the X server.

Alan

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH] libata: add human-readable error value decoding
  2007-05-10 23:29   ` Robert Hancock
@ 2007-05-11 16:48     ` Chuck Ebbert
  2007-05-11 17:11       ` Tejun Heo
  0 siblings, 1 reply; 14+ messages in thread
From: Chuck Ebbert @ 2007-05-11 16:48 UTC (permalink / raw)
  To: Robert Hancock
  Cc: Tejun Heo, linux-kernel, linux-ide, Andrew Morton, Jeff Garzik

Robert Hancock wrote:
>>> +          ehc->i.serror & SERR_TRANS_ST_ERROR ? "TransStatTransErr "
>>> : "",
>>> +          ehc->i.serror & SERR_UNRECOG_FIS ? "UnrecogFIS " : "",
>>> +          ehc->i.serror & SERR_DEV_XCHG ? "DevExchanged " : "" );
>>
>> I'm not really convinced whether this is necessary.  The human readable
>> form is also a bit cryptic and can get quite long.  So, mild NACK from
>> me.
>>
> 
> It certainly seems useful when debugging hotplug issues or random SATA
> problems which end up being caused by communication problems. Without
> this output, Joe User stands no chance of figuring out what's going on,
> and neither does Joe libata Developer unless they really care to dig
> through the spec and count bits to figure out what they mean. At least
> with this you can see that there was a CRC error, etc. and go from that..
> 

Why not just document the error messages?

And the scsi ones too, I can't seem to find what the sense codes mean.



^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH] libata: add human-readable error value decoding
  2007-05-11 16:48     ` Chuck Ebbert
@ 2007-05-11 17:11       ` Tejun Heo
  2007-05-11 23:10         ` Robert Hancock
  0 siblings, 1 reply; 14+ messages in thread
From: Tejun Heo @ 2007-05-11 17:11 UTC (permalink / raw)
  To: Chuck Ebbert
  Cc: Robert Hancock, linux-kernel, linux-ide, Andrew Morton,
	Jeff Garzik

Chuck Ebbert wrote:
> Robert Hancock wrote:
>>>> +          ehc->i.serror & SERR_TRANS_ST_ERROR ? "TransStatTransErr "
>>>> : "",
>>>> +          ehc->i.serror & SERR_UNRECOG_FIS ? "UnrecogFIS " : "",
>>>> +          ehc->i.serror & SERR_DEV_XCHG ? "DevExchanged " : "" );
>>> I'm not really convinced whether this is necessary.  The human readable
>>> form is also a bit cryptic and can get quite long.  So, mild NACK from
>>> me.
>>>
>> It certainly seems useful when debugging hotplug issues or random SATA
>> problems which end up being caused by communication problems. Without
>> this output, Joe User stands no chance of figuring out what's going on,
>> and neither does Joe libata Developer unless they really care to dig
>> through the spec and count bits to figure out what they mean. At least
>> with this you can see that there was a CRC error, etc. and go from that..
>>
> 
> Why not just document the error messages?
> 
> And the scsi ones too, I can't seem to find what the sense codes mean.

They are well documented elsewhere - the standard documents.  For sense
codes, t10.org.  For SError bits, t13.org.  You can get drafts free of
charge.

-- 
tejun

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH] libata: add human-readable error value decoding
  2007-05-11 17:11       ` Tejun Heo
@ 2007-05-11 23:10         ` Robert Hancock
  2007-05-11 23:22           ` Jeff Garzik
  0 siblings, 1 reply; 14+ messages in thread
From: Robert Hancock @ 2007-05-11 23:10 UTC (permalink / raw)
  To: Tejun Heo
  Cc: Chuck Ebbert, linux-kernel, linux-ide, Andrew Morton, Jeff Garzik

Tejun Heo wrote:
> Chuck Ebbert wrote:
>> Robert Hancock wrote:
>>>>> +          ehc->i.serror & SERR_TRANS_ST_ERROR ? "TransStatTransErr "
>>>>> : "",
>>>>> +          ehc->i.serror & SERR_UNRECOG_FIS ? "UnrecogFIS " : "",
>>>>> +          ehc->i.serror & SERR_DEV_XCHG ? "DevExchanged " : "" );
>>>> I'm not really convinced whether this is necessary.  The human readable
>>>> form is also a bit cryptic and can get quite long.  So, mild NACK from
>>>> me.
>>>>
>>> It certainly seems useful when debugging hotplug issues or random SATA
>>> problems which end up being caused by communication problems. Without
>>> this output, Joe User stands no chance of figuring out what's going on,
>>> and neither does Joe libata Developer unless they really care to dig
>>> through the spec and count bits to figure out what they mean. At least
>>> with this you can see that there was a CRC error, etc. and go from that..
>>>
>> Why not just document the error messages?
>>
>> And the scsi ones too, I can't seem to find what the sense codes mean.
> 
> They are well documented elsewhere - the standard documents.  For sense
> codes, t10.org.  For SError bits, t13.org.  You can get drafts free of
> charge.

The ATA ones are more of a pain in that regard than SCSI though - SCSI 
has all distinct error codes for different errors, whereas ATA has 
bitmasks for everything..

-- 
Robert Hancock      Saskatoon, SK, Canada
To email, remove "nospam" from hancockr@nospamshaw.ca
Home Page: http://www.roberthancock.com/


^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH] libata: add human-readable error value decoding
  2007-05-11 23:10         ` Robert Hancock
@ 2007-05-11 23:22           ` Jeff Garzik
  0 siblings, 0 replies; 14+ messages in thread
From: Jeff Garzik @ 2007-05-11 23:22 UTC (permalink / raw)
  To: Robert Hancock
  Cc: Tejun Heo, Chuck Ebbert, linux-kernel, linux-ide, Andrew Morton

Robert Hancock wrote:
> The ATA ones are more of a pain in that regard than SCSI though - SCSI 
> has all distinct error codes for different errors, whereas ATA has 
> bitmasks for everything..

That should not affect implementation.  Either way, a table-driven 
approach can easily work.

I favor decoding the SError status bits, but your names were far too 
long.  "ProtocolErr" should be "Proto".  "10B8BErr" should be "10b8b". 
HostInternalErr to HostInt.  PHYInternalErr to PHYInt.  etc.

	Jeff



^ permalink raw reply	[flat|nested] 14+ messages in thread

end of thread, other threads:[~2007-05-11 23:22 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-05-10  2:18 [PATCH] libata: add human-readable error value decoding Robert Hancock
2007-05-10  9:43 ` Tejun Heo
2007-05-10 13:24   ` Mark Lord
2007-05-10 16:40     ` Jeff Garzik
2007-05-10 21:33       ` Mark Lord
2007-05-10 21:42         ` Jeff Garzik
2007-05-10 23:32           ` Robert Hancock
2007-05-10 23:47             ` Jeff Garzik
2007-05-11  0:55               ` Alan Cox
2007-05-10 23:29   ` Robert Hancock
2007-05-11 16:48     ` Chuck Ebbert
2007-05-11 17:11       ` Tejun Heo
2007-05-11 23:10         ` Robert Hancock
2007-05-11 23:22           ` Jeff Garzik

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).