From: Muli Ben-Y. <mu...@il...> - 2007-11-12 13:32:14
|
On Mon, Nov 12, 2007 at 05:26:24PM +0530, Amit Shah wrote: > On Monday 12 November 2007 16:20:01 Muli Ben-Yehuda wrote: > > On Wed, Nov 07, 2007 at 04:21:04PM +0200, Amit Shah wrote: > > > We make the dma_mapping_ops structure to point to our structure so > > > that every DMA access goes through us. (This is the reason this only > > > works for 64-bit guest. 32-bit guest doesn't yet have a dma_ops > > > struct.) > > > > I need the same facility for Calgary for falling back to swiotlb if a > > translation is disabled on some slot, and IB needs the same facility > > for some IB adapters (e.g., ipath). Perhaps it's time to consider > > stackable dma-ops (unless someone has a better idea...). > > That would make great sense and simplify implementations. > > How do you propose such an implementation? An array of function > pointers for each possible call? I was thinking of simply a chain of dma_ops (via dma_ops->prev_ops) , where it's the responsibility of each dma_ops implementation to call or not call the corresponding entry in chain (prev_ops->op()). This works well for Calgary (which will only use prev_ops selectively, and I think it will work well for the IB folks. Will it work for you? Cheers, Muli |