Re: Direct transfer between SCSI and PCI

From: Jiri Slaby
Date: Mon Mar 09 2009 - 19:11:29 EST


On 9.3.2009 14:29, Steve Rottinger wrote:
As part
of my project, I need to be able to directly transfer data from a large
buffer that resides on
a custom PCI communications device to a SCSI disk without going through
the CPU's main
memory. Initially, it seemed like opening up the raw SCSI device in
O_DIRECT mode would
be the perfect solution. However, through some experimentation, and
reading some posts from
a few years back, it appears that O_DIRECT only works on buffer's that
reside in processor's
main memory. Does anyone have any suggestions as to how to get this to
work?

How would you want your scsi device to get the data? I suppose they are stored somewhere on the PCI device memory connected to its local bus or alike. At best it can be visible as a PCI bar but I doubt it is. As you described it here, there is no way, how would the SCSI device see the data.

Or do you want to move the data from the PCI device via DMA implemented in it directly to the SCSI device? How would you do this? I guess SCSI devices do standard S/G DMA so that they read data from host memory by themselves.

Maybe if you elaborate on what exactly do you mean by the idea?
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/