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) |
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 @@ | |||
3 | 3 | ||
4 | config TILE | 4 | config TILE |
5 | def_bool y | 5 | def_bool y |
6 | select HAVE_DMA_ATTRS | ||
7 | select HAVE_DMA_API_DEBUG | ||
6 | select HAVE_KVM if !TILEGX | 8 | select HAVE_KVM if !TILEGX |
7 | select GENERIC_FIND_FIRST_BIT | 9 | select GENERIC_FIND_FIRST_BIT |
8 | select USE_GENERIC_SMP_HELPERS | 10 | select USE_GENERIC_SMP_HELPERS |
@@ -79,6 +81,9 @@ config ARCH_DMA_ADDR_T_64BIT | |||
79 | config NEED_DMA_MAP_STATE | 81 | config NEED_DMA_MAP_STATE |
80 | def_bool y | 82 | def_bool y |
81 | 83 | ||
84 | config ARCH_HAS_DMA_SET_COHERENT_MASK | ||
85 | bool | ||
86 | |||
82 | config LOCKDEP_SUPPORT | 87 | config LOCKDEP_SUPPORT |
83 | def_bool y | 88 | def_bool y |
84 | 89 | ||
@@ -215,6 +220,19 @@ config HIGHMEM | |||
215 | config ZONE_DMA | 220 | config ZONE_DMA |
216 | def_bool y | 221 | def_bool y |
217 | 222 | ||
223 | config IOMMU_HELPER | ||
224 | bool | ||
225 | |||
226 | config NEED_SG_DMA_LENGTH | ||
227 | bool | ||
228 | |||
229 | config SWIOTLB | ||
230 | bool | ||
231 | default TILEGX | ||
232 | select IOMMU_HELPER | ||
233 | select NEED_SG_DMA_LENGTH | ||
234 | select ARCH_HAS_DMA_SET_COHERENT_MASK | ||
235 | |||
218 | # We do not currently support disabling NUMA. | 236 | # We do not currently support disabling NUMA. |
219 | config NUMA | 237 | config NUMA |
220 | bool # "NUMA Memory Allocation and Scheduler Support" | 238 | bool # "NUMA Memory Allocation and Scheduler Support" |