Re: network devices don't handle pci_dma_mapping_error()'s
From: Amit S. Kale <hidden>
Date: 2006-12-07 06:18:00
On Thursday 07 December 2006 01:03, Muli Ben-Yehuda wrote:
On Wed, Dec 06, 2006 at 10:16:44AM -0800, Stephen Hemminger wrote:quoted
I think it is really only an issue for drivers that turn on HIGH_DMA and have limited mask values. The majority of drivers either only handle 32 bit (!HIGH_DMA) or do full 64 bit mapping. I don't know the details of how we manage IOMMU, but doesn't mapping always work for those drivers.It's up to an IOMMU (DMA-API) implementation to define what constitutes a mapping error, e.g., Calgary and GART on x86-64 will return bad_dma_address from the mapping functions when they run out of entries in the IO space, which can happen regardless of the mask.
We've seen IOMMU space running out on ia64 systems. Would this be the case with other 10G driver requiring IOMMU remapping? We need frequent map-unmap at near 10G throughput. On the x86_64 boxes that don't feature iommu functionality (because the motherboard disables it or because Linux can't handle it) Linux bounce buffer framework automatically comes into picture. Could we have the same framework take over when IOMMU space is over? I don't think this is possible with present code, though. We probably can have fallback_dma_ops in addition to dma_ops. -Amit