smmu_* data structures
Data structures used by the SMMUMAN client API
The following data structures are defined in the smmu.h header file for the SMMUMAN client API.
smmu_devid
union smmu_devid {
    unsigned		type;
    struct smmu_devid_pci	pci;
    struct smmu_devid_mmio	mmio;
    _Uint64t		__spacer[4];
};
			The smmu_devid data structure is used to identify devices. Its members include:
- type
 - The type of device; can be one of the values defined by the smmu_devid_type enumerated values.
 - pci
 - If type is set to SDT_PCI, the smmu_devid_pci data structure specifying the PCI device information.
 - mmio
 - If type is set to SDT_MMIO, the smmu_devid_mmio data structure specifying the MMIO device information.
 - __spacer
 - For internal use.
 
smmu_devid_mmio
struct smmu_devid_mmio {
	unsigned	type;
	unsigned	length;
	_Uint64t	phys;
};
			The smmu_devid_mmio data structure is used to identify MMIO devices. Its members include:
- type
 - The type of device; should be SDT_MMIO
 - length
 - The length of the memory region the device requires for its registers.
 - phys
 - The physical address of the MMIO device's register memory region.
 
smmu_devid_pci
struct smmu_devid_pci {
	unsigned	type;
	unsigned	bus;
	unsigned	dev;
	unsigned	func;
};
			The smmu_devid_pci is used to identify PCI devices. Its members include:
- type
 - The type of device; should be SDT_PCI
 - bus
 - The PCI device's bus number.
 - dev
 - The PCI device's device number.
 - func
 - The PCI device's function number.
 
If you set bus, dev, or func to SMMU_PCI_FIELD_ANY, any value is allowed.
smmu_map_entry
struct smmu_map_entry {
	union {
		void		*virt;
		_Uint32t	virt32;
		_Uint64t	virt64;
		_Uint64t	phys;
	};
	_Uint64t	len;
};
			The smmu_map_entry data structure is used by the smmu_device_report_reserved() and smmu_mapping_add() functions; it includes the following members:
- virt
 - For future use.
 - virt32
 - For future use.
 - virt64
 - For future use.
 - phys
 - The address of the DMA device in physical memory.
 - len
 - The length (in bytes) of the DMA device memory region.
 
For more information about guest-physical and host-physical addresses and memory, see
				the QNX Virtual Environments
 chapter in the QNX Hypervisor User's
					Guide.
smmu_status
struct smmu_status {
	_Uint64t		hw_specific;
	_Uint64t		fault_addr;
	union smmu_devid	devid;
	unsigned		flags;
};
			The smmu_status data structure is used by the smmu_xfer_status() function; it carries information about DMA device transgressions, and includes the following members:
- hw_specific
 - Hardware-specific information.
 - fault_addr
 - The physical address in memory the DMA tried to access, triggering the fault.
 - devid
 - The ID of the misbehaving DMA device.
 - flags
 - A permissions flag indicating the reason for a failed request (see smmu_mapping_flags).
 
