Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 48ec83bc authored by Will Deacon's avatar Will Deacon Committed by Joerg Roedel
Browse files

iommu/arm-smmu: Add initial driver support for ARM SMMUv3 devices



Version three of the ARM SMMU architecture introduces significant
changes and improvements over previous versions of the specification,
necessitating a new driver in the Linux kernel.

The main change to the programming interface is that the majority of the
configuration data has been moved from MMIO registers to in-memory data
structures, with communication between the CPU and the SMMU being
mediated via in-memory circular queues.

This patch adds an initial driver for SMMUv3 to Linux. We currently
support pinned stage-1 (DMA) and stage-2 (KVM VFIO) mappings using the
generic IO-pgtable code.

Cc: Robin Murphy <robin.murphy@arm.com>
Signed-off-by: default avatarWill Deacon <will.deacon@arm.com>
Signed-off-by: default avatarJoerg Roedel <jroedel@suse.de>
parent a73e528a
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -1634,11 +1634,12 @@ F: drivers/i2c/busses/i2c-cadence.c
F:	drivers/mmc/host/sdhci-of-arasan.c
F:	drivers/edac/synopsys_edac.c

ARM SMMU DRIVER
ARM SMMU DRIVERS
M:	Will Deacon <will.deacon@arm.com>
L:	linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
S:	Maintained
F:	drivers/iommu/arm-smmu.c
F:	drivers/iommu/arm-smmu-v3.c
F:	drivers/iommu/io-pgtable-arm.c

ARM64 PORT (AARCH64 ARCHITECTURE)
+13 −0
Original line number Diff line number Diff line
@@ -339,6 +339,7 @@ config SPAPR_TCE_IOMMU
	  Enables bits of IOMMU API required by VFIO. The iommu_ops
	  is not implemented as it is not necessary for VFIO.

# ARM IOMMU support
config ARM_SMMU
	bool "ARM Ltd. System MMU (SMMU) Support"
	depends on (ARM64 || ARM) && MMU
@@ -352,4 +353,16 @@ config ARM_SMMU
	  Say Y here if your SoC includes an IOMMU device implementing
	  the ARM SMMU architecture.

config ARM_SMMU_V3
	bool "ARM Ltd. System MMU Version 3 (SMMUv3) Support"
	depends on ARM64 && PCI
	select IOMMU_API
	select IOMMU_IO_PGTABLE_LPAE
	help
	  Support for implementations of the ARM System MMU architecture
	  version 3 providing translation support to a PCIe root complex.

	  Say Y here if your system includes an IOMMU device implementing
	  the ARM SMMUv3 architecture.

endif # IOMMU_SUPPORT
+1 −0
Original line number Diff line number Diff line
@@ -9,6 +9,7 @@ obj-$(CONFIG_MSM_IOMMU) += msm_iommu.o msm_iommu_dev.o
obj-$(CONFIG_AMD_IOMMU) += amd_iommu.o amd_iommu_init.o
obj-$(CONFIG_AMD_IOMMU_V2) += amd_iommu_v2.o
obj-$(CONFIG_ARM_SMMU) += arm-smmu.o
obj-$(CONFIG_ARM_SMMU_V3) += arm-smmu-v3.o
obj-$(CONFIG_DMAR_TABLE) += dmar.o
obj-$(CONFIG_INTEL_IOMMU) += intel-iommu.o
obj-$(CONFIG_IPMMU_VMSA) += ipmmu-vmsa.o
+2670 −0

File added.

Preview size limit exceeded, changes collapsed.