CD-ripping using ioctl() does not work when DMA is disabled (ide-cd)

From: Johan Billing
Date: Mon Aug 30 2004 - 14:57:04 EST


In kernel 2.6.8, my old TEAC CD-532E-A CD-ROM is blacklisted and DMA is automatically disabled. When I try to rip an audio CD using cdparanoia, all I get is a silent wav file full of zeroes. I know that there was some discussions about this on the list during the summer in conjunction with the "dropping to single frame DMA" issue, but I think I have some new information to add...

I investigated the cdparanoia source a bit and was able to pinpoint the problem a bit more. cdparanoia uses the ioctl() interface with CDROMREADAUDIO to read data from the CD and normally tries to read 6 or 8 frames at a time. The problem is that only the first read frame contains valid data, the others are blank and only contain zeroes. If I disable error correction and only read one frame at a time ("cdparanoia -n1 -Z") it seems to work fine. If I defy the blacklist and turn DMA on using "hdparm -d1", cdparanoia can read multiple frames without any problems.

So in conclusion, this seems to be a problem that only occurs when reading multiple frames using ioctl() with DMA off. I hope that this will help find and fix the problem.

/Johan

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