Installing SMMUMAN
This section describes how to get SMMUMAN or SMMUMAN for Safety and add it to a QNX OS or QNX OS for Safety system.
SMMUMAN for Safety
- SMMUMAN
- SMMUMAN for Safety
If you are building a safety-related system (i.e., you are using QNX OS for Safety (QOS), QNX Advanced Virtualization Frameworks for Safety (QAVFS), QNX Hypervisor for Safety (QHS), or any other safety product from QNX), remember that the functional safety of your system depends on your usage of the correct implementation of SMMUMAN.
- You must use SMMUMAN for Safety.
- You must use SMMUMAN for Safety in accordance with the requirements and restrictions stated in the QNX SMMUMAN for Safety Safety Manual.
-safetysuffix. If you are building a safety-related system, do not use any SMMUMAN components that don't have this suffix.
Assumptions
- You have the appropriate development environment installed and configured on your development host (see the QNX SDP and QOS documentation).
- You know how to build a QNX OS system (see Building Embedded Systems in the QNX SDP documentation).
- You know how to use the QNX Software Center (see the myQNX License Manager and QNX Software Center User's Guide).
Adding SMMUMAN to a system
- Modify your BSP buildfile to include the SMMUMAN components:
- smmuman or smmuman-safety, as required
- for a system running directly on hardware as the hypervisor host, the
architecture-specific or board-specific library for your board:
smmu-* or smmu-*-safety,
as required (see
The smmu-*.so libraries
), and the *.smmu configuration file for the board, as required (seeConfiguring smmuman
) - for a QNX Hypervisor for Safety (QHS) system that will be running the
safety variant (smmuman-safety) on an x86 platform,
the pci_server-qvm_support.so support file
(see
Safety variant support for PCI (x86)
below) - for a QNX Hypervisor (QH) or QHS system, the vdev-smmu.so IOMMU/SMMU virtual device shared library, so that it will be available for guests that need to use the smmuman service
- For a system running as a QNX guest in a hypervisor VM, in addition
to adding the SMMUMAN components in your guest build, add the vdev
smmu option in the configuration for the hypervisor VM that will
host the guest (see
The vdev-smmu virtual device
). - Run make to rebuild your system with the SMMUMAN components.
- smmuman can be placed in any standard path for $PATH (e.g., /bin or /sbin).
- The shared libraries smmuman uses (*.so files) can be under any $LD_LIBRARY_PATH path (e.g., /lib/dll or /usr/dll).
Example of entries to add to the buildfile
Below are some examples of how the buildfile might be modified to include SMMUMAN.
x86 for an ordinary system
/bin/smmuman = smmuman
/lib/dll/smmu-vtd.so = smmu-vtd.so
where smmuman is the SMMUMAN service, and
smmu-vtd.so is the SMMUMAN support library for x86 platforms.ARM Renesas R-Car H3 for a safety-related system
/sbin/smmuman-safety = smmuman-safety
/usr/dll/smmu-rcar3-safety.so = smmu-rcar3-safety.so
/etc/smmuman-safety/rcar-h3-safety.smmu = ./smmuman-safety-config/rcar-h3-safety.smmu
where smmuman-safety is the SMMUMAN for Safety service,
smmu-rcar3-safety.so is the SMMUMAN support library, and
rcar-h3-safety.smmu is your safety
smmuman configuration file for Renesas R-Car H3 platforms.Guest in a QNX Hypervisor for Safety VM
/bin/smmuman-safety = smmuman-safety
where smmuman-safety is the SMMUMAN for Safety service.ARM Renesas R-Car H3 for an ordinary system
/bin/smmuman = smmuman
/bin/dll/smmu-rcar3.so = smmu-rcar3.so
/etc/smmuman/rcar-h3.smmu = ./smmuman-config/rcar-h3.smmu
where smmuman is the (non-safety) SMMUMAN service,
smmu-rcar.so is the SMMUMAN support library, and
rcar-h3.smmu is your smmuman
configuration file for Renesas R-Car H3 platforms.QNX guest in a QNX Hypervisor system
/bin/smmuman = smmuman
where smmuman is the (non-safety) SMMUMAN service.Safety variant support for PCI (x86)
If you are using the safety variant of the VTD support library (smmu-vtd-safety.so) in a QHS system, in which the QNX OS for Safety runs on the host, you must include the PCI server support file, pci_server-qvm_support.so, in your system.
- an inline file in your buildfile
- a separate configuration file
Including the PCI server support file is not necessary for non-hypervisor systems that run QNX OS for Safety and use the safety variant of the VTD library.
Inline file in buildfile
pci_server.cfg = {
[runtime]
PCI_SERVER_MODULE_LIST=pci_server-qvm_support.so
}
Because no paths are specified, this will use the default locations: pci_server.cfg in /proc/boot, and pci_server-qvm_support.so in /lib/dll/pci, the directory where pci-server expects to find all its *.so files.
Separate configuration file
pci-server --config=pathto/pci_server.cfg
where pathto is the path to the directory with your configuration
file.pidin -ppci-server libs
For more information about including configuration information in your buildfile, see
OS Image Buildfiles
in Building
Embedded Systems. For more information about configuring
pci-server, see pci-server
in the
QNX OS Utilities Reference.