Subject: Re: [PATCH 3/20][BNX2]: Add 40-bit DMA workaround for 5708.

From: "Michael Chan" <[email-masked]>
Date: Wed, 02 May 2007 16:28:22 -0700

On Wed, 2007-05-02 at 14:45 -0700, David Miller wrote:
> From: "Michael Chan" <[email-masked]>
> Date: Wed, 02 May 2007 14:27:49 -0700
> 
> > I see.  So IA64 always uses the SWIOTLB when it doesn't have IOMMU then?
> > 
> > I'm a bit confused.  Is it enough to just set the DMA mask to 40-bit and
> > forget about all this checking?  I thought that wasn't enough.  A tx
> > packet can be anywhere in 64-bit memory.  When it gets to the driver,
> > pci_map will not do any translation even if DMA mask is set to 40-bit if
> > it doesn't have IOMMU.  Is that right?
> 
> If the buffer doesn't meet the DMA mask specification, it should do
> bounce buffering.
> 
> Have a look at lib/swiotlb.c, that is exactly what it appears to
> be doing.
> 

OK.  Is it correct to assume that all 64-bit systems using 64-bit
dma_addr_t will either have real IOMMUs or will use SWIOTLB?  If this is
true, we can just set the DMA mask to what is supported by the hardware
and let pci_map_xxx() handle all necessary translations or bounce
buffering.