[419] in linux-scsi channel archive

home help back first fref pref prev next nref lref last post

Grrr: Reading more than buffersize

daemon@ATHENA.MIT.EDU (David S. Miller)
Mon Jul 24 00:56:24 1995

Date: Sun, 23 Jul 1995 22:35:33 -0400
From: "David S. Miller" <davem@caip.rutgers.edu>
To: eric@aib.com
CC: drew@poohsticks.org, mucci@cs.utk.edu, linux-scsi@vger.rutgers.edu
In-reply-to: <m0sXBzc-0009WNC@aib.com> (eric@aib.com)

   Date: Sat, 15 Jul 95 14:31 EDT
   From: eric@aib.com (Eric Youngdale)

   >Yes! The 0-copy approach! Most of the newer OSs are providing such things
   >as 0 copy device reads and 0 copy network stacks where possible. (I think
   >HP is pushing the envelope on this approach.) We need a generic interface
   >to do DMA direct to user space...

	   This would be an interesting approach.  The thing that would
   be tricky about it is that we need some generic interface to lookup
   the physical address based upon a virtual address in the user's space,
   plus we have to be aware that we could (and probably will) have a new
   physical page at each page boundary.  Also, we have to use bounce buffers
   if the low-level driver does not support DMA to addresses > 16Mb
   (see the disk code for how to do this).

As an interesting aside, on certain architectures the DMA used with
the SCSI subsystem does it's transfers via virtual address, and as
such this virt->phys address acquisition would not even be necessary.
Sparc has this, the ESP Scsi chip has what is called DVMA where all
transfers are virtually addressed.  Only problem with this is that
once needs to flush the relevant pages on DVMA writes since Sparc uses
virtual cache tagged with context keys.


Later,
David S. Miller
davem@caip.rutgers.edu

home help back first fref pref prev next nref lref last post