Expand description
IVRS (I/O Virtualization Reporting Structure) : AMD IOMMU ACPI table.
Defines the structures and parser for the ACPI IVRS table (signature IVRS),
which describes AMD IOMMU hardware units, their capabilities, and which PCI
devices they serve.
Reference: AMD I/O Virtualization Technology (IOMMU) Specification, revisions 3.00+ (sections 3.1–3.4). https://www.amd.com/content/dam/amd/en/documents/processor-tech-docs/specifications/48882_IOMMU.pdf
§Table layout
┌──────────────────────────────┐
│ SDT header ("IVRS") │ 48 B (standard ACPI)
├──────────────────────────────┤
│ IVInfo (u16) │
│ Reserved (u8) │
│ Flags (u8) │
│ Total length (u16) │
│ Device entry count (u16) │
│ Entry offset (u16) │
├──────────────────────────────┤
│ IVHD block (Type 0x10/11) │ variable
│ ├── header │
│ ├── device entries ... │
│ └── padding │
├──────────────────────────────┤
│ IVMD block (Type 0x20/22) │ variable
└──────────────────────────────┘Structs§
- Ivhd
Block - Parsed IVHD (I/O Virtualization Hardware Definition) block.
- Ivhd
DevEntry Iter - Iterator over device entries inside an IVHD block.
- Ivhd
Device Entry - A device entry inside an IVHD block.
- Ivhd
Flags - IVHD block flags.
- Ivmd
Block - IVMD (I/O Virtualisation Memory Definition) block.
- Ivrs
- Top-level IVRS table wrapper.
- Ivrs
Entry Iter - Iterator over IVHD/IVMD blocks and device entries therein.
- Ivrs
Header - Fixed header of the IVRS ACPI table (AMD IOMMU).
- RawDev
Entry 🔒Hdr - Raw header common to all device entry types.
- RawIvhd
Common 🔒 - Common prefix of all IVHD headers (20 bytes, shared by type 0x10 and 0x11).
- RawIvhd
Tail11 🔒 - Raw IVHD type 0x11 (extended) appends an MMIO base after the common prefix.
- RawIvmd 🔒
- Raw IVMD block header : 24 bytes.
Enums§
- Ivhd
Type - IVHD (I/O Virtualization Hardware Definition) block type.
- Ivrs
Block - A block inside the IVRS table: either an IVHD (IOMMU definition) or an IVMD (reserved memory definition).
Constants§
- IVRS_
SIGNATURE - ACPI signature for the IVRS table.
Functions§
- decode_
dev_ 🔒entry_ type - Decode a device entry type to determine size, range-ness, and ext data.