smmuman

QNX SDP8.0SMMUMAN User's GuideAPIConfigurationUtilities

System memory management unit (IOMMU/SMMU) manager

Syntax:

smmuman options

Runs on:

QNX OS

Options:

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.

Description:

In all implementations, the smmuman service:
  • Enables device drivers and user applications (smmuman clients) to determine the memory regions DMA devices are permitted to access.
  • Programs the IOMMU/SMMUs with the memory regions each DMA device is permitted to access, as determined by the configuration and/or requested by the smmuman clients.
  • Ensures that, after DMA devices' memory access permissions have been programmed into the IOMMU/SMMUs, no DMA device is able to access memory to which it has not been explicitly granted access.
  • Enables the smmuman clients to retrieve records of DMA device attempts to access memory that have been rejected by the IOMMU/SMMUs.
  • Manages reserved memory regions, adding them to allowed mappings when a DMA device is enabled, and removing them when the device is disabled.
CAUTION:

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 a hypervisor host, the SMMUMAN has these additional responsibilities:
  • Manages guest-physical memory to host-physical memory translations and access for non-CPU initiated reads and writes (i.e., for DMA devices).
  • Ensures that no pass-through device can access host-physical memory outside its mapped (permitted) host-physical memory region.
Page updated: