Live CD problems.
Matthew Dillon
dillon at apollo.backplane.com
Sun Jul 22 12:37:18 PDT 2007
:Hi,
:
:During boot of the live cd this shows up:
:
:Mounting root from cd9660:cd0c
:ata1: FAILURE - zero length DMA transfer attempted
:acd0: setting up DMA failed
:ata1: FAILURE - zero length DMA transfer attempted
:acd0: setting up DMA failed
:ata1: FAILURE - zero length DMA transfer attempted
:acd0: setting up DMA failed
:ata1: FAILURE - zero length DMA transfer attempted
:acd0: setting up DMA failed
:ata1: FAILURE - zero length DMA transfer attempted
:acd0: setting up DMA failed
That is definitely not correct. If you don't mind burning another dead
CD could you please try this patch? It will force the system to panic
when it tries to do a 0-length I/O. Then get a backtrace from the DDB
prompt so we can see the call chain that leads up to the problem.
-Matt
Index: ata-dma.c
===================================================================
RCS file: /cvs/src/sys/dev/disk/nata/ata-dma.c,v
retrieving revision 1.4
diff -u -p -r1.4 ata-dma.c
--- ata-dma.c 5 Jun 2007 18:30:40 -0000 1.4
+++ ata-dma.c 22 Jul 2007 19:32:04 -0000
@@ -227,6 +227,7 @@ return EIO;
}
if (!count) {
device_printf(dev, "FAILURE - zero length DMA transfer attempted\n");
+ panic("zero length DMA transfer");
return EIO;
}
if (((uintptr_t)data & (ch->dma->alignment - 1)) ||
Index: atapi-cd.c
===================================================================
RCS file: /cvs/src/sys/dev/disk/nata/atapi-cd.c,v
retrieving revision 1.7
diff -u -p -r1.7 atapi-cd.c
--- atapi-cd.c 3 Jun 2007 04:48:29 -0000 1.7
+++ atapi-cd.c 22 Jul 2007 19:35:03 -0000
@@ -785,6 +785,8 @@ biodone(bp);
return 0;
}
+ KASSERT(bbp->b_bcount != 0, ("acd_strategy: 0-length I/O"));
+
bp->bio_driver_info = cdev;
bbp->b_resid = bbp->b_bcount;
@@ -842,6 +844,8 @@ lba = (bp->bio_offset & 0x00FFFFFFFFFFF
}
count = bbp->b_bcount / blocksize;
+ KASSERT(count != 0, ("acd_strategy: 0-length I/O %d bytes vs %d blksize",
+ bbp->b_bcount, blocksize));
if (bbp->b_cmd == BUF_CMD_READ) {
/* if transfer goes beyond range adjust it to be within limits */
More information about the Bugs
mailing list