Please sign in to comment.
arm64: iommu: smmu-v3: Add data structure initialization and stage 2 …
…for SMMUv3 A System Memory Management Unit(SMMU) performs a task analogous to a CPU's MMU, translating addresses for device requests from system I/O devices before the requests are passed into the system interconnect. Implement a driver for SMMU v3 that maps and unmaps memory for specified stream ids. The guest cells are assigned stream IDs in their configs and only those assigned stream IDs can be used by the cells. There is no checking in place to make sure two cells do not use the same stream IDs. This must be taken care of when creating the cell configs. This driver is implemented based on the following assumptions: - Running on a Little endian 64 bit core compatible with ARM v8 architecture. - SMMU supporting only AARCH64 mode. - SMMU AARCH 64 stage 2 translation configurations are compatible with ARMv8 VMSA. So re-using the translation tables of CPU for SMMU. This driver is loosely based on the Linux kernel SMMU v3 driver. Signed-off-by: Pratyush Yadav <firstname.lastname@example.org> Signed-off-by: Lokesh Vutla <email@example.com> [Jan: dropped comments about SMMU emulation - not present here, added iommu_count_units() check to arm_smmuv3_cell_exit] Signed-off-by: Jan Kiszka <firstname.lastname@example.org>
- Loading branch information...
Showing with 1,129 additions and 1 deletion.
Oops, something went wrong.