ide-scsi quirk.

davej@codemonkey.org.uk
Mon, 24 Mar 2003 16:41:53 +0000


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/