System memory management unit (IOMMU/SMMU) manager
smmuman options
QNX Neutrino
Options may be specified in the command line, or in a *.smmu configuration file, or both.
The smmuman service reads its startup configuration input in a single pass, from start to finish. If an option is specified more than once, the smmuman service does one of the following:
If more than one instance of an option will result in a usable configuration, the smmuman service adds each option instance to the configuration, so that the resulting configuration will have multiple instances of the information supplied by each option instance.
For example, multiple instances of the allow option can be used to allow multiple DMA devices access to different memory regions, so the smmuman service will use every instance of this option it encounters.
If only a single instance of an option will have any effect on the configuration, or if multiple instances will result in an unusable configuration, the smmuman service uses the last instance of the option it encounters.
For example, only one instance of the foreground option is usable, since smmuman runs either in the foreground or in the background.
For more information, see Configuring smmuman, Global options, and the architecture-specific and board-specific entries in this chapter.
In all implementations, the smmuman service:
Until the smmuman service programs the IOMMU/SMMUs on a board with a DMA device's memory access permissions, that device has unrestricted access to memory.
Programming the IOMMU/SMMUs with DMA devices' memory access permissions specifies both the memory regions these devices may access and their permissions when accessing these regions (e.g., read only, read and write). It doesn't affect memory access managed by board MMUs (i.e., access that passes through the CPU).
When implemented in the host of a QNX Hypervisor system, in addition to the responsibilities listed above, the SMMUMAN: