ide-scsi quirk.

From: davej@codemonkey.org.uk
Date: Mon Mar 24 2003 - 11:41:53 EST


Alan,
as mentioned a few weeks back, something similar to
this went into 2.4 (I munged this one a bit).

It deals with the issue of DMA starting before the
drive is ready iirc.

diff -urpN --exclude-from=/home/davej/.exclude bk-linus/drivers/scsi/ide-scsi.c linux-2.5/drivers/scsi/ide-scsi.c
--- bk-linus/drivers/scsi/ide-scsi.c 2003-02-04 12:58:09.000000000 +0000
+++ linux-2.5/drivers/scsi/ide-scsi.c 2003-03-17 23:42:33.000000000 +0000
@@ -78,6 +78,7 @@ typedef struct idescsi_pc_s {
 #define PC_DMA_IN_PROGRESS 0 /* 1 while DMA in progress */
 #define PC_WRITING 1 /* Data direction */
 #define PC_TRANSFORM 2 /* transform SCSI commands */
+#define PC_DMA_OK 4 /* Use DMA */
 
 /*
  * SCSI command transformation layer
@@ -494,6 +495,10 @@ static ide_startstop_t idescsi_transfer_
         ide_set_handler(drive, &idescsi_pc_intr, get_timeout(pc), NULL);
         /* Send the actual packet */
         atapi_output_bytes(drive, scsi->pc->c, 12);
+ if (test_bit (PC_DMA_OK, &pc->flags)) {
+ set_bit (PC_DMA_IN_PROGRESS, &pc->flags);
+ (void) (HWIF(drive)->ide_dma_begin(drive));
+ }
         return ide_started;
 }
 
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Mon Mar 31 2003 - 22:00:16 EST