![]() | |||||||||||||
Messages in this thread |
This patchset adds per-device dma_mapping_ops support for CONFIG_X86_64 like POWER architecture does. This change enables us to cleanly fix the Calgary IOMMU issue that some devices are not behind the IOMMU [1]. It also would be helpful to handle KVM PCI passthrough. A pointer to dma_mapping_ops to struct dev_archdata is added. If the pointer is non NULL, DMA operations in asm/dma-mapping.h use it. If it's NULL, the system-wide dma_ops pointer is used as before. The major obstacle is that dma_mapping_error doesn't take a pointer to the device unlike other DMA operations. So x86 can't have dma_mapping_ops per device. Note all the POWER IOMMUs use the same dma_mapping_error function so this is not a problem for POWER but x86 IOMMUs use different dma_mapping_error functions. The first patch adds the device argument to dma_mapping_error. The patch is trivial but large since it touches lots of drivers and dma-mapping.h in all the architecture. [1] http://lkml.org/lkml/2008/5/8/423 | ||||||||||||
| Last update: 2008-05-13 08:19 [from the cache] ©2003-2008 | |||||||||||||