I took a quick look at this ATA panic. The exact same one occurs for Ceri. A quick dissassemble shows that the testb is the check for the DMA flag at the very end of ata_generic_transaction(). The bug appears to be that this may be a PIO request (since the DMA check is outside the switch() statement). The fix is to make sure it's a DMA request before dereferencing an element of the DMA struct. Try the attached patch. -Nate Index: ata-lowlevel.c =================================================================== RCS file: /home/ncvs/src/sys/dev/ata/ata-lowlevel.c,v retrieving revision 1.40 diff -u -r1.40 ata-lowlevel.c --- ata-lowlevel.c 24 Jul 2004 19:03:28 -0000 1.40 +++ ata-lowlevel.c 6 Aug 2004 20:28:15 -0000 _at__at_ -294,7 +294,7 _at__at_ } /* request finish here */ - if (ch->dma->flags & ATA_DMA_ACTIVE) + if ((request->flags & ATA_R_DMA) && ch->dma->flags & ATA_DMA_ACTIVE) ch->dma->unload(ch); ch->running = NULL; return ATA_OP_FINISHED;Received on Fri Aug 06 2004 - 18:33:56 UTC
This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:38:05 UTC