VirtualBox

Changeset 86131 in vbox for trunk/include/VBox


Ignore:
Timestamp:
Sep 16, 2020 6:10:58 AM (5 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
140372
Message:

AMD IOMMU: bugref:9654 Fix IRTE format. We now remap interrupts successfully.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/include/VBox/iommu-amd.h

    r86119 r86131  
    561561#define IOMMU_DTE_QWORD_3_VALID_MASK            UINT64_C(0xffc0000000000000)
    562562
     563/** The number of bits to shift the DTE offset to get the DTE. */
     564#define IOMMU_DTE_SIZE_SHIFT                    5
     565AssertCompile(1 << IOMMU_DTE_SIZE_SHIFT == sizeof(DTE_T));
     566
    563567/** Mask of the interrupt table root pointer. */
    564568#define IOMMU_DTE_IRTE_ROOT_PTR_MASK            UINT64_C(0x000fffffffffffc0)
     
    659663
    660664/**
    661  * Interrupt Remapping Table Entry (IRTE).
     665 * Interrupt Remapping Table Entry (IRTE) - Basic Format.
    662666 * In accordance with the AMD spec.
    663667 */
     
    667671    {
    668672        uint32_t    u1RemapEnable : 1;      /**< Bit  0     - RemapEn: Remap Enable. */
    669         uint32_t    u1SuppressPf : 1;       /**< Bit  1     - SupIOPF: Supress I/O Page Fault. */
    670         uint32_t    u3IntrType : 1;         /**< Bits 4:2   - IntType: Interrupt Type. */
     673        uint32_t    u1SuppressIoPf : 1;     /**< Bit  1     - SupIOPF: Supress I/O Page Fault. */
     674        uint32_t    u3IntrType : 3;         /**< Bits 4:2   - IntType: Interrupt Type. */
    671675        uint32_t    u1ReqEoi : 1;           /**< Bit  5     - RqEoi: Request EOI. */
    672676        uint32_t    u1DestMode : 1;         /**< Bit  6     - DM: Destination Mode. */
     
    680684} IRTE_T;
    681685AssertCompileSize(IRTE_T, 4);
    682 /** The number of bits to shift the IRTE offset to get the IRTE. */
    683 #define IOMMU_IRTE_SIZE_SHIFT   (2)
    684686/** Pointer to an IRTE_T struct. */
    685687typedef IRTE_T *PIRTE_T;
    686688/** Pointer to a const IRTE_T struct. */
    687689typedef IRTE_T const *PCIRTE_T;
     690
     691/** The number of bits to shift the IRTE offset to get the IRTE. */
     692#define IOMMU_IRTE_SIZE_SHIFT               2
     693AssertCompile(1 << IOMMU_IRTE_SIZE_SHIFT == sizeof(IRTE_T));
    688694
    689695/** The IRTE offset corresponds directly to bits 10:0 of the originating MSI
Note: See TracChangeset for help on using the changeset viewer.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette