Subject: Re: Seagate ATAPI [was VIA VT82C686A IDE problems on a Gigabyte GA-6VX7-4X ]
To: Robert Elz <kre@munnari.OZ.AU>
From: Manuel Bouyer <bouyer@antioche.eu.org>
List: tech-kern
Date: 02/16/2002 19:27:43
On Sat, Feb 16, 2002 at 06:49:21PM +0700, Robert Elz wrote:
>     Date:        Sat, 9 Feb 2002 17:37:18 +0100
>     From:        Manuel Bouyer <bouyer@antioche.eu.org>
>     Message-ID:  <20020209163718.GA1665@antioche.eu.org>
> 
>   | Promise PCI card doesn't support ATAPI devices properly (or at last I never
>   | managed to get mine properly talk to my CD and ZIP).
> 
> When I got mine (first version) Promise certainly advised against using
> ATAPI connected to it (haven't looked to see if they still do) .. but I
> have a DVD out there, and under wintrash it works OK.
> 
> Under NetBSD it works OK as well - except it never seems to receive any
> interrupts (or something similar), but doing something moderately intensive
> to a regular IDE (ATA) drive connected to the same controller (I don't
> have mine on the same channel) seems to cause enough interrupts to be
> generated, and apparently the status indicates that the ATAPI device is
> ready, as while this is happening NetBSD accesses the DVD drive out there
> (to read CDs anyway, never tried dvdview or similar) just fine.

This is what I noticed too, and never found  a way to get interrupts
generated. I suspect this is an issue with interrupt delay logic in the
controller: this controller delays the interrupt until its internal buffers
have been flushed. I suspect for this it has to snoop the command register,
and it doesn't know about the ATAPI protocol.

> That is, my guess is that the atapi device isn't causing an IRQ to be
> generated, but otherwise is acting as if it is done, with status
> indicating that.   As long as something causes the controller to generate
> an IRQ, the driver sees the ready ATAPI device and processes it.
> 
> Whether the wintrash driver knows some extra magic to get interrupts to
> happen, or whether it simply sets up a high rate poll of the device, I
> have no idea (wouldn't be surprised at the latter).
> 
> In any case, for me anyway, this is the only problem with ATAPI on the
> promise - so when I happen to need to use it, I just start a
> 	find -mtime +0  /path/to/mounted/drive >/dev/null &
> (in a loop usually - there's enough stuff out there that by the time it
> has finished, all the early parts have gone from the caches, so it
> actually keeps doing real I/O all the time).   This is a bit of an I/O cache
> killer, but does mean the DVD drive works (I don't use it often under
> NetBSD)

I would rather use a dd from the raw device, this way you don't trash the
buffer and vnode caches :)

--
Manuel Bouyer, LIP6, Universite Paris VI.           Manuel.Bouyer@lip6.fr
--