Re: Small error?? in IDE dma processing?

Andre M. Hedrick (hedrick@astro.dyer.vanderbilt.edu)
Wed, 16 Dec 1998 11:12:20 -0600 (CST)


On Tue, 15 Dec 1998 jason.harp@mail.ray.ca wrote:

>
> Mark or Andre,
>
> Can you confirm an error in the following code for dma_intr(): (2.0)
>
>
> dma_stat = inb(dma_base+2); /* get DMA status */
> outb(inb(dma_base)&~1, dma_base); /* stop DMA operation */
> stat = GET_STAT(); /* get drive status */
>
>
> Should this not be:
>
>
> outb(inb(dma_base)&~1, dma_base); /* stop DMA operation*/
> dma_stat = inb(dma_base+2); /* get DMA status */
> stat = GET_STAT(); /* get drive status */

Yep, I must agree that there is an event order problem, too.

> The ATA/ATAPI-4 spec T13-1153D Revision 17 30-Oct-97 page 234 would
> seem to say the same.
>
> Would you agree that this error (if it is) would account for a number
> of IDE DMA issues seen in the last few weeks.

This may be part of the answer.......since UDMA drives are getting faster
and faster.........the timing issue become tighter. A drive that never
had problems in the past is now misbehaving, this corresponds to the fact
that the kernel in now running faster than ever before.

This drive is getting dma_intr errors, too.

> -
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo@vger.rutgers.edu
> Please read the FAQ at http://www.tux.org/lkml/
>

Cheers,
Andre Hedrick
The IDE-FNG for Linux
The APC UPS Specialist for Linux

http://www.dyer.vanderbilt.edu/server/udma/
http://www.dyer.vanderbilt.edu/server/apcupsd/apcupsd-3.5.0.bin.tar.gz

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/