Documentation ¶
Overview ¶
Package hwapi provides access to low level hardware
Index ¶
- Constants
- Variables
- func AddressRangesIsDMAProtected(l LowLevelHardwareInterfaces, first, end uint64) (bool, error)
- func AllowsVMXInSMX(h LowLevelHardwareInterfaces) (bool, error)
- func GetACPITableDevMem(h LowLevelHardwareInterfaces, n string) ([]byte, error)
- func GetACPITableSysFS(h LowLevelHardwareInterfaces, n string) ([]byte, error)
- func HasSMRR(h LowLevelHardwareInterfaces) (bool, error)
- func IA32FeatureControlIsLocked(h LowLevelHardwareInterfaces) (bool, error)
- func IA32PlatformID(h LowLevelHardwareInterfaces) (uint64, error)
- func IsReservedInE820(l LowLevelHardwareInterfaces, start uint64, end uint64) (bool, error)
- func IterateOverSMBIOSTablesType0(h LowLevelHardwareInterfaces, callback func(t0 *SMBIOSType0) bool) (ret bool, err error)
- func IterateOverSMBIOSTablesType17(h LowLevelHardwareInterfaces, callback func(t17 *SMBIOSType17) bool) (ret bool, err error)
- func ReadHostBridgeTseg(h LowLevelHardwareInterfaces) (uint32, uint32, error)
- func TXTLeavesAreEnabled(h LowLevelHardwareInterfaces) (bool, error)
- func UsableMemoryAbove4G(l LowLevelHardwareInterfaces) (size uint64, err error)
- func UsableMemoryBelow4G(l LowLevelHardwareInterfaces) (size uint64, err error)
- type ACPIRsdp
- type ACPIRsdpRev1
- type DMAProtectedRange
- type HashAlg
- type HwAPI
- func (h HwAPI) CPUID(leaf, subleaf uint32) (eax, ebx, ecx, edx uint32)
- func (h HwAPI) CPULogCount() uint32
- func (h HwAPI) CPUSignature() uint32
- func (h HwAPI) CPUSignatureFull() (uint32, uint32, uint32, uint32)
- func (h HwAPI) GetACPITable(n string) ([]byte, error)
- func (h HwAPI) HasMTRR() bool
- func (h HwAPI) HasSMX() bool
- func (h HwAPI) HasVMX() bool
- func (h HwAPI) IterateOverE820Ranges(target string, callback func(start uint64, end uint64) bool) (bool, error)
- func (h HwAPI) IterateOverSMBIOSTables(n uint8, callback func(s *smbios.Structure) bool) (ret bool, err error)
- func (h HwAPI) LookupIOAddress(addr uint64, regs VTdRegisters) ([]uint64, error)
- func (h HwAPI) NVLocked(tpmCon *TPM) (bool, error)
- func (h HwAPI) NVReadValue(tpmCon *TPM, index uint32, password string, size, offhandle uint32) ([]byte, error)
- func (h HwAPI) NewTPM() (*TPM, error)
- func (h HwAPI) PCIEnumerateVisibleDevices(cb func(d PCIDevice) (abort bool)) (err error)
- func (h HwAPI) PCIReadConfigSpace(d PCIDevice, off int, lenBytes int) ([]byte, error)
- func (h HwAPI) PCIWriteConfigSpace(d PCIDevice, off int, in interface{}) (err error)
- func (h HwAPI) ProcessorBrandName() string
- func (h HwAPI) ReadMSR(msr int64) []uint64
- func (h HwAPI) ReadNVPublic(tpmCon *TPM, index uint32) ([]byte, error)
- func (h HwAPI) ReadPCR(tpmCon *TPM, pcr uint32) ([]byte, error)
- func (t HwAPI) ReadPhys(addr int64, data UintN) error
- func (t HwAPI) ReadPhysBuf(addr int64, buf []byte) error
- func (h HwAPI) VersionString() string
- func (t HwAPI) WritePhys(addr int64, data UintN) error
- type IA32Debug
- type LowLevelHardwareInterfaces
- type PCIDevice
- type PCR
- type SMBIOSType0
- type SMBIOSType16
- type SMBIOSType17
- type SMBIOSType18
- type SMRR
- type TCGVendorID
- type TPM
- func (t *TPM) Close() error
- func (t *TPM) GetCapability(cap, subcap uint32) ([]interface{}, error)
- func (t *TPM) GetVersion() TPMVersion
- func (t *TPM) Info() (*TPMInfo, error)
- func (t *TPM) MeasurementLog() ([]byte, error)
- func (t *TPM) NVReadValue(index uint32, ownerPassword string, size, offhandle uint32) ([]byte, error)
- func (t *TPM) ReadNVPublic(index uint32) ([]byte, error)
- func (t *TPM) ReadPCR(pcrIndex uint32) ([]byte, error)
- func (t *TPM) ReadPCRs(alg HashAlg) ([]PCR, error)
- type TPMInfo
- type TPMInterface
- type TPMVersion
- type Uint16
- type Uint32
- type Uint64
- type Uint8
- type UintN
- type VTdRegisters
Constants ¶
const ( // TsegPCIRegSandyAndNewer is the offset withing the MCH PCI config space since SandyBridge TsegPCIRegSandyAndNewer = 0xb8 // TSEGPCIBroadwellde is the offset withing the MCH PCI config space TSEGPCIBroadwellde = 0xa8 // DPRPCIRegSandyAndNewer is the offset withing the MCH PCI config space since SandyBridge DPRPCIRegSandyAndNewer = 0x5c // DPRPciRegBroadwellDE offset withing the VTd PCI config space DPRPciRegBroadwellDE = 0x290 )
Variables ¶
var ( // HostbridgeIDsBroadwellDE lookup table is special... HostbridgeIDsBroadwellDE = []uint16{ 0x2F00, 0x6F00, } // HostbridgeIDsSandyCompatible lookup table for most stuff that seems compatible with Sandy Bridge HostbridgeIDsSandyCompatible = []uint16{ 0x0100, 0x0104, 0x0150, 0x0154, 0x0158, 0x0c00, 0x0c04, 0x0a04, 0x0c08, 0x1980, 0x1995, 0x1604, 0x1610, 0x1614, 0x5af0, 0x31f0, 0x1900, 0x1904, 0x190c, 0x190f, 0x1910, 0x1918, 0x191f, 0x1924, 0x5904, 0x590c, 0x590f, 0x5910, 0x5914, 0x5918, 0x591f, 0x5a04, 0x5a02, 0x3E34, 0x3E35, 0x3ED0, 0x3ec4, 0x3e20, 0x3ec2, 0x3e30, 0x3e31, 0x8A12, 0x8A02, 0x8A10, 0x8A00, 0x9B61, 0x9B71, 0x9B51, 0x9B60, 0x9B55, 0x9B35, 0x9B54, 0x9B44, } )
Functions ¶
func AddressRangesIsDMAProtected ¶
func AddressRangesIsDMAProtected(l LowLevelHardwareInterfaces, first, end uint64) (bool, error)
AddressRangesIsDMAProtected returns true if the address is DMA protected by the IOMMU
func AllowsVMXInSMX ¶
func AllowsVMXInSMX(h LowLevelHardwareInterfaces) (bool, error)
AllowsVMXInSMX returns true if VMX is allowed in SMX
func GetACPITableDevMem ¶
func GetACPITableDevMem(h LowLevelHardwareInterfaces, n string) ([]byte, error)
func GetACPITableSysFS ¶
func GetACPITableSysFS(h LowLevelHardwareInterfaces, n string) ([]byte, error)
func HasSMRR ¶
func HasSMRR(h LowLevelHardwareInterfaces) (bool, error)
HasSMRR returns true if the CPU supports SMRR
func IA32FeatureControlIsLocked ¶
func IA32FeatureControlIsLocked(h LowLevelHardwareInterfaces) (bool, error)
IA32FeatureControlIsLocked returns true if the IA32_FEATURE_CONTROL msr is locked
func IA32PlatformID ¶
func IA32PlatformID(h LowLevelHardwareInterfaces) (uint64, error)
IA32PlatformID returns the IA32_PLATFORM_ID msr
func IsReservedInE820 ¶
func IsReservedInE820(l LowLevelHardwareInterfaces, start uint64, end uint64) (bool, error)
IsReservedInE820 reads the e820 table exported via /sys/firmware/memmap and checks whether the range [start; end] is marked as reserved. Returns true if it is reserved, false if not.
func IterateOverSMBIOSTablesType0 ¶
func IterateOverSMBIOSTablesType0(h LowLevelHardwareInterfaces, callback func(t0 *SMBIOSType0) bool) (ret bool, err error)
IterateOverSMBIOSTablesType0 returns all SMBIOS tables of Type0 decoded
func IterateOverSMBIOSTablesType17 ¶
func IterateOverSMBIOSTablesType17(h LowLevelHardwareInterfaces, callback func(t17 *SMBIOSType17) bool) (ret bool, err error)
IterateOverSMBIOSTablesType17 returns all SMBIOS tables of Type17 decoded
func ReadHostBridgeTseg ¶
func ReadHostBridgeTseg(h LowLevelHardwareInterfaces) (uint32, uint32, error)
ReadHostBridgeTseg returns TSEG base and TSEG limit
func TXTLeavesAreEnabled ¶
func TXTLeavesAreEnabled(h LowLevelHardwareInterfaces) (bool, error)
TXTLeavesAreEnabled returns true if all TXT leaves are enabled
func UsableMemoryAbove4G ¶
func UsableMemoryAbove4G(l LowLevelHardwareInterfaces) (size uint64, err error)
UsableMemoryAbove4G returns the usable memory above 4GiB
func UsableMemoryBelow4G ¶
func UsableMemoryBelow4G(l LowLevelHardwareInterfaces) (size uint64, err error)
UsableMemoryBelow4G returns the usable memory below 4GiB
Types ¶
type ACPIRsdp ¶
type ACPIRsdp struct { ACPIRsdpRev1 RSDPLen uint32 XSDTPtr uint64 ExtendedChecksum uint8 Reserved [3]uint8 }
ACPIRsdp as defined in ACPI Spec 6.2 "5.2.5.3 Root System Description Pointer (RSDP) Structure"
type ACPIRsdpRev1 ¶
type ACPIRsdpRev1 struct { Signature [8]uint8 Checksum uint8 OEMID [6]uint8 Revision uint8 RSDTPtr uint32 }
ACPIRsdpRev1 as defined in ACPI Spec 1
type DMAProtectedRange ¶
DMAProtectedRange encodes the DPR register
func ReadHostBridgeDPR ¶
func ReadHostBridgeDPR(h LowLevelHardwareInterfaces) (DMAProtectedRange, error)
ReadHostBridgeDPR reads the DPR register from PCI config space
type HwAPI ¶
type HwAPI struct{}
HwAPI The context object for low level hardware api
func (HwAPI) CPUID ¶
CPUID executes the CPUID instruction with the given leaf (eax) and subleaf (ecx) values Returns the resulting eax, ebx, ecx, and edx register values
func (HwAPI) CPULogCount ¶
CPULogCount returns number of logical CPU cores
func (HwAPI) CPUSignatureFull ¶
CPUSignatureFull returns CPUID=1 eax, ebx, ecx, edx
func (HwAPI) GetACPITable ¶
GetACPITable returns the requested ACPI table, for DSDT use argument "DSDT"
func (HwAPI) IterateOverE820Ranges ¶
func (h HwAPI) IterateOverE820Ranges(target string, callback func(start uint64, end uint64) bool) (bool, error)
iterateOverE820Ranges iterates over all e820 entries and invokes the callback for every matching type
func (HwAPI) IterateOverSMBIOSTables ¶
func (h HwAPI) IterateOverSMBIOSTables(n uint8, callback func(s *smbios.Structure) bool) (ret bool, err error)
IterateOverSMBIOSTables calls the callback for every SMBIOS table of specified type
func (HwAPI) LookupIOAddress ¶
func (h HwAPI) LookupIOAddress(addr uint64, regs VTdRegisters) ([]uint64, error)
LookupIOAddress returns the address of the root Tbl
func (HwAPI) NVReadValue ¶
func (h HwAPI) NVReadValue(tpmCon *TPM, index uint32, password string, size, offhandle uint32) ([]byte, error)
NVReadValue reads a given NV index
func (HwAPI) PCIEnumerateVisibleDevices ¶
PCIEnumerateVisibleDevices enumerates all visible PCI devices
func (HwAPI) PCIReadConfigSpace ¶
pciReadConfigSpace reads from PCI config space into out
func (HwAPI) PCIWriteConfigSpace ¶
pciWriteConfigSpace writes to PCI config space from in
func (HwAPI) ProcessorBrandName ¶
ProcessorBrandName returns the CPU brand name
func (HwAPI) ReadNVPublic ¶
ReadNVPublic reads public data about an NV index
func (HwAPI) ReadPhys ¶
ReadPhys reads data from physical memory at address addr. On x86 platforms, this uses the seek+read syscalls.
func (HwAPI) ReadPhysBuf ¶
ReadPhysBuf reads data from physical memory at address addr. On x86 platforms, this uses the seek+read syscalls.
func (HwAPI) VersionString ¶
VersionString returns the vendor ID
type IA32Debug ¶
IA32Debug feature msr
func IA32DebugInterfaceEnabledOrLocked ¶
func IA32DebugInterfaceEnabledOrLocked(h LowLevelHardwareInterfaces) (*IA32Debug, error)
IA32DebugInterfaceEnabledOrLocked returns the enabled, locked and pchStrap state of IA32_DEBUG_INTERFACE msr
type LowLevelHardwareInterfaces ¶
type LowLevelHardwareInterfaces interface { // cpuid.go VersionString() string HasSMX() bool HasVMX() bool HasMTRR() bool ProcessorBrandName() string CPUSignature() uint32 CPUSignatureFull() (uint32, uint32, uint32, uint32) CPULogCount() uint32 CPUID(uint32, uint32) (uint32, uint32, uint32, uint32) // e820.go IterateOverE820Ranges(target string, callback func(start uint64, end uint64) bool) (bool, error) // iommu.go LookupIOAddress(addr uint64, regs VTdRegisters) ([]uint64, error) // msr.go ReadMSR(msr int64) []uint64 // pci.go PCIEnumerateVisibleDevices(cb func(d PCIDevice) (abort bool)) (err error) PCIReadConfigSpace(d PCIDevice, off int, len int) ([]byte, error) PCIWriteConfigSpace(d PCIDevice, off int, val interface{}) error // phys.go ReadPhys(addr int64, data UintN) error ReadPhysBuf(addr int64, buf []byte) error WritePhys(addr int64, data UintN) error // tpm.go NewTPM() (*TPM, error) NVLocked(tpmCon *TPM) (bool, error) ReadNVPublic(tpmCon *TPM, index uint32) ([]byte, error) NVReadValue(tpmCon *TPM, index uint32, password string, size, offhandle uint32) ([]byte, error) ReadPCR(tpmCon *TPM, pcr uint32) ([]byte, error) // acpi.go GetACPITable(n string) ([]byte, error) // smbios.go IterateOverSMBIOSTables(n uint8, callback func(s *smbios.Structure) bool) (ret bool, err error) }
LowLevelHardwareInterfaces provides methods to access hardware found on modern x86_64 platforms
type PCIDevice ¶
type PCIDevice struct { Bus int Device int Function int // True if device is hidden Hidden bool // BARs currently decoded by the device BAR map[int]uint64 // ROM BAR currently decoded by the device ROM uint64 }
PCIDevice represents a PCI device
type SMBIOSType0 ¶
type SMBIOSType0 struct { Vendor string BIOSVersion string BIOSStartingAddress int BIOSReleaseDate string BIOSSize int BiosCharacteristics uint32 BiosCharacteristicsExtension []uint8 SystemBiosMajor uint8 SystemBiosMinor uint8 EmbeddedControllerMajor uint8 EmbeddedControllerMinor uint8 // contains filtered or unexported fields }
SMBIOSType0 represents a decoded Type0 as defined in SMBIOS 2.4
type SMBIOSType16 ¶
type SMBIOSType16 struct { }
SMBIOSType16 represents a decoded Type16 as defined in SMBIOS 2.4
type SMBIOSType17 ¶
type SMBIOSType17 struct { PhysicalMemory *SMBIOSType16 MemoryErrorInformation *SMBIOSType18 TotalWidth int DataWidth int Size uint64 DeviceLocator string BankLocator string Speed int // in MT/s Manufacturer string SerialNumber string AssetTag string PartNumber string // contains filtered or unexported fields }
SMBIOSType17 represents a decoded Type17 as defined in SMBIOS 2.3
type SMBIOSType18 ¶
type SMBIOSType18 struct { }
SMBIOSType18 represents a decoded Type18 as defined in SMBIOS 2.4
type SMRR ¶
SMRR for the SMM code.
func GetSMRRInfo ¶
func GetSMRRInfo(h LowLevelHardwareInterfaces) (SMRR, error)
GetSMRRInfo returns SMRR config of the platform
type TCGVendorID ¶
type TCGVendorID uint32
TCGVendorID TPM manufacturer id
func (TCGVendorID) String ¶
func (id TCGVendorID) String() string
type TPM ¶
type TPM struct { Version TPMVersion Interf TPMInterface SysPath string RWC io.ReadWriteCloser }
TPM interfaces with a TPM device on the system.
func (*TPM) GetCapability ¶
GetCapability requests the TPMs capability function and returns an interface. User needs to take care of the data for now.
func (*TPM) MeasurementLog ¶
MeasurementLog reads the TCPA eventlog in binary format from the Linux kernel
func (*TPM) NVReadValue ¶
func (t *TPM) NVReadValue(index uint32, ownerPassword string, size, offhandle uint32) ([]byte, error)
NVReadValue reads a value from a given NVRAM index Type and byte order for TPM1.2 interface: (offset uint32) Type and byte oder for TPM2.0 interface: (authhandle uint32)
func (*TPM) ReadNVPublic ¶
ReadNVPublic reads public data about an NVRAM index. Permissions and what so not.
type TPMInfo ¶
type TPMInfo struct { Version TPMVersion Interface TPMInterface VendorInfo string Manufacturer TCGVendorID // FirmwareVersionMajor and FirmwareVersionMinor describe // the firmware version of the TPM, but are only available // for TPM 2.0 devices. FirmwareVersionMajor int FirmwareVersionMinor int }
TPMInfo contains information about the version & interface of an open TPM.
type TPMInterface ¶
type TPMInterface uint8
TPMInterface indicates how the client communicates with the TPM.
const ( TPMInterfaceDirect TPMInterface = iota TPMInterfaceKernelManaged TPMInterfaceDaemonManaged )
TPM interfaces
type TPMVersion ¶
type TPMVersion uint8
TPMVersion is used to configure a preference in which TPM to use, if multiple are available.
const ( TPMVersionAgnostic TPMVersion = iota TPMVersion12 TPMVersion20 )
TPM versions
type UintN ¶
type UintN interface { // Return size in bytes. Size() int64 // Return string formatted in hex. String() string // contains filtered or unexported methods }
UintN is a wrapper around uint types and provides a few io-related functions.
type VTdRegisters ¶
type VTdRegisters struct { Version uint32 // Architecture version supported by the implementation. Reserved1 uint32 // Reserved Capabilities uint64 // Hardware reporting of capabilities. ExtendedCapabilities uint64 // Hardware reporting of extended capabilities. GlobalCommand uint32 // Register controlling general functions. GlobalStatus uint32 // Register reporting general status. RootTableAddress uint64 // Register to set up location of root table. ContextCommand uint64 // Register to manage context-entry cache. Reserved2 uint32 // Reserved FaultStatus uint32 // Register to report Fault/Error status FaultEventControl uint32 // Interrupt control register for fault events. FaultEventData uint32 // Interrupt message data register for fault events. FaultEventAddress uint32 // Interrupt message address register for fault event messages. FaultEventUpperAddress uint32 // Interrupt message upper address register for fault event messages. Reserved3 uint64 // Reserved Reserved4 uint64 // Reserved AdvancedFaultLog uint64 // Register to configure and manage advanced fault logging. Reserved5 uint32 // Reserved ProtectedMemoryEnable uint32 // Register to enable DMA-protected memory region(s). ProtectedLowMemoryBase uint32 // Register pointing to base of DMA-protected low memory region. ProtectedLowMemoryLimit uint32 // Register pointing to last address (limit) of the DMA-protected low memory region. ProtectedHighMemoryBase uint64 // Register pointing to base of DMA-protected high memory region. ProtectedHighMemoryLimit uint64 // Register pointing to last address (limit) of the DMA-protected high memory region. InvalidationQueueHead uint64 // Offset to the invalidation queue entry that will be read next by hardware. InvalidationQueueTail uint64 // Offset to the invalidation queue entry that will be written next by software. InvalidationQueueAddress uint64 // Base address of memory-resident invalidation queue. Reserved6 uint32 // Reserved InvalidationCompletionStatus uint32 // Register to indicate the completion of an Invalidation Wait Descriptor with IF=1. InvalidationCompletionEventControl uint32 // Register to control Invalidation Queue Events InvalidationCompletionEventData uint32 // Invalidation Queue Event message data register for Invalidation Queue events. InvalidationCompletionEventAddress uint32 // Invalidation Queue Event message address register for Invalidation Queue events. InvalidationCompletionEventUpperAddress uint32 // Invalidation Queue Event message upper address register for Invalidation Queue events. Reserved7 uint64 // Reserved. InterruptRemappingTableAddress uint64 // Register indicating Base Address of Interrupt Remapping Table. PageRequestQueueHead uint64 // Offset to the page request queue entry that will be processed next by software. PageRequestQueueTail uint64 // Offset to the page request queue entry that will be written next by hardware. PageRequestQueueAddress uint64 // Base address of memory-resident page request queue. Reserved8 uint32 // Reserved PageRequestStatus uint32 // Register to indicate one or more pending page requests in page request queue. PageRequestEventControl uint32 // Register to control page request events. PageRequestEventData uint32 // Page request event message data register. PageRequestEventAddress uint32 // Page request event message address register PageRequestEventUpperAddress uint32 // Page request event message upper address register. MTRRCapability uint64 // Register for MTRR capability reporting. MTRRDefaultType uint64 // Register to configure MTRR default type. FixedRangeMTRR64K00000 uint64 // Fixed-range memory type range register for 64K range starting at 00000h. FixedRangeMTRR16K80000 uint64 // Fixed-range memory type range register for 16K range starting at 80000h. FixedRangeMTRR16KA0000 uint64 // Fixed-range memory type range register for 16K range starting at A0000h. FixedRangeMTRR4KC0000 uint64 // Fixed-range memory type range register for 4K range starting at C0000h. FixedRangeMTRR4KC8000 uint64 // Fixed-range memory type range register for 4K range starting at C8000h. FixedRangeMTRR4KD0000 uint64 // Fixed-range memory type range register for 4K range starting at D0000h. FixedRangeMTRR4KD8000 uint64 // Fixed-range memory type range register for 4K range starting at D8000h. FixedRangeMTRR4KE0000 uint64 // Fixed-range memory type range register for 4K range starting at E0000h. FixedRangeMTRR4KE8000 uint64 // Fixed-range memory type range register for 4K range starting at E8000h. FixedRangeMTRR4KF0000 uint64 // Fixed-range memory type range register for 4K range starting at F0000h. FixedRangeMTRR4KF8000 uint64 // Fixed-range memory type range register for 4K range starting at F8000h. VariableRangeMTRRBase0 uint64 // Variable-range memory type range0 base register. VariableRangeMTRRMask0 uint64 // Variable-range memory type range0 mask register. VariableRangeMTRRBase1 uint64 // Variable-range memory type range1 base register. VariableRangeMTRRMask1 uint64 // Variable-range memory type range1 mask register. VariableRangeMTRRBase2 uint64 // Variable-range memory type range2 base register. VariableRangeMTRRMask2 uint64 // Variable-range memory type range2 mask register. VariableRangeMTRRBase3 uint64 // Variable-range memory type range3 base register. VariableRangeMTRRMask3 uint64 // Variable-range memory type range3 mask register. VariableRangeMTRRBase4 uint64 // Variable-range memory type range4 base register. VariableRangeMTRRMask4 uint64 // Variable-range memory type range4 mask register. VariableRangeMTRRBase5 uint64 // Variable-range memory type range5 base register. VariableRangeMTRRMask5 uint64 // Variable-range memory type range5 mask register. VariableRangeMTRRBase6 uint64 // Variable-range memory type range6 base register. VariableRangeMTRRMask6 uint64 // Variable-range memory type range6 mask register. VariableRangeMTRRBase7 uint64 // Variable-range memory type range7 base register. VariableRangeMTRRMask7 uint64 // Variable-range memory type range7 mask register. VariableRangeMTRRBase8 uint64 // Variable-range memory type range8 base register. VariableRangeMTRRMask8 uint64 // Variable-range memory type range8 mask register. VariableRangeMTRRBase9 uint64 // Variable-range memory type range9 base register. VariableRangeMTRRMask9 uint64 // Variable-range memory type range9 mask register. VirtualCommandCapability uint64 // Hardware reporting of commands supported by virtual-DMA Remapping hardware. Reserved10 uint64 // Reserved for future expansion of Virtual Command Capability Register. VirtualCommand uint64 // Register to submit commands to virtual DMA Remapping hardware. Reserved11 uint64 // Reserved for future expansion of Virtual Command Register. VirtualCommandResponse uint64 // Register to receive responses from virtual DMA Remapping hardware. Reserved12 uint64 // Reserved for future expansion of Virtual Command Response Register. }
VTdRegisters represents the IOMMIO space