This message is from the T13 list server.

So the way I read the spec is the host has the
option to retry the command using any of the host/drive
supported transfer options.

That could be:
1) Retry using the same UDMA transfer Mode
2) Reconfigure for a slower UDMA and retry the transfer
3) Reconfigure for a MWDMA transfer and retry the transfer
4) Retry using a PIO cycle (do not need to reconfigure)

Retry problem areas:
Given the signal integrity on the ATA bus is VERY pattern dependent,

1) retrying the cycle using the same transfer mode is NOT very useful
2) retrying the cycle using a lower speed UDMA cycle helps if it
        was a setup violation, but if the host/device does not allocate
        some of the additional time afforded by a slower transfer
        mode to hold time, this option will not get you past
        a hold time violation (timing, or noise)

        I have seen a number of device controllers recently that use
        5 ns of hold time for ALL UDMA Modes.  This is fine
        for Mode [5], but a complete VIOLATION for Mode [2 or 0]

3) Reconfiguring for MWDMA is a pain, as you have to do it
        before you retry the cycle and after you complete the
        cycle (given you don't want to permanently downshift)

        Downside: No CRC checking

4) Retrying in PIO can be done just by using a different command
        and you don't have to reconfigure the system or the drive.

        Downside: No CRC checking
        Upside: If using PIO Mode [0] you have the most amount of
                setup time.

Jeff's recommendation:
        1) Retry the cycle in PIO Mode [0], but leave normal
                transfers at ATA UDMA Mode [N]
        2) If you get more than 6 CRCs, then shift to UDMA Mode [N-1]
                retry the cycle in PIO Mode [0], but normal
                data transfers will now use mode [N-1]
        3) If you get more than 6 CRCs, and you are already down
                to UDMA Mode [0], then downshift to PIO Mode [0]
        
                Why not switch to MWDMA ?
                Several reasons:
                        MWDMA does not have CRC checking
                        UDMA Mode [0], generally has more than TWICE
                        the Valid window (setup + hold) over
                        MWDMA Mode [2] even though both have a sustained
                        transfer rate of 16 MB/s.

I would NOT suggest a REQUIRED retry sequence as OSs and hosts
have different requirements

Just my humble opinion.

Jeff

Jeff Wolford                       Email: [EMAIL PROTECTED]
Senior Storage Architect
Storage Interface and Tools - PC Storage Group
    Voice: (281) 514-9465,     Pager: (800) 973-5739
Compaq Computer Corporation


> -----Original Message-----
> From: Paul Walker [mailto:[EMAIL PROTECTED]]
> Sent: Tuesday, December 11, 2001 9:58 AM
> To: [EMAIL PROTECTED]
> Subject: [t13] UDMA 'recovery procedure'
> 
> 
> This message is from the T13 list server.
> 
> 
> Hi all,
> 
> Jeff mentioned recovery procedures (albeit in a different 
> context), which
> reminded me.
> 
> I've been having a look through the ATA-5 specification for 
> DMA recovery
> procedures. Admittedly I haven't gone over the entire thing, 
> but in the
> details of the DMA protocol, DMA WRITE commands, and the UDMA 
> CRC stuff, the
> only references to errors I can find are:
> 
> 1) "For READ DMA, WRITE DMA, READ DMA QUEUED, or WRITE DMA 
> QUEUED commands:
> When a CRC error is detected, the error shall be reported by 
> setting both
> ICRC and ABRT (bit 7 and bit 2 in the Error register) to one. ICRC is
> defined as the "Interface CRC Error" bit. The host shall 
> respond to this
> error by re-issuing the command."
> 
> Is this a requirement, that the host shall keep re-issuing 
> this command? If
> so, how many times must it fail before the host can 
> reasonably be expected
> to give up? 
> 
> Presumably (following the note given at the end of the CRC section,
> reproduced below) it should have fallen back to mode 0 before 
> giving up? Any
> rules of thumb as to what 'excessive' should mean? :-)
> 
> "NOTE - If excessive CRC errors are encountered while operating in an
> Ultra mode, the host should select a slower Ultra mode."
> 
> 
> Also, in the details of the DMA protocol:
> 
> 3) "Transition HDMA0:HI0: When the BSY is cleared to zero and 
> DRQ is cleared
> to zero, then the device has completed the command and shall make a
> transition to the HI0: Host_Idle state (see Figure 19). If an error is
> reported, the host shall perform appropriate error recovery."
> 
> No details on "appropriate error recovery" are given, either 
> in the protocol
> details or in the command details. Is this purely restricted 
> to the UDMA CRC
> checking at present, or did I miss something?
> 
> Thanks,
> 
> -- 
> Paul
> 
> STMicroelectronics,                        Tel: (01454) 462454
> 1000 Aztec West, Almondsbury,              Fax: (01454) 617910
> Bristol BS32 4SQ
> Subscribe/Unsubscribe instructions can be found at www.t13.org.
> 
Subscribe/Unsubscribe instructions can be found at www.t13.org.

Reply via email to