This is an alpha version of ARM System MMU v3.2 support.
Hardware overview is provided in the header of smmu.c.
I would like to open a discussion about various areas of this patch:
1) Should we use normal pmap semantics, i.e. pmap_enter(), pmap_remove() ?
2) IOMMU interface and virtual address space management
Documentation is available here:
https://static.docs.arm.com/ihi0070/ca/IHI_0070_C_a_System_Memory_Management_Unit_Arm_Architecture_Specification.pdf