Subject: Re: hangs while trying to record a CD
To: Nathan J. Williams <nathanw@wasabisystems.com>
From: Manuel Bouyer <bouyer@antioche.lip6.fr>
List: current-users
Date: 05/15/2002 16:50:29
On Tue, May 14, 2002 at 03:08:18PM -0400, Nathan J. Williams wrote:
> Steve Woodford <steve@mctavish.co.uk> writes:
> 
> > Try disabling DMA (both regular and Ultra-) for cd* in the kernel config
> > file:
> > 
> > cd*     at atapibus? drive ? flags 0x0ff0
> 
> Interesting. This worked (and only disabling ultra-DMA did not),
> although I still got some console spew:
> 
> cd0(pciide0:1:0): illegal request, data = 00 00 00 00 64 00 00 00 00 00
> cd0: dos partition I/O error

This one is harmless, I think. It's trying to read a disklabel from the
blank CD

> wdc_atapi_intr: warning: reading only 1 of 2 bytes
> wdc_atapi_intr: warning: reading only 1 of 2 bytes
> 
> Perhaps the first two messages are irrelevant, and the DMA version of
> whatever is triggering the latter two was the problem?

This, however, can be a problem. The DMA engine may be confused by the drive
trying to transfer more than it think should be transfered.
A byte count of 1 (or not multiple of 2 in general) is strange for a ATAPI
device, too. 
Would be interesting to know what the command is. This patch should show it,
can you try it ?

--- atapi_wdc.c	Sat Apr 27 14:52:38 2002
+++ /tmp/atapi_wdc.c	Wed May 15 16:49:37 2002
@@ -696,6 +696,7 @@
 		if (xfer->c_bcount < len) {
 			printf("wdc_atapi_intr: warning: reading only "
 			    "%d of %d bytes\n", xfer->c_bcount, len);
+			show_scsipi_xs(sc_xfer);
 			if ((chp->wdc->cap & WDC_CAPABILITY_ATAPI_NOSTREAM)) {
 			    bus_space_read_multi_2(chp->cmd_iot,
 			    chp->cmd_ioh, wd_data,
--
Manuel Bouyer, LIP6, Universite Paris VI.           Manuel.Bouyer@lip6.fr
--