if IOMMU_SUPPORT
++++menu "Generic IOMMU Pagetable Support"
++++
++++# Selected by the actual pagetable implementations
++++config IOMMU_IO_PGTABLE
++++ bool
++++
++++config IOMMU_IO_PGTABLE_LPAE
++++ bool "ARMv7/v8 Long Descriptor Format"
++++ select IOMMU_IO_PGTABLE
++++ help
++++ Enable support for the ARM long descriptor pagetable format.
++++ This allocator supports 4K/2M/1G, 16K/32M and 64K/512M page
++++ sizes at both stage-1 and stage-2, as well as address spaces
++++ up to 48-bits in size.
++++
++++config IOMMU_IO_PGTABLE_LPAE_SELFTEST
++++ bool "LPAE selftests"
++++ depends on IOMMU_IO_PGTABLE_LPAE
++++ help
++++ Enable self-tests for LPAE page table allocator. This performs
++++ a series of page-table consistency checks during boot.
++++
++++ If unsure, say N here.
++++
++++endmenu
++++
+++++ config IOMMU_IOVA
+++++ bool
+++++
config OF_IOMMU
def_bool y
depends on OF && IOMMU_API
config ARM_SMMU
bool "ARM Ltd. System MMU (SMMU) Support"
-- depends on ARM64 || ARM
---- depends on ARM64 || (ARM_LPAE && OF)
- depends on MMU
++++++ depends on (ARM64 || ARM) && MMU
select IOMMU_API
++++ select IOMMU_IO_PGTABLE_LPAE
select ARM_DMA_USE_IOMMU if ARM
help
Support for implementations of the ARM System MMU architecture
obj-$(CONFIG_IOMMU_API) += iommu.o
obj-$(CONFIG_IOMMU_API) += iommu-traces.o
obj-$(CONFIG_IOMMU_API) += iommu-sysfs.o
++++obj-$(CONFIG_IOMMU_IO_PGTABLE) += io-pgtable.o
++++obj-$(CONFIG_IOMMU_IO_PGTABLE_LPAE) += io-pgtable-arm.o
+++++ obj-$(CONFIG_IOMMU_IOVA) += iova.o
obj-$(CONFIG_OF_IOMMU) += of_iommu.o
obj-$(CONFIG_MSM_IOMMU) += msm_iommu.o msm_iommu_dev.o
obj-$(CONFIG_AMD_IOMMU) += amd_iommu.o amd_iommu_init.o