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