vdev smmu

Updated: October 28, 2024

Provide the required subset of smmu-*.so library functionality needed by a smmuman service running in a QNX guest

Synopsis:

vdev smmu options

Options:

intr num
The interrupt number to use to inform the guest that the smmu vdev has completed the task requested by the guest.
If you don't specify this option, the qvm process automatically assigns an interrupt number.
loc baddr
The base address of the request page for this device.
If you don't specify this option, the qvm process automatically assigns a base address.

For a list of options available to all vdevs, see Common vdev options earlier in this chapter.

Description:

The smmu vdev provides the following services:

IOMMU/SMMU services
The vdev provides for the guest in a hypervisor VM the same services for guest-physical memory as an IOMMU/SMMU provides for an OS running on hardware. These services are: accepting configuration information passed in by the guest's smmuman service, denying DMA device attempts to access memory outside the permitted regions, communicating these denials back to the devices, recording these attempts, etc.
Memory mapping
The vdev shares memory mappings for DMA devices passed through to the guest with the smmuman service running in the hypervisor host. This ensures that the host smmuman service and the board IOMMU/SMMUs can manage access to host-physical memory by pass-through DMA devices.
CAUTION:
On ARM platforms, to run the smmuman service, a hypervisor guest must load libfdt.so, so make sure you include this shared object in the guest's buildfile. Note, though, that the libfdt library is certified for internal use only. You must use this library only where directed by QNX and only in context of that direction.

For more information about the smmuman service and how to use it, see the SMMUMAN User's Guide in the QNX OS documentation.