On the Renesas R-Car H3 and other related boards, IOMMU/SMMUs are known as IPMMUs; a smmuman service running on the hardware needs a support library for the board IPMMUs.
The configurations described here are for use with the smmu-rcar3.so and smmu-rcar3-safety.so support libraries for Renesas R-Car H3 IPMMUs. These support libraries implement the code to communicate with Renesas R-Car H3 IPMMUs, as specified in Chapter 16 Renesas R-Car Series, 3rd Generation User’s Manual: Hardware, Nov. 2018 (Rev. 1.50).
To load this support library, you must set the smmu option's smmu_type argument to the name of the support library:
The following describes the options for a smmuman service using a smmu-rcar3.so or smmu-rcar3-safety.so support library for SMMUs that use the Renesas R-Car H3 IPMMU architecture.
On boards that use the Renesas R-Car H3 IPMMU architecture, the smmu_type_parm argument is as follows:
paddr,fault_vector,mm_fault_bit{,socid.revid}
For example, the following configuration is for an R-Car H3 SOC (revision 3.0), as described in the Renesas R-Car Series, 3rd Generation User’s Manual: Hardware, Nov. 2018 (Rev. 1.50):
smmu rcar3 0xe67b0000,228,18,0x4f.0x20
where 0xe67b0000 is the physical address of the main memory IPMMU unit registers, 228 is the interrupt that occurs when an illegal DMA request is attempted, 18 is the page table fault interrupt bit, and 0x4f.0x20 is the ID and revision numbers of the SoC supported by the configuration data.
On boards that use the Renesas R-Car H3 IPMMU architecture, the syntax for smmu_unit_parm is as follows:
paddr,intr_status_bit
On boards that use the Renesas R-Car H3 IPMMU architecture, the syntax for smmu_use_parm is as follows:
utlb
For example:
device mem:0xE6EF0000 use vi0 0
where mem: defines a memory-mapped I/O device at physical address 0xE6EF0000; this device uses the vi0 IOMMU/SMMU unit and the micro-translation lookaside buffer (TLB) 0.