diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2013-02-26 14:09:17 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2013-02-26 14:09:17 -0500 |
commit | f6c0ffa8f0b0781f4954cb06f0a81d6c10c1b434 (patch) | |
tree | f99190661706d18f129497a4ef2d37822c9c34db /drivers/iommu/Kconfig | |
parent | 42a0a1b0fd343888c59afc8b243a77bcec2cc11c (diff) | |
parent | 604542b824f72fa5d7fd977af277538c1e15b5f0 (diff) |
Merge tag 'iommu-updates-v3.9' of git://git.kernel.org/pub/scm/linux/kernel/git/joro/iommu
Pull IOMMU Updates from Joerg Roedel:
"Besides some fixes and cleanups in the code there are three more
important changes to point out this time:
* New IOMMU driver for the ARM SHMOBILE platform
* An IOMMU-API extension for non-paging IOMMUs (required for
upcoming PAMU driver)
* Rework of the way the Tegra IOMMU driver accesses its
registetrs - register windows are easier to extend now.
There are also a few changes to non-iommu code, but that is acked by
the respective maintainers."
* tag 'iommu-updates-v3.9' of git://git.kernel.org/pub/scm/linux/kernel/git/joro/iommu: (23 commits)
iommu/tegra: assume CONFIG_OF in SMMU driver
iommu/tegra: assume CONFIG_OF in gart driver
iommu/amd: Remove redundant NULL check before dma_ops_domain_free().
iommu/amd: Initialize device table after dma_ops
iommu/vt-d: Zero out allocated memory in dmar_enable_qi
iommu/tegra: smmu: Fix incorrect mask for regbase
iommu/exynos: Make exynos_sysmmu_disable static
ARM: mach-shmobile: r8a7740: Add IPMMU device
ARM: mach-shmobile: sh73a0: Add IPMMU device
ARM: mach-shmobile: sh7372: Add IPMMU device
iommu/shmobile: Add iommu driver for Renesas IPMMU modules
iommu: Add DOMAIN_ATTR_WINDOWS domain attribute
iommu: Add domain window handling functions
iommu: Implement DOMAIN_ATTR_PAGING attribute
iommu: Check for valid pgsize_bitmap in iommu_map/unmap
iommu: Make sure DOMAIN_ATTR_MAX is really the maximum
iommu/tegra: smmu: Change SMMU's dependency on ARCH_TEGRA
iommu/tegra: smmu: Use helper function to check for valid register offset
iommu/tegra: smmu: Support variable MMIO ranges/blocks
iommu/tegra: Add missing spinlock initialization
...
Diffstat (limited to 'drivers/iommu/Kconfig')
-rw-r--r-- | drivers/iommu/Kconfig | 76 |
1 files changed, 75 insertions, 1 deletions
diff --git a/drivers/iommu/Kconfig b/drivers/iommu/Kconfig index 01068987809d..5c514d0711d1 100644 --- a/drivers/iommu/Kconfig +++ b/drivers/iommu/Kconfig | |||
@@ -158,7 +158,7 @@ config TEGRA_IOMMU_GART | |||
158 | 158 | ||
159 | config TEGRA_IOMMU_SMMU | 159 | config TEGRA_IOMMU_SMMU |
160 | bool "Tegra SMMU IOMMU Support" | 160 | bool "Tegra SMMU IOMMU Support" |
161 | depends on ARCH_TEGRA_3x_SOC && TEGRA_AHB | 161 | depends on ARCH_TEGRA && TEGRA_AHB |
162 | select IOMMU_API | 162 | select IOMMU_API |
163 | help | 163 | help |
164 | Enables support for remapping discontiguous physical memory | 164 | Enables support for remapping discontiguous physical memory |
@@ -187,4 +187,78 @@ config EXYNOS_IOMMU_DEBUG | |||
187 | 187 | ||
188 | Say N unless you need kernel log message for IOMMU debugging | 188 | Say N unless you need kernel log message for IOMMU debugging |
189 | 189 | ||
190 | config SHMOBILE_IPMMU | ||
191 | bool | ||
192 | |||
193 | config SHMOBILE_IPMMU_TLB | ||
194 | bool | ||
195 | |||
196 | config SHMOBILE_IOMMU | ||
197 | bool "IOMMU for Renesas IPMMU/IPMMUI" | ||
198 | default n | ||
199 | depends on (ARM && ARCH_SHMOBILE) | ||
200 | select IOMMU_API | ||
201 | select ARM_DMA_USE_IOMMU | ||
202 | select SHMOBILE_IPMMU | ||
203 | select SHMOBILE_IPMMU_TLB | ||
204 | help | ||
205 | Support for Renesas IPMMU/IPMMUI. This option enables | ||
206 | remapping of DMA memory accesses from all of the IP blocks | ||
207 | on the ICB. | ||
208 | |||
209 | Warning: Drivers (including userspace drivers of UIO | ||
210 | devices) of the IP blocks on the ICB *must* use addresses | ||
211 | allocated from the IPMMU (iova) for DMA with this option | ||
212 | enabled. | ||
213 | |||
214 | If unsure, say N. | ||
215 | |||
216 | choice | ||
217 | prompt "IPMMU/IPMMUI address space size" | ||
218 | default SHMOBILE_IOMMU_ADDRSIZE_2048MB | ||
219 | depends on SHMOBILE_IOMMU | ||
220 | help | ||
221 | This option sets IPMMU/IPMMUI address space size by | ||
222 | adjusting the 1st level page table size. The page table size | ||
223 | is calculated as follows: | ||
224 | |||
225 | page table size = number of page table entries * 4 bytes | ||
226 | number of page table entries = address space size / 1 MiB | ||
227 | |||
228 | For example, when the address space size is 2048 MiB, the | ||
229 | 1st level page table size is 8192 bytes. | ||
230 | |||
231 | config SHMOBILE_IOMMU_ADDRSIZE_2048MB | ||
232 | bool "2 GiB" | ||
233 | |||
234 | config SHMOBILE_IOMMU_ADDRSIZE_1024MB | ||
235 | bool "1 GiB" | ||
236 | |||
237 | config SHMOBILE_IOMMU_ADDRSIZE_512MB | ||
238 | bool "512 MiB" | ||
239 | |||
240 | config SHMOBILE_IOMMU_ADDRSIZE_256MB | ||
241 | bool "256 MiB" | ||
242 | |||
243 | config SHMOBILE_IOMMU_ADDRSIZE_128MB | ||
244 | bool "128 MiB" | ||
245 | |||
246 | config SHMOBILE_IOMMU_ADDRSIZE_64MB | ||
247 | bool "64 MiB" | ||
248 | |||
249 | config SHMOBILE_IOMMU_ADDRSIZE_32MB | ||
250 | bool "32 MiB" | ||
251 | |||
252 | endchoice | ||
253 | |||
254 | config SHMOBILE_IOMMU_L1SIZE | ||
255 | int | ||
256 | default 8192 if SHMOBILE_IOMMU_ADDRSIZE_2048MB | ||
257 | default 4096 if SHMOBILE_IOMMU_ADDRSIZE_1024MB | ||
258 | default 2048 if SHMOBILE_IOMMU_ADDRSIZE_512MB | ||
259 | default 1024 if SHMOBILE_IOMMU_ADDRSIZE_256MB | ||
260 | default 512 if SHMOBILE_IOMMU_ADDRSIZE_128MB | ||
261 | default 256 if SHMOBILE_IOMMU_ADDRSIZE_64MB | ||
262 | default 128 if SHMOBILE_IOMMU_ADDRSIZE_32MB | ||
263 | |||
190 | endif # IOMMU_SUPPORT | 264 | endif # IOMMU_SUPPORT |