hwapi

package
v1.0.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 26, 2025 License: MIT Imports: 20 Imported by: 25

Documentation

Overview

Package hwapi provides access to low level hardware

Index

Constants

View Source
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

View Source
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,
	}
)
View Source
var (
	// HashSHA1 is the TPM 1.2 identifier for SHA1
	HashSHA1 = HashAlg(tpm2.AlgSHA1)
	// HashSHA256 is the TPM 2.0 identifier for SHA256
	HashSHA256 = HashAlg(tpm2.AlgSHA256)
)

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

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

type DMAProtectedRange struct {
	Lock bool
	// Reserved 1-3
	Size uint8
	// Reserved 12-19
	Top uint16
}

DMAProtectedRange encodes the DPR register

func ReadHostBridgeDPR

func ReadHostBridgeDPR(h LowLevelHardwareInterfaces) (DMAProtectedRange, error)

ReadHostBridgeDPR reads the DPR register from PCI config space

type HashAlg

type HashAlg uint8

HashAlg is the TPM hash algorithm id

func (HashAlg) String

func (a HashAlg) String() string

String returns a human-friendly representation of the hash algorithm.

type HwAPI

type HwAPI struct{}

HwAPI The context object for low level hardware api

func (HwAPI) CPUID

func (h HwAPI) CPUID(leaf, subleaf uint32) (eax, ebx, ecx, edx uint32)

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

func (h HwAPI) CPULogCount() uint32

CPULogCount returns number of logical CPU cores

func (HwAPI) CPUSignature

func (h HwAPI) CPUSignature() uint32

CPUSignature returns CPUID=1 eax

func (HwAPI) CPUSignatureFull

func (h HwAPI) CPUSignatureFull() (uint32, uint32, uint32, uint32)

CPUSignatureFull returns CPUID=1 eax, ebx, ecx, edx

func (HwAPI) GetACPITable

func (h HwAPI) GetACPITable(n string) ([]byte, error)

GetACPITable returns the requested ACPI table, for DSDT use argument "DSDT"

func (HwAPI) HasMTRR

func (h HwAPI) HasMTRR() bool

HasMTRR returns true if MTRR are supported

func (HwAPI) HasSMX

func (h HwAPI) HasSMX() bool

HasSMX returns true if SMX is supported

func (HwAPI) HasVMX

func (h HwAPI) HasVMX() bool

HasVMX returns true if VMX is supported

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) NVLocked

func (h HwAPI) NVLocked(tpmCon *TPM) (bool, error)

NVLocked returns true if the NV RAM is locked, otherwise false

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) NewTPM

func (h HwAPI) NewTPM() (*TPM, error)

NewTPM Looks for a TPM device, returns it if one is found

func (HwAPI) PCIEnumerateVisibleDevices

func (h HwAPI) PCIEnumerateVisibleDevices(cb func(d PCIDevice) (abort bool)) (err error)

PCIEnumerateVisibleDevices enumerates all visible PCI devices

func (HwAPI) PCIReadConfigSpace

func (h HwAPI) PCIReadConfigSpace(d PCIDevice, off int, lenBytes int) ([]byte, error)

pciReadConfigSpace reads from PCI config space into out

func (HwAPI) PCIWriteConfigSpace

func (h HwAPI) PCIWriteConfigSpace(d PCIDevice, off int, in interface{}) (err error)

pciWriteConfigSpace writes to PCI config space from in

func (HwAPI) ProcessorBrandName

func (h HwAPI) ProcessorBrandName() string

ProcessorBrandName returns the CPU brand name

func (HwAPI) ReadMSR

func (h HwAPI) ReadMSR(msr int64) []uint64

ReadMSR returns the MSR on core #0

func (HwAPI) ReadNVPublic

func (h HwAPI) ReadNVPublic(tpmCon *TPM, index uint32) ([]byte, error)

ReadNVPublic reads public data about an NV index

func (HwAPI) ReadPCR

func (h HwAPI) ReadPCR(tpmCon *TPM, pcr uint32) ([]byte, error)

ReadPCR read fom a given tpm connection a given pc register

func (HwAPI) ReadPhys

func (t HwAPI) ReadPhys(addr int64, data UintN) error

ReadPhys reads data from physical memory at address addr. On x86 platforms, this uses the seek+read syscalls.

func (HwAPI) ReadPhysBuf

func (t HwAPI) ReadPhysBuf(addr int64, buf []byte) error

ReadPhysBuf reads data from physical memory at address addr. On x86 platforms, this uses the seek+read syscalls.

func (HwAPI) VersionString

func (h HwAPI) VersionString() string

VersionString returns the vendor ID

func (HwAPI) WritePhys

func (t HwAPI) WritePhys(addr int64, data UintN) error

WritePhys writes data to physical memory at address addr. On x86 platforms, this uses the seek+read syscalls.

type IA32Debug

type IA32Debug struct {
	Enabled  bool
	Locked   bool
	PCHStrap bool
}

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

func GetAPI

GetAPI Returns an initialized TxtApi object

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 PCR

type PCR struct {
	Index     int
	Digest    []byte
	DigestAlg crypto.Hash
}

PCR encapsulates the value of a PCR at a point in time.

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

type SMRR struct {
	Active   bool
	PhysBase uint64
	PhysMask uint64
}

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 NewTPM

func NewTPM() (*TPM, error)

NewTPM returns a TPM

func (*TPM) Close

func (t *TPM) Close() error

Close closes the TPM socket and wipe locked buffers

func (*TPM) GetCapability

func (t *TPM) GetCapability(cap, subcap uint32) ([]interface{}, error)

GetCapability requests the TPMs capability function and returns an interface. User needs to take care of the data for now.

func (*TPM) GetVersion

func (t *TPM) GetVersion() TPMVersion

GetVersion returns the TPM version

func (*TPM) Info

func (t *TPM) Info() (*TPMInfo, error)

Info returns information about the TPM.

func (*TPM) MeasurementLog

func (t *TPM) MeasurementLog() ([]byte, error)

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

func (t *TPM) ReadNVPublic(index uint32) ([]byte, error)

ReadNVPublic reads public data about an NVRAM index. Permissions and what so not.

func (*TPM) ReadPCR

func (t *TPM) ReadPCR(pcrIndex uint32) ([]byte, error)

ReadPCR reads a single PCR value by defining the pcrIndex

func (*TPM) ReadPCRs

func (t *TPM) ReadPCRs(alg HashAlg) ([]PCR, error)

ReadPCRs reads all PCRs into the PCR structure

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 Uint16

type Uint16 uint16

Uint16 is a wrapper around uint16.

func (*Uint16) Size

func (u *Uint16) Size() int64

Size of uint16 is 2.

func (*Uint16) String

func (u *Uint16) String() string

String formats a uint16 in hex.

type Uint32

type Uint32 uint32

Uint32 is a wrapper around uint32.

func (*Uint32) Size

func (u *Uint32) Size() int64

Size of uint32 is 4.

func (*Uint32) String

func (u *Uint32) String() string

String formats a uint32 in hex.

type Uint64

type Uint64 uint64

Uint64 is a wrapper around uint64.

func (*Uint64) Size

func (u *Uint64) Size() int64

Size of uint64 is 8.

func (*Uint64) String

func (u *Uint64) String() string

String formats a uint64 in hex.

type Uint8

type Uint8 uint8

Uint8 is a wrapper around uint8.

func (*Uint8) Size

func (u *Uint8) Size() int64

Size of uint8 is 1.

func (*Uint8) String

func (u *Uint8) String() string

String formats a uint8 in hex.

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

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL