VirtualBox

Changeset 87732 in vbox for trunk


Ignore:
Timestamp:
Feb 12, 2021 1:39:11 PM (4 years ago)
Author:
vboxsync
Message:

AMD IOMMU: bugref:9654 Add struct for PREFETCH_IOMMU_PAGES command.

File:
1 edited

Legend:

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

    r87666 r87732  
    882882} CMD_INV_INTR_TABLE_T;
    883883AssertCompileSize(CMD_INV_INTR_TABLE_T, 16);
     884
     885/**
     886 * Command: PREFETCH_IOMMU_PAGES.
     887 * In accordance with the AMD spec.
     888 */
     889typedef union
     890{
     891    struct
     892    {
     893        uint16_t    u16DevId;               /**< Bits 15:0   - Device ID. */
     894        uint8_t     u8Rsvd0;                /**< Bits 23:16  - Reserved. */
     895        uint8_t     u8PrefCount;            /**< Bits 31:24  - PFCount: Number of translations to prefetch. */
     896        uint32_t    u20Pasid : 20;          /**< Bits 51:32  - PASID: Process Address-Space ID. */
     897        uint32_t    u8Rsvd1 : 8;            /**< Bits 59:52  - Reserved. */
     898        uint32_t    u4OpCode : 4;           /**< Bits 63:60  - Op Code (Command). */
     899        uint32_t    u1Size : 1;             /**< Bit  64     - S: Size of the prefetched pages. */
     900        uint32_t    u1Rsvd0 : 1;            /**< Bit  65     - Reserved. */
     901        uint32_t    u1GuestOrNested : 1;    /**< Bit  66     - GN: Guest (GPA) or Nested (GVA). */
     902        uint32_t    u1Rsvd1 : 1;            /**< Bit  67     - Reserved. */
     903        uint32_t    u1Invalidate : 1;       /**< Bit  68     - Inval: Invalidate prior to prefetch. */
     904        uint32_t    u7Rsvd0 : 7;            /**< Bits 75:69  - Reserved */
     905        uint32_t    u20AddrLo : 7;          /**< Bits 95:76  - Address (Lo). */
     906        uint32_t    u32AddrHi;              /**< Bits 127:96 - Address (Hi). */
     907    } u;
     908    /** The 64-bit unsigned integer view. */
     909    uint64_t    au64[2];
     910} CMD_PREF_IOMMU_PAGES_T;
     911AssertCompileSize(CMD_PREF_IOMMU_PAGES_T, 16);
     912/** Pointer to a invalidate iommu pages command. */
     913typedef CMD_PREF_IOMMU_PAGES_T *PCMD_PREF_IOMMU_PAGES_T;
     914/** Pointer to a const invalidate iommu pages command. */
     915typedef CMD_PREF_IOMMU_PAGES_T const *PCCMD_PREF_IOMMU_PAGES_T;
     916#define IOMMU_CMD_PREF_IOMMU_PAGES_QWORD_0_VALID_MASK       UINT64_C(0x780fffffff00ffff)
     917#define IOMMU_CMD_PREF_IOMMU_PAGES_QWORD_1_VALID_MASK       UINT64_C(0xfffffffffffff015)
     918
    884919
    885920/**
Note: See TracChangeset for help on using the changeset viewer.

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