Re: [CFT] Bus mastering support for IDE CDROM audio

Andrew Morton
2002-01-27T21:44:53Z

Jens Axboe wrote:
>
> On Sun, Jan 27 2002, Robert Love wrote:
> > On Fri, 2002-01-25 at 03:40, Andrew Morton wrote:
> > > Reading audio from IDE CDROMs always uses PIO. This patch
> > > teaches the kernel to use DMA for the CDROMREADAUDIO ioctl.
> > > [...]
> > > This code has not been tested for its effects upon SCSI-based
> > > CDROM readers. It needs to be.
> >
> > Andrew,
> >
> > I wanted to confirm success of testing the patch with a SCSI CD-ROM
> > (Plextor UltraPlex Wide on aic7xxx). I used your updated patch off your
> > website.
> >
> > Audio rip completed without error. Performance seems the same, which I
> > assume is to be expected with SCSI readers.
>
> sr already uses DMA for all transfers, so no performance gain was to be
> expected there. problem is ide-cd using pio for all packet command data
> transfers currently (modulo fs read write requests, of course)

Yup. Rob was looking for regression - I'm not set up to test
SCSI CDROMs here.

The second patch goes back to reading a bunch of frames all
inside the same request, rather than one frame at a time. This
is because the cdparanoia guys tell me that it can prevent
single-request overruns and underruns and other data loss which
occurs around the start and end of the request. So with a walking-window
read algorithm from userspace they can pick up data which would
otherwise be lost.

Also it seems that some devices aren't happy with the larger transfers,
so it looks like the algorithm needs to become:

- Try multiple frames, DMA
- If that fails, try single frames, DMA
- If that fails, fall back to PIO

While all the time not altering the DMA status of the drive for
block-based filesystem I/O.

> not a whole lot of pio aic7xxx adapters out there :-)
>

Thank heavens for that (I _knew_ I shouldn't have stuck my
nose in drivers/ide/).

-