vdev smmu

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:

IOMMU/SMMU services
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
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 pass-through DMA devices' accesses to host-physical memory.
Note:

If you don't specify a location or an interrupt number, the qvm process automatically assigns one.

On ARM platforms, to run the smmuman service, a hypervisor guest must load libfdt.so. Make sure you include this shared object in the guest's buildfile.

The libfdt library is certified for internal use only. You must not use this library except 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 SDP OS Core Components documentation.