Re: HSM violations from ATA PACKET cmd ABRT errors in initial comms with LG GH22 SATA DVDRW

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

 



Hello, Mikael.

On 01/04/2010 06:36 AM, Mikael Pettersson wrote:
> I've looked at the available AC_ERR_ values and how they're treated by
> libata-eh, and to avoid resets but allow for retries it seems that one
> should use AC_ERR_OTHER, or possibly AC_ERR_DEV, or possibly no AC_ERR_
> at all (i.e., zero). So please first try the patch below. If it doesn't
> eliminate the reset loop, change the AC_ERR_OTHER to AC_ERR_DEV and try
> again. And if that one still causes reset loops, try a plain 0.
> 
> /Mikael
> 
> --- linux-2.6.32/drivers/ata/sata_promise.c.~1~	2009-12-03 12:38:32.000000000 +0100
> +++ linux-2.6.32/drivers/ata/sata_promise.c	2010-01-03 22:08:08.000000000 +0100
> @@ -862,7 +862,7 @@ static void pdc_error_intr(struct ata_po
>  	if (port_status & PDC_DRIVE_ERR)
>  		ac_err_mask |= AC_ERR_DEV;
>  	if (port_status & (PDC_OVERRUN_ERR | PDC_UNDERRUN_ERR))
> -		ac_err_mask |= AC_ERR_HSM;
> +		ac_err_mask |= AC_ERR_OTHER; /* or AC_ERR_DEV, or zero */

I think AC_ERR_OTHER can still be too much.  AC_ERR_* bits should only
be set when the command failed for that reason.  Here, underrun is
expected, so not really an error condition.  But, for example, under
or overrun for an ATA R/W command should trigger HSM failure.  I think
the above error detection logic needs to be improved a bit.

Thanks.

-- 
tejun
--
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