OSDN Git Service

tile pci: enable IOMMU to support DMA for legacy devices
authorChris Metcalf <cmetcalf@tilera.com>
Fri, 15 Jun 2012 19:23:06 +0000 (15:23 -0400)
committerChris Metcalf <cmetcalf@tilera.com>
Wed, 18 Jul 2012 20:40:17 +0000 (16:40 -0400)
commit41bb38fc5398ae878c799647f3c4b25374029afb
tree5d7e01bd4176db1241b801f83cf92f32231b8e8b
parenteef015c8aa74451f848307fe5f65485070533bbb
tile pci: enable IOMMU to support DMA for legacy devices

This change uses the TRIO IOMMU to map the PCI DMA space and physical
memory at different addresses.  We also now use the dma_mapping_ops
to provide support for non-PCI DMA, PCIe DMA (64-bit) and legacy PCI
DMA (32-bit).  We use the kernel's software I/O TLB framework
(i.e. bounce buffers) for the legacy 32-bit PCI device support since
there are a limited number of TLB entries in the IOMMU and it is
non-trivial to handle indexing, searching, matching, etc.  For 32-bit
devices the performance impact of bounce buffers should not be a concern.

Signed-off-by: Chris Metcalf <cmetcalf@tilera.com>
arch/tile/Kconfig
arch/tile/include/asm/Kbuild
arch/tile/include/asm/device.h [new file with mode: 0644]
arch/tile/include/asm/dma-mapping.h
arch/tile/include/asm/pci.h
arch/tile/kernel/pci-dma.c
arch/tile/kernel/pci_gx.c
arch/tile/kernel/setup.c