[ofa-general] [PATCH 1/11] IB/ipoib: high dma support

Eli Cohen eli at mellanox.co.il
Tue Sep 25 07:41:09 PDT 2007


On Tue, 2007-09-25 at 13:06 +0200, Or Gerlitz wrote:
> Eli Cohen wrote:
> > On Tue, 2007-09-25 at 12:22 +0200, Or Gerlitz wrote:
> >> Eli Cohen wrote:
> 
> >>> Add high dma support to ipoib
> >>> This patch assumes all IB devices support 64 bit DMA.
> 
> >> On some architectures DMA addresses are 32 bit, so I am not sure to 
> >> follow your comment. This capability states that the network device can 
> >> dma to high memory.
> 
> > I believe it means that *if* the kernel hands buffers whose addresses
> > exceed 32 bits then the device can handle them.
> 
> High-memory is well documents in books and elsewhere. I just want to say 
> that the change-log comment is confusing and unrelated.
> 
> What you want to say is that this patch assumes that for all IB devices, 
> ib_dma_map_single and ib_dma_map_page supports high memory, which is not 
> the case, see below.
> 
> Ralph?
> 
> Or.
> 
> > static u64 ipath_dma_map_page(struct ib_device *dev,
> > 			      struct page *page,
> > 			      unsigned long offset,
> > 			      size_t size,
> > 			      enum dma_data_direction direction)
> > {
> > 	u64 addr;
> > 
> > 	BUG_ON(!valid_dma_direction(direction));
> > 
> > 	if (offset + size > PAGE_SIZE) {
> > 		addr = BAD_DMA_ADDRESS;
> > 		goto done;
> > 	}
> > 
> > 	addr = (u64) page_address(page);
> > 	if (addr)
> > 		addr += offset;
> > 	/* TODO: handle highmem pages */
> > 
> > done:
> > 	return addr;
> > }
> 

I got the impression that all supported IB devices support dma-ing
to/from memory > 4GB. Perhaps other vendors can comment.



More information about the general mailing list