Re: [PATCH] libata: change drive ready wait after hard reset to 5s

From: Mario Limonciello
Date: Mon Feb 02 2009 - 12:27:31 EST


I believe this is the reference that Stuart refers to in the ATA-6 spec:

http://www.t10.org/t13/project/d1410r3a-ATA-ATAPI-6.pdf

Here's the snippet, (p327):

"
Transition D0HR1:D0HR1: When the sample indicates that DASP- is negated
and less than 450 ms have
elapsed since the negation of RESET-, then the device shall make a
transition to the D0HR1: Sample_DASP-
state. When the sample indicates that DASP- is negated and greater than
450 ms but less than 5 s have
elapsed since the negation of RESET-, then the device may make a
transition to the D0HR1: Sample_DASP-
state.
Transition D0HR1:D0HR3: When the sample indicates that DASP- is negated
and 5 s have elapsed since the
negation of RESET-, then the device shall clear bit 7 in the Error
register and make a transition to the D0HR3:
Set_status state. When the sample indicates that DASP- is negated and
greater than 450 ms but less than 5 s
have elapsed since the negation of RESET-, then the device may clear bit
7 in the Error register and make a
transition to the D0HR3: Set_status state.
"

Hayes, Stuart wrote:
> This fixes problems during resume with drives that take longer than 1s
> to be ready. The ATA-6 spec appears to allow 5 seconds for a drive to
> be ready.
>
> On one affected system, this patch changes "PM: resume devices took..."
> message from 17 seconds to 4 seconds, and gets rid of a lot of ugly
> timeout/error messages.
>
> Without this patch, the libata code moves on after 1s, tries to send a
> soft reset (which the drive doesn't see because it isn't ready) which
> also times out, then an IDENTIFY command is sent to the drive which
> times out, and finally the error handler will try to send another hard
> reset which will finally get things working.
>
> Sorry to send as an attachment, but my mail server will wrap text.
>
>
> Signed-off-by: Stuart Hayes <stuart_hayes@xxxxxxxx>
>
>

--
Mario Limonciello
*Dell | Linux Engineering*
mario_limonciello@xxxxxxxx

Attachment: signature.asc
Description: OpenPGP digital signature