VirtualBox

Changeset 88893 in vbox for trunk/include


Ignore:
Timestamp:
May 6, 2021 5:04:35 AM (4 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
144228
Message:

Intel IOMMU: bugref:9967 Interrupt remapping, work-in-progress. Also include reserved bits in the destination ID when xAPIC mode is used when validating reserved bits.

File:
1 edited

Legend:

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

    r88875 r88893  
    653653#define VTD_BF_0_IRTE_DST_SHIFT                                 32
    654654#define VTD_BF_0_IRTE_DST_MASK                                  UINT64_C(0xffffffff00000000)
     655/** R: Reserved (bits 39:32) when EIME=0. */
     656#define VTD_BF_0_IRTE_RSVD_39_32_SHIFT                          32
     657#define VTD_BF_0_IRTE_RSVD_39_32_MASK                           UINT64_C(0x000000ff00000000)
     658/** DST_XAPIC: Destination Id when EIME=0. */
     659#define VTD_BF_0_IRTE_DST_XAPIC_SHIFT                           40
     660#define VTD_BF_0_IRTE_DST_XAPIC_MASK                            UINT64_C(0x0000ff0000000000)
     661/** R: Reserved (bits 63:48) when EIME=0. */
     662#define VTD_BF_0_IRTE_RSVD_63_48_SHIFT                          48
     663#define VTD_BF_0_IRTE_RSVD_63_48_MASK                           UINT64_C(0xffff000000000000)
    655664RT_BF_ASSERT_COMPILE_CHECKS(VTD_BF_0_IRTE_, UINT64_C(0), UINT64_MAX,
    656665                            (P, FPD, DM, RH, TM, DLM, AVAIL, RSVD_14_12, IM, V, RSVD_31_24, DST));
     666RT_BF_ASSERT_COMPILE_CHECKS(VTD_BF_0_IRTE_, UINT64_C(0), UINT64_MAX,
     667                            (P, FPD, DM, RH, TM, DLM, AVAIL, RSVD_14_12, IM, V, RSVD_31_24, RSVD_39_32, DST_XAPIC, RSVD_63_48));
    657668
    658669/** SID: Source Identifier. */
     
    671682                            (SID, SQ, SVT, RSVD_63_20));
    672683
    673 /** IRTE: Qword 0 valid mask. */
    674 #define VTD_IRTE_0_VALID_MASK                                   (  VTD_BF_0_IRTE_P_MASK  | VTD_BF_0_IRTE_FPD_MASK \
     684/** IRTE: Qword 0 valid mask when EIME=1. */
     685#define VTD_IRTE_0_X2APIC_VALID_MASK                            (  VTD_BF_0_IRTE_P_MASK  | VTD_BF_0_IRTE_FPD_MASK \
    675686                                                                 | VTD_BF_0_IRTE_DM_MASK | VTD_BF_0_IRTE_RH_MASK \
    676687                                                                 | VTD_BF_0_IRTE_TM_MASK | VTD_BF_0_IRTE_DLM_MASK \
    677688                                                                 | VTD_BF_0_IRTE_AVAIL_MASK | VTD_BF_0_IRTE_IM_MASK \
    678689                                                                 | VTD_BF_0_IRTE_V_MASK | VTD_BF_0_IRTE_DST_MASK)
     690/** IRTE: Qword 0 valid mask when EIME=0. */
     691#define VTD_IRTE_0_XAPIC_VALID_MASK                             (  VTD_BF_0_IRTE_P_MASK  | VTD_BF_0_IRTE_FPD_MASK \
     692                                                                 | VTD_BF_0_IRTE_DM_MASK | VTD_BF_0_IRTE_RH_MASK \
     693                                                                 | VTD_BF_0_IRTE_TM_MASK | VTD_BF_0_IRTE_DLM_MASK \
     694                                                                 | VTD_BF_0_IRTE_AVAIL_MASK | VTD_BF_0_IRTE_IM_MASK \
     695                                                                 | VTD_BF_0_IRTE_V_MASK | VTD_BF_0_IRTE_DST_XAPIC_MASK)
    679696/** IRTE: Qword 1 valid mask. */
    680697#define VTD_IRTE_1_VALID_MASK                                   (  VTD_BF_1_IRTE_SID_MASK | VTD_BF_1_IRTE_SQ_MASK \
     
    700717/** IRTE SVT: Reserved. */
    701718#define VTD_IRTE_SVT_VALIDATE_RSVD                              3
    702 
    703 /** IRTE: Gets the x2APIC destination ID given qword 0 of an IRTE. */
    704 #define VTD_IRTE_0_GET_X2APIC_DEST_ID(a)                        RT_BF_GET(a, VTD_BF_0_IRTE_DST)
    705 /** IRTE: Gets the xAPIC destination ID given qword 0 of an IRTE. */
    706 #define VTD_IRTE_0_GET_XAPIC_DEST_ID(a)                         (((a) >> 40) & 0xff)
    707719/** @} */
    708720
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