diff options
author | Chris Metcalf <cmetcalf@tilera.com> | 2012-06-15 15:23:06 -0400 |
---|---|---|
committer | Chris Metcalf <cmetcalf@tilera.com> | 2012-07-18 16:40:17 -0400 |
commit | 41bb38fc5398ae878c799647f3c4b25374029afb (patch) | |
tree | 5d7e01bd4176db1241b801f83cf92f32231b8e8b /arch/tile/Kconfig | |
parent | eef015c8aa74451f848307fe5f65485070533bbb (diff) | |
download | linux-41bb38fc5398ae878c799647f3c4b25374029afb.tar.gz linux-41bb38fc5398ae878c799647f3c4b25374029afb.tar.bz2 linux-41bb38fc5398ae878c799647f3c4b25374029afb.zip |
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>
Diffstat (limited to 'arch/tile/Kconfig')
-rw-r--r-- | arch/tile/Kconfig | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/arch/tile/Kconfig b/arch/tile/Kconfig index 0ad771f7a7e1..557e3a381ca0 100644 --- a/arch/tile/Kconfig +++ b/arch/tile/Kconfig @@ -3,6 +3,8 @@ config TILE def_bool y + select HAVE_DMA_ATTRS + select HAVE_DMA_API_DEBUG select HAVE_KVM if !TILEGX select GENERIC_FIND_FIRST_BIT select USE_GENERIC_SMP_HELPERS @@ -79,6 +81,9 @@ config ARCH_DMA_ADDR_T_64BIT config NEED_DMA_MAP_STATE def_bool y +config ARCH_HAS_DMA_SET_COHERENT_MASK + bool + config LOCKDEP_SUPPORT def_bool y @@ -215,6 +220,19 @@ config HIGHMEM config ZONE_DMA def_bool y +config IOMMU_HELPER + bool + +config NEED_SG_DMA_LENGTH + bool + +config SWIOTLB + bool + default TILEGX + select IOMMU_HELPER + select NEED_SG_DMA_LENGTH + select ARCH_HAS_DMA_SET_COHERENT_MASK + # We do not currently support disabling NUMA. config NUMA bool # "NUMA Memory Allocation and Scheduler Support" |