Subject: Re: Diaspora, politics, and MI
To: Jason Thorpe <thorpej@nas.nasa.gov>
From: Bill Studenmund <skippy@macro.stanford.edu>
List: current-users
Date: 09/18/1996 16:39:18
On Wed, 18 Sep 1996, Jason Thorpe wrote:

> The problems with the bounce-buffer stuff that everyone is currently 
> talking about are:
> 
> 	- They are currently _very_ i386-specific.
> 
> 	- They make it much harder to convert the drivers that need them
> 	  to a machine-independent DMA mapping system. [*]
> 
> [*] A machine-independent DMA mapping system really _is_ what is 
> required; before each DMA transfer, the buffer will be mapped into 
> DMA-able space (on the alpha, this means finding the physical page 
> containing the buffer, and programming some DMA mapping registers and 
> tranlating the host memory address to the memory range as seen by the ISA 
> bus ... on the i386, it means allocating a bounce-buffer in memory that 
> the ISA can see), the DMA controller on the card told which address to 
> DMA too (returned by the DMA mapping function), the DMA will happen, and 
> the buffer will be un-mapped (on the alpha, undoing the programming you 
> did before, on the i386, bcopy()ing the bounce-buffer's contents to the 
> buffer the caller provided).  (Yeesh!  What a long sentence! :-)
> 
> Anyhow, the point is that this is going to reqire some drivers to be 
> restructured a bit ... restructuring them in the _opposite_ direction 
> now would make that much harder to fix them later.

I'm not familiar with the bounce buffer patches that have come out, but if
they were in the structure you describe, wouldn't they be ok (albeit only
implimented for one architecture)?

I agree with the point that we should move towards M.I. if at all
possable. But I think we need to take a first step for i386.

Do we have an acceptable tentative code interface for bounce buffer dma
yet (possably an MI dma spec)? If not, could we come up with one
(realizing that it might change)?  Then move the bounce buffer patches
into this framework and try it with some arch/i386/dev trial drivers? That
way i386 folks get bounce buffers and we also move towards M.I. bounce
buffers. 

I know these are big words coming from someone who can't really help write
the code. :-)

Take care,

Bill