VirtualBox

Ignore:
Timestamp:
Apr 14, 2023 3:17:44 PM (2 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
156854
Message:

Devices/EFI/FirmwareNew: Update to edk2-stable202302 and make it build, bugref:4643

Location:
trunk/src/VBox/Devices/EFI/FirmwareNew
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Devices/EFI/FirmwareNew

  • trunk/src/VBox/Devices/EFI/FirmwareNew/MdePkg/Include/IndustryStandard/Cxl11.h

    r89983 r99404  
    1919// (subject to change as per CXL assigned Vendor ID)
    2020//
    21 #define INTEL_CXL_DVSEC_VENDOR_ID                                       0x8086
     21#define INTEL_CXL_DVSEC_VENDOR_ID  0x8086
    2222
    2323//
     
    2525// Compute Express Link Specification Revision: 1.1 - Chapter 7.1.1
    2626//
    27 #define CXL_DEV_DEV                                                     0
    28 #define CXL_DEV_FUNC                                                    0
     27#define CXL_DEV_DEV   0
     28#define CXL_DEV_FUNC  0
    2929
    3030//
     
    7272typedef union {
    7373  struct {
    74     UINT16 CacheCapable                                         : 1; // bit 0
    75     UINT16 IoCapable                                            : 1; // bit 1
    76     UINT16 MemCapable                                           : 1; // bit 2
    77     UINT16 MemHwInitMode                                        : 1; // bit 3
    78     UINT16 HdmCount                                             : 2; // bit 4..5
    79     UINT16 Reserved1                                            : 8; // bit 6..13
    80     UINT16 ViralCapable                                         : 1; // bit 14
    81     UINT16 Reserved2                                            : 1; // bit 15
    82   } Bits;
    83   UINT16                                                        Uint16;
     74    UINT16    CacheCapable  : 1;                                    // bit 0
     75    UINT16    IoCapable     : 1;                                    // bit 1
     76    UINT16    MemCapable    : 1;                                    // bit 2
     77    UINT16    MemHwInitMode : 1;                                    // bit 3
     78    UINT16    HdmCount      : 2;                                    // bit 4..5
     79    UINT16    Reserved1     : 8;                                    // bit 6..13
     80    UINT16    ViralCapable  : 1;                                    // bit 14
     81    UINT16    Reserved2     : 1;                                    // bit 15
     82  } Bits;
     83  UINT16    Uint16;
    8484} CXL_DVSEC_FLEX_BUS_DEVICE_CAPABILITY;
    8585
    8686typedef union {
    8787  struct {
    88     UINT16 CacheEnable                                          : 1; // bit 0
    89     UINT16 IoEnable                                             : 1; // bit 1
    90     UINT16 MemEnable                                            : 1; // bit 2
    91     UINT16 CacheSfCoverage                                      : 5; // bit 3..7
    92     UINT16 CacheSfGranularity                                   : 3; // bit 8..10
    93     UINT16 CacheCleanEviction                                   : 1; // bit 11
    94     UINT16 Reserved1                                            : 2; // bit 12..13
    95     UINT16 ViralEnable                                          : 1; // bit 14
    96     UINT16 Reserved2                                            : 1; // bit 15
    97   } Bits;
    98   UINT16                                                        Uint16;
     88    UINT16    CacheEnable        : 1;                                // bit 0
     89    UINT16    IoEnable           : 1;                                // bit 1
     90    UINT16    MemEnable          : 1;                                // bit 2
     91    UINT16    CacheSfCoverage    : 5;                                // bit 3..7
     92    UINT16    CacheSfGranularity : 3;                                // bit 8..10
     93    UINT16    CacheCleanEviction : 1;                                // bit 11
     94    UINT16    Reserved1          : 2;                                // bit 12..13
     95    UINT16    ViralEnable        : 1;                                // bit 14
     96    UINT16    Reserved2          : 1;                                // bit 15
     97  } Bits;
     98  UINT16    Uint16;
    9999} CXL_DVSEC_FLEX_BUS_DEVICE_CONTROL;
    100100
    101101typedef union {
    102102  struct {
    103     UINT16 Reserved1                                            : 14; // bit 0..13
    104     UINT16 ViralStatus                                          : 1;  // bit 14
    105     UINT16 Reserved2                                            : 1;  // bit 15
    106   } Bits;
    107   UINT16                                                        Uint16;
     103    UINT16    Reserved1   : 14;                                      // bit 0..13
     104    UINT16    ViralStatus : 1;                                        // bit 14
     105    UINT16    Reserved2   : 1;                                        // bit 15
     106  } Bits;
     107  UINT16    Uint16;
    108108} CXL_DVSEC_FLEX_BUS_DEVICE_STATUS;
    109109
    110110typedef union {
    111111  struct {
    112     UINT16 Reserved1                                            : 1;  // bit 0
    113     UINT16 Reserved2                                            : 1;  // bit 1
    114     UINT16 Reserved3                                            : 1;  // bit 2
    115     UINT16 Reserved4                                            : 13; // bit 3..15
    116   } Bits;
    117   UINT16                                                        Uint16;
     112    UINT16    Reserved1 : 1;                                          // bit 0
     113    UINT16    Reserved2 : 1;                                          // bit 1
     114    UINT16    Reserved3 : 1;                                          // bit 2
     115    UINT16    Reserved4 : 13;                                        // bit 3..15
     116  } Bits;
     117  UINT16    Uint16;
    118118} CXL_1_1_DVSEC_FLEX_BUS_DEVICE_CONTROL2;
    119119
    120120typedef union {
    121121  struct {
    122     UINT16 Reserved1                                            : 1;  // bit 0
    123     UINT16 Reserved2                                            : 1;  // bit 1
    124     UINT16 Reserved3                                            : 14; // bit 2..15
    125   } Bits;
    126   UINT16                                                        Uint16;
     122    UINT16    Reserved1 : 1;                                          // bit 0
     123    UINT16    Reserved2 : 1;                                          // bit 1
     124    UINT16    Reserved3 : 14;                                        // bit 2..15
     125  } Bits;
     126  UINT16    Uint16;
    127127} CXL_1_1_DVSEC_FLEX_BUS_DEVICE_STATUS2;
    128128
    129129typedef union {
    130130  struct {
    131     UINT16 ConfigLock                                           : 1;  // bit 0
    132     UINT16 Reserved1                                            : 15; // bit 1..15
    133   } Bits;
    134   UINT16                                                        Uint16;
     131    UINT16    ConfigLock : 1;                                         // bit 0
     132    UINT16    Reserved1  : 15;                                        // bit 1..15
     133  } Bits;
     134  UINT16    Uint16;
    135135} CXL_DVSEC_FLEX_BUS_DEVICE_LOCK;
    136136
    137137typedef union {
    138138  struct {
    139     UINT32 MemorySizeHigh                                       : 32; // bit 0..31
    140   } Bits;
    141   UINT32                                                        Uint32;
     139    UINT32    MemorySizeHigh : 32;                                    // bit 0..31
     140  } Bits;
     141  UINT32    Uint32;
    142142} CXL_DVSEC_FLEX_BUS_DEVICE_RANGE1_SIZE_HIGH;
    143143
    144144typedef union {
    145145  struct {
    146     UINT32 MemoryInfoValid                                      : 1;  // bit 0
    147     UINT32 MemoryActive                                         : 1;  // bit 1
    148     UINT32 MediaType                                            : 3;  // bit 2..4
    149     UINT32 MemoryClass                                          : 3;  // bit 5..7
    150     UINT32 DesiredInterleave                                    : 3;  // bit 8..10
    151     UINT32 Reserved                                             : 17; // bit 11..27
    152     UINT32 MemorySizeLow                                        : 4;  // bit 28..31
    153   } Bits;
    154   UINT32                                                        Uint32;
     146    UINT32    MemoryInfoValid   : 1;                                  // bit 0
     147    UINT32    MemoryActive      : 1;                                  // bit 1
     148    UINT32    MediaType         : 3;                                  // bit 2..4
     149    UINT32    MemoryClass       : 3;                                  // bit 5..7
     150    UINT32    DesiredInterleave : 3;                                  // bit 8..10
     151    UINT32    Reserved          : 17;                                // bit 11..27
     152    UINT32    MemorySizeLow     : 4;                                  // bit 28..31
     153  } Bits;
     154  UINT32    Uint32;
    155155} CXL_DVSEC_FLEX_BUS_DEVICE_RANGE1_SIZE_LOW;
    156156
    157157typedef union {
    158158  struct {
    159     UINT32 MemoryBaseHigh                                       : 32; // bit 0..31
    160   } Bits;
    161   UINT32                                                        Uint32;
     159    UINT32    MemoryBaseHigh : 32;                                    // bit 0..31
     160  } Bits;
     161  UINT32    Uint32;
    162162} CXL_DVSEC_FLEX_BUS_DEVICE_RANGE1_BASE_HIGH;
    163163
    164164typedef union {
    165165  struct {
    166     UINT32 Reserved                                             : 28; // bit 0..27
    167     UINT32 MemoryBaseLow                                        : 4;  // bit 28..31
    168   } Bits;
    169   UINT32                                                        Uint32;
     166    UINT32    Reserved      : 28;                                    // bit 0..27
     167    UINT32    MemoryBaseLow : 4;                                      // bit 28..31
     168  } Bits;
     169  UINT32    Uint32;
    170170} CXL_DVSEC_FLEX_BUS_DEVICE_RANGE1_BASE_LOW;
    171171
    172 
    173 typedef union {
    174   struct {
    175     UINT32 MemorySizeHigh                                       : 32; // bit 0..31
    176   } Bits;
    177   UINT32                                                        Uint32;
     172typedef union {
     173  struct {
     174    UINT32    MemorySizeHigh : 32;                                    // bit 0..31
     175  } Bits;
     176  UINT32    Uint32;
    178177} CXL_DVSEC_FLEX_BUS_DEVICE_RANGE2_SIZE_HIGH;
    179178
    180179typedef union {
    181180  struct {
    182     UINT32 MemoryInfoValid                                      : 1;  // bit 0
    183     UINT32 MemoryActive                                         : 1;  // bit 1
    184     UINT32 MediaType                                            : 3;  // bit 2..4
    185     UINT32 MemoryClass                                          : 3;  // bit 5..7
    186     UINT32 DesiredInterleave                                    : 3;  // bit 8..10
    187     UINT32 Reserved                                             : 17; // bit 11..27
    188     UINT32 MemorySizeLow                                        : 4;  // bit 28..31
    189   } Bits;
    190   UINT32                                                        Uint32;
     181    UINT32    MemoryInfoValid   : 1;                                  // bit 0
     182    UINT32    MemoryActive      : 1;                                  // bit 1
     183    UINT32    MediaType         : 3;                                  // bit 2..4
     184    UINT32    MemoryClass       : 3;                                  // bit 5..7
     185    UINT32    DesiredInterleave : 3;                                  // bit 8..10
     186    UINT32    Reserved          : 17;                                // bit 11..27
     187    UINT32    MemorySizeLow     : 4;                                  // bit 28..31
     188  } Bits;
     189  UINT32    Uint32;
    191190} CXL_DVSEC_FLEX_BUS_DEVICE_RANGE2_SIZE_LOW;
    192191
    193192typedef union {
    194193  struct {
    195     UINT32 MemoryBaseHigh                                       : 32; // bit 0..31
    196   } Bits;
    197   UINT32                                                        Uint32;
     194    UINT32    MemoryBaseHigh : 32;                                    // bit 0..31
     195  } Bits;
     196  UINT32    Uint32;
    198197} CXL_DVSEC_FLEX_BUS_DEVICE_RANGE2_BASE_HIGH;
    199198
    200199typedef union {
    201200  struct {
    202     UINT32 Reserved                                             : 28; // bit 0..27
    203     UINT32 MemoryBaseLow                                        : 4;  // bit 28..31
    204   } Bits;
    205   UINT32                                                        Uint32;
     201    UINT32    Reserved      : 28;                                    // bit 0..27
     202    UINT32    MemoryBaseLow : 4;                                      // bit 28..31
     203  } Bits;
     204  UINT32    Uint32;
    206205} CXL_DVSEC_FLEX_BUS_DEVICE_RANGE2_BASE_LOW;
    207206
     
    210209// Compute Express Link Specification Revision: 1.1 - Chapter 7.1.1, Table 58
    211210//
    212 #define FLEX_BUS_DEVICE_DVSEC_ID                                0
     211#define FLEX_BUS_DEVICE_DVSEC_ID  0
    213212
    214213//
     
    217216//
    218217typedef struct {
    219   PCI_EXPRESS_EXTENDED_CAPABILITIES_HEADER                      Header;                           // offset 0
    220   PCI_EXPRESS_DESIGNATED_VENDOR_SPECIFIC_HEADER_1               DesignatedVendorSpecificHeader1;  // offset 4
    221   PCI_EXPRESS_DESIGNATED_VENDOR_SPECIFIC_HEADER_2               DesignatedVendorSpecificHeader2;  // offset 8
    222   CXL_DVSEC_FLEX_BUS_DEVICE_CAPABILITY                          DeviceCapability;                 // offset 10
    223   CXL_DVSEC_FLEX_BUS_DEVICE_CONTROL                             DeviceControl;                    // offset 12
    224   CXL_DVSEC_FLEX_BUS_DEVICE_STATUS                              DeviceStatus;                     // offset 14
    225   CXL_1_1_DVSEC_FLEX_BUS_DEVICE_CONTROL2                        DeviceControl2;                   // offset 16
    226   CXL_1_1_DVSEC_FLEX_BUS_DEVICE_STATUS2                         DeviceStatus2;                    // offset 18
    227   CXL_DVSEC_FLEX_BUS_DEVICE_LOCK                                DeviceLock;                       // offset 20
    228   UINT16                                                        Reserved;                         // offset 22
    229   CXL_DVSEC_FLEX_BUS_DEVICE_RANGE1_SIZE_HIGH                    DeviceRange1SizeHigh;             // offset 24
    230   CXL_DVSEC_FLEX_BUS_DEVICE_RANGE1_SIZE_LOW                     DeviceRange1SizeLow;              // offset 28
    231   CXL_DVSEC_FLEX_BUS_DEVICE_RANGE1_BASE_HIGH                    DeviceRange1BaseHigh;             // offset 32
    232   CXL_DVSEC_FLEX_BUS_DEVICE_RANGE1_BASE_LOW                     DeviceRange1BaseLow;              // offset 36
    233   CXL_DVSEC_FLEX_BUS_DEVICE_RANGE2_SIZE_HIGH                    DeviceRange2SizeHigh;             // offset 40
    234   CXL_DVSEC_FLEX_BUS_DEVICE_RANGE2_SIZE_LOW                     DeviceRange2SizeLow;              // offset 44
    235   CXL_DVSEC_FLEX_BUS_DEVICE_RANGE2_BASE_HIGH                    DeviceRange2BaseHigh;             // offset 48
    236   CXL_DVSEC_FLEX_BUS_DEVICE_RANGE2_BASE_LOW                     DeviceRange2BaseLow;              // offset 52
     218  PCI_EXPRESS_EXTENDED_CAPABILITIES_HEADER           Header;                                      // offset 0
     219  PCI_EXPRESS_DESIGNATED_VENDOR_SPECIFIC_HEADER_1    DesignatedVendorSpecificHeader1;             // offset 4
     220  PCI_EXPRESS_DESIGNATED_VENDOR_SPECIFIC_HEADER_2    DesignatedVendorSpecificHeader2;             // offset 8
     221  CXL_DVSEC_FLEX_BUS_DEVICE_CAPABILITY               DeviceCapability;                            // offset 10
     222  CXL_DVSEC_FLEX_BUS_DEVICE_CONTROL                  DeviceControl;                               // offset 12
     223  CXL_DVSEC_FLEX_BUS_DEVICE_STATUS                   DeviceStatus;                                // offset 14
     224  CXL_1_1_DVSEC_FLEX_BUS_DEVICE_CONTROL2             DeviceControl2;                              // offset 16
     225  CXL_1_1_DVSEC_FLEX_BUS_DEVICE_STATUS2              DeviceStatus2;                               // offset 18
     226  CXL_DVSEC_FLEX_BUS_DEVICE_LOCK                     DeviceLock;                                  // offset 20
     227  UINT16                                             Reserved;                                    // offset 22
     228  CXL_DVSEC_FLEX_BUS_DEVICE_RANGE1_SIZE_HIGH         DeviceRange1SizeHigh;                        // offset 24
     229  CXL_DVSEC_FLEX_BUS_DEVICE_RANGE1_SIZE_LOW          DeviceRange1SizeLow;                         // offset 28
     230  CXL_DVSEC_FLEX_BUS_DEVICE_RANGE1_BASE_HIGH         DeviceRange1BaseHigh;                        // offset 32
     231  CXL_DVSEC_FLEX_BUS_DEVICE_RANGE1_BASE_LOW          DeviceRange1BaseLow;                         // offset 36
     232  CXL_DVSEC_FLEX_BUS_DEVICE_RANGE2_SIZE_HIGH         DeviceRange2SizeHigh;                        // offset 40
     233  CXL_DVSEC_FLEX_BUS_DEVICE_RANGE2_SIZE_LOW          DeviceRange2SizeLow;                         // offset 44
     234  CXL_DVSEC_FLEX_BUS_DEVICE_RANGE2_BASE_HIGH         DeviceRange2BaseHigh;                        // offset 48
     235  CXL_DVSEC_FLEX_BUS_DEVICE_RANGE2_BASE_LOW          DeviceRange2BaseLow;                         // offset 52
    237236} CXL_1_1_DVSEC_FLEX_BUS_DEVICE;
    238237
    239 CXL_11_OFFSET_ASSERT (CXL_1_1_DVSEC_FLEX_BUS_DEVICE, Header                         , 0x00);
     238CXL_11_OFFSET_ASSERT (CXL_1_1_DVSEC_FLEX_BUS_DEVICE, Header, 0x00);
    240239CXL_11_OFFSET_ASSERT (CXL_1_1_DVSEC_FLEX_BUS_DEVICE, DesignatedVendorSpecificHeader1, 0x04);
    241240CXL_11_OFFSET_ASSERT (CXL_1_1_DVSEC_FLEX_BUS_DEVICE, DesignatedVendorSpecificHeader2, 0x08);
    242 CXL_11_OFFSET_ASSERT (CXL_1_1_DVSEC_FLEX_BUS_DEVICE, DeviceCapability               , 0x0A);
    243 CXL_11_OFFSET_ASSERT (CXL_1_1_DVSEC_FLEX_BUS_DEVICE, DeviceControl                  , 0x0C);
    244 CXL_11_OFFSET_ASSERT (CXL_1_1_DVSEC_FLEX_BUS_DEVICE, DeviceStatus                   , 0x0E);
    245 CXL_11_OFFSET_ASSERT (CXL_1_1_DVSEC_FLEX_BUS_DEVICE, DeviceControl2                 , 0x10);
    246 CXL_11_OFFSET_ASSERT (CXL_1_1_DVSEC_FLEX_BUS_DEVICE, DeviceStatus2                  , 0x12);
    247 CXL_11_OFFSET_ASSERT (CXL_1_1_DVSEC_FLEX_BUS_DEVICE, DeviceLock                     , 0x14);
    248 CXL_11_OFFSET_ASSERT (CXL_1_1_DVSEC_FLEX_BUS_DEVICE, DeviceRange1SizeHigh           , 0x18);
    249 CXL_11_OFFSET_ASSERT (CXL_1_1_DVSEC_FLEX_BUS_DEVICE, DeviceRange1SizeLow            , 0x1C);
    250 CXL_11_OFFSET_ASSERT (CXL_1_1_DVSEC_FLEX_BUS_DEVICE, DeviceRange1BaseHigh           , 0x20);
    251 CXL_11_OFFSET_ASSERT (CXL_1_1_DVSEC_FLEX_BUS_DEVICE, DeviceRange1BaseLow            , 0x24);
    252 CXL_11_OFFSET_ASSERT (CXL_1_1_DVSEC_FLEX_BUS_DEVICE, DeviceRange2SizeHigh           , 0x28);
    253 CXL_11_OFFSET_ASSERT (CXL_1_1_DVSEC_FLEX_BUS_DEVICE, DeviceRange2SizeLow            , 0x2C);
    254 CXL_11_OFFSET_ASSERT (CXL_1_1_DVSEC_FLEX_BUS_DEVICE, DeviceRange2BaseHigh           , 0x30);
    255 CXL_11_OFFSET_ASSERT (CXL_1_1_DVSEC_FLEX_BUS_DEVICE, DeviceRange2BaseLow            , 0x34);
    256 CXL_11_SIZE_ASSERT   (CXL_1_1_DVSEC_FLEX_BUS_DEVICE                                 , 0x38);
     241CXL_11_OFFSET_ASSERT (CXL_1_1_DVSEC_FLEX_BUS_DEVICE, DeviceCapability, 0x0A);
     242CXL_11_OFFSET_ASSERT (CXL_1_1_DVSEC_FLEX_BUS_DEVICE, DeviceControl, 0x0C);
     243CXL_11_OFFSET_ASSERT (CXL_1_1_DVSEC_FLEX_BUS_DEVICE, DeviceStatus, 0x0E);
     244CXL_11_OFFSET_ASSERT (CXL_1_1_DVSEC_FLEX_BUS_DEVICE, DeviceControl2, 0x10);
     245CXL_11_OFFSET_ASSERT (CXL_1_1_DVSEC_FLEX_BUS_DEVICE, DeviceStatus2, 0x12);
     246CXL_11_OFFSET_ASSERT (CXL_1_1_DVSEC_FLEX_BUS_DEVICE, DeviceLock, 0x14);
     247CXL_11_OFFSET_ASSERT (CXL_1_1_DVSEC_FLEX_BUS_DEVICE, DeviceRange1SizeHigh, 0x18);
     248CXL_11_OFFSET_ASSERT (CXL_1_1_DVSEC_FLEX_BUS_DEVICE, DeviceRange1SizeLow, 0x1C);
     249CXL_11_OFFSET_ASSERT (CXL_1_1_DVSEC_FLEX_BUS_DEVICE, DeviceRange1BaseHigh, 0x20);
     250CXL_11_OFFSET_ASSERT (CXL_1_1_DVSEC_FLEX_BUS_DEVICE, DeviceRange1BaseLow, 0x24);
     251CXL_11_OFFSET_ASSERT (CXL_1_1_DVSEC_FLEX_BUS_DEVICE, DeviceRange2SizeHigh, 0x28);
     252CXL_11_OFFSET_ASSERT (CXL_1_1_DVSEC_FLEX_BUS_DEVICE, DeviceRange2SizeLow, 0x2C);
     253CXL_11_OFFSET_ASSERT (CXL_1_1_DVSEC_FLEX_BUS_DEVICE, DeviceRange2BaseHigh, 0x30);
     254CXL_11_OFFSET_ASSERT (CXL_1_1_DVSEC_FLEX_BUS_DEVICE, DeviceRange2BaseLow, 0x34);
     255CXL_11_SIZE_ASSERT (CXL_1_1_DVSEC_FLEX_BUS_DEVICE, 0x38);
    257256///@}
    258257
     
    262261typedef union {
    263262  struct {
    264     UINT16 CacheCapable                                         : 1;  // bit 0
    265     UINT16 IoCapable                                            : 1;  // bit 1
    266     UINT16 MemCapable                                           : 1;  // bit 2
    267     UINT16 Reserved                                             : 13; // bit 3..15
    268   } Bits;
    269   UINT16                                                        Uint16;
     263    UINT16    CacheCapable : 1;                                       // bit 0
     264    UINT16    IoCapable    : 1;                                       // bit 1
     265    UINT16    MemCapable   : 1;                                       // bit 2
     266    UINT16    Reserved     : 13;                                      // bit 3..15
     267  } Bits;
     268  UINT16    Uint16;
    270269} CXL_1_1_DVSEC_FLEX_BUS_PORT_CAPABILITY;
    271270
    272271typedef union {
    273272  struct {
    274     UINT16 CacheEnable                                          : 1; // bit 0
    275     UINT16 IoEnable                                             : 1; // bit 1
    276     UINT16 MemEnable                                            : 1; // bit 2
    277     UINT16 CxlSyncBypassEnable                                  : 1; // bit 3
    278     UINT16 DriftBufferEnable                                    : 1; // bit 4
    279     UINT16 Reserved                                             : 3; // bit 5..7
    280     UINT16 Retimer1Present                                      : 1; // bit 8
    281     UINT16 Retimer2Present                                      : 1; // bit 9
    282     UINT16 Reserved2                                            : 6; // bit 10..15
    283   } Bits;
    284   UINT16                                                        Uint16;
     273    UINT16    CacheEnable         : 1;                              // bit 0
     274    UINT16    IoEnable            : 1;                              // bit 1
     275    UINT16    MemEnable           : 1;                              // bit 2
     276    UINT16    CxlSyncBypassEnable : 1;                              // bit 3
     277    UINT16    DriftBufferEnable   : 1;                              // bit 4
     278    UINT16    Reserved            : 3;                              // bit 5..7
     279    UINT16    Retimer1Present     : 1;                              // bit 8
     280    UINT16    Retimer2Present     : 1;                              // bit 9
     281    UINT16    Reserved2           : 6;                              // bit 10..15
     282  } Bits;
     283  UINT16    Uint16;
    285284} CXL_1_1_DVSEC_FLEX_BUS_PORT_CONTROL;
    286285
    287286typedef union {
    288287  struct {
    289     UINT16 CacheEnable                                          : 1; // bit 0
    290     UINT16 IoEnable                                             : 1; // bit 1
    291     UINT16 MemEnable                                            : 1; // bit 2
    292     UINT16 CxlSyncBypassEnable                                  : 1; // bit 3
    293     UINT16 DriftBufferEnable                                    : 1; // bit 4
    294     UINT16 Reserved                                             : 3; // bit 5..7
    295     UINT16 CxlCorrectableProtocolIdFramingError                 : 1; // bit 8
    296     UINT16 CxlUncorrectableProtocolIdFramingError               : 1; // bit 9
    297     UINT16 CxlUnexpectedProtocolIdDropped                       : 1; // bit 10
    298     UINT16 Reserved2                                            : 5; // bit 11..15
    299   } Bits;
    300   UINT16                                                        Uint16;
     288    UINT16    CacheEnable                            : 1;            // bit 0
     289    UINT16    IoEnable                               : 1;            // bit 1
     290    UINT16    MemEnable                              : 1;            // bit 2
     291    UINT16    CxlSyncBypassEnable                    : 1;            // bit 3
     292    UINT16    DriftBufferEnable                      : 1;            // bit 4
     293    UINT16    Reserved                               : 3;            // bit 5..7
     294    UINT16    CxlCorrectableProtocolIdFramingError   : 1;            // bit 8
     295    UINT16    CxlUncorrectableProtocolIdFramingError : 1;            // bit 9
     296    UINT16    CxlUnexpectedProtocolIdDropped         : 1;            // bit 10
     297    UINT16    Reserved2                              : 5;            // bit 11..15
     298  } Bits;
     299  UINT16    Uint16;
    301300} CXL_1_1_DVSEC_FLEX_BUS_PORT_STATUS;
    302301
     
    305304// Compute Express Link Specification Revision: 1.1 - Chapter 7.2.1.3, Table 62
    306305//
    307 #define FLEX_BUS_PORT_DVSEC_ID                                  7
     306#define FLEX_BUS_PORT_DVSEC_ID  7
    308307
    309308//
     
    312311//
    313312typedef struct {
    314   PCI_EXPRESS_EXTENDED_CAPABILITIES_HEADER                      Header;                           // offset 0
    315   PCI_EXPRESS_DESIGNATED_VENDOR_SPECIFIC_HEADER_1               DesignatedVendorSpecificHeader1;  // offset 4
    316   PCI_EXPRESS_DESIGNATED_VENDOR_SPECIFIC_HEADER_2               DesignatedVendorSpecificHeader2;  // offset 8
    317   CXL_1_1_DVSEC_FLEX_BUS_PORT_CAPABILITY                        PortCapability;                   // offset 10
    318   CXL_1_1_DVSEC_FLEX_BUS_PORT_CONTROL                           PortControl;                      // offset 12
    319   CXL_1_1_DVSEC_FLEX_BUS_PORT_STATUS                            PortStatus;                       // offset 14
     313  PCI_EXPRESS_EXTENDED_CAPABILITIES_HEADER           Header;                                      // offset 0
     314  PCI_EXPRESS_DESIGNATED_VENDOR_SPECIFIC_HEADER_1    DesignatedVendorSpecificHeader1;             // offset 4
     315  PCI_EXPRESS_DESIGNATED_VENDOR_SPECIFIC_HEADER_2    DesignatedVendorSpecificHeader2;             // offset 8
     316  CXL_1_1_DVSEC_FLEX_BUS_PORT_CAPABILITY             PortCapability;                              // offset 10
     317  CXL_1_1_DVSEC_FLEX_BUS_PORT_CONTROL                PortControl;                                 // offset 12
     318  CXL_1_1_DVSEC_FLEX_BUS_PORT_STATUS                 PortStatus;                                  // offset 14
    320319} CXL_1_1_DVSEC_FLEX_BUS_PORT;
    321320
    322 CXL_11_OFFSET_ASSERT (CXL_1_1_DVSEC_FLEX_BUS_PORT, Header                         , 0x00);
     321CXL_11_OFFSET_ASSERT (CXL_1_1_DVSEC_FLEX_BUS_PORT, Header, 0x00);
    323322CXL_11_OFFSET_ASSERT (CXL_1_1_DVSEC_FLEX_BUS_PORT, DesignatedVendorSpecificHeader1, 0x04);
    324323CXL_11_OFFSET_ASSERT (CXL_1_1_DVSEC_FLEX_BUS_PORT, DesignatedVendorSpecificHeader2, 0x08);
    325 CXL_11_OFFSET_ASSERT (CXL_1_1_DVSEC_FLEX_BUS_PORT, PortCapability                 , 0x0A);
    326 CXL_11_OFFSET_ASSERT (CXL_1_1_DVSEC_FLEX_BUS_PORT, PortControl                    , 0x0C);
    327 CXL_11_OFFSET_ASSERT (CXL_1_1_DVSEC_FLEX_BUS_PORT, PortStatus                     , 0x0E);
    328 CXL_11_SIZE_ASSERT   (CXL_1_1_DVSEC_FLEX_BUS_PORT                                 , 0x10);
     324CXL_11_OFFSET_ASSERT (CXL_1_1_DVSEC_FLEX_BUS_PORT, PortCapability, 0x0A);
     325CXL_11_OFFSET_ASSERT (CXL_1_1_DVSEC_FLEX_BUS_PORT, PortControl, 0x0C);
     326CXL_11_OFFSET_ASSERT (CXL_1_1_DVSEC_FLEX_BUS_PORT, PortStatus, 0x0E);
     327CXL_11_SIZE_ASSERT (CXL_1_1_DVSEC_FLEX_BUS_PORT, 0x10);
    329328///@}
    330329
     
    337336///@{
    338337
    339 #define CXL_CAPABILITY_HEADER_OFFSET                            0
    340 typedef union {
    341   struct {
    342     UINT32 CxlCapabilityId                                      : 16; // bit 0..15
    343     UINT32 CxlCapabilityVersion                                 :  4; // bit 16..19
    344     UINT32 CxlCacheMemVersion                                   :  4; // bit 20..23
    345     UINT32 ArraySize                                            :  8; // bit 24..31
    346   } Bits;
    347   UINT32                                                        Uint32;
     338#define CXL_CAPABILITY_HEADER_OFFSET  0
     339typedef union {
     340  struct {
     341    UINT32    CxlCapabilityId      : 16;                              // bit 0..15
     342    UINT32    CxlCapabilityVersion :  4;                              // bit 16..19
     343    UINT32    CxlCacheMemVersion   :  4;                              // bit 20..23
     344    UINT32    ArraySize            :  8;                              // bit 24..31
     345  } Bits;
     346  UINT32    Uint32;
    348347} CXL_CAPABILITY_HEADER;
    349348
    350 #define CXL_RAS_CAPABILITY_HEADER_OFFSET                        4
    351 typedef union {
    352   struct {
    353     UINT32 CxlCapabilityId                                      : 16; // bit 0..15
    354     UINT32 CxlCapabilityVersion                                 :  4; // bit 16..19
    355     UINT32 CxlRasCapabilityPointer                              : 12; // bit 20..31
    356   } Bits;
    357   UINT32                                                        Uint32;
     349#define CXL_RAS_CAPABILITY_HEADER_OFFSET  4
     350typedef union {
     351  struct {
     352    UINT32    CxlCapabilityId         : 16;                          // bit 0..15
     353    UINT32    CxlCapabilityVersion    :  4;                          // bit 16..19
     354    UINT32    CxlRasCapabilityPointer : 12;                          // bit 20..31
     355  } Bits;
     356  UINT32    Uint32;
    358357} CXL_RAS_CAPABILITY_HEADER;
    359358
    360 #define CXL_SECURITY_CAPABILITY_HEADER_OFFSET                   8
    361 typedef union {
    362   struct {
    363     UINT32 CxlCapabilityId                                      : 16; // bit 0..15
    364     UINT32 CxlCapabilityVersion                                 :  4; // bit 16..19
    365     UINT32 CxlSecurityCapabilityPointer                         : 12; // bit 20..31
    366   } Bits;
    367   UINT32                                                        Uint32;
     359#define CXL_SECURITY_CAPABILITY_HEADER_OFFSET  8
     360typedef union {
     361  struct {
     362    UINT32    CxlCapabilityId              : 16;                      // bit 0..15
     363    UINT32    CxlCapabilityVersion         :  4;                      // bit 16..19
     364    UINT32    CxlSecurityCapabilityPointer : 12;                      // bit 20..31
     365  } Bits;
     366  UINT32    Uint32;
    368367} CXL_SECURITY_CAPABILITY_HEADER;
    369368
    370 #define CXL_LINK_CAPABILITY_HEADER_OFFSET                       0xC
    371 typedef union {
    372   struct {
    373     UINT32 CxlCapabilityId                                      : 16; // bit 0..15
    374     UINT32 CxlCapabilityVersion                                 :  4; // bit 16..19
    375     UINT32 CxlLinkCapabilityPointer                             : 12; // bit 20..31
    376   } Bits;
    377   UINT32                                                        Uint32;
     369#define CXL_LINK_CAPABILITY_HEADER_OFFSET  0xC
     370typedef union {
     371  struct {
     372    UINT32    CxlCapabilityId          : 16;                          // bit 0..15
     373    UINT32    CxlCapabilityVersion     :  4;                          // bit 16..19
     374    UINT32    CxlLinkCapabilityPointer : 12;                          // bit 20..31
     375  } Bits;
     376  UINT32    Uint32;
    378377} CXL_LINK_CAPABILITY_HEADER;
    379378
    380379typedef union {
    381380  struct {
    382     UINT32 CacheDataParity                                      :  1; // bit 0..0
    383     UINT32 CacheAddressParity                                   :  1; // bit 1..1
    384     UINT32 CacheByteEnableParity                                :  1; // bit 2..2
    385     UINT32 CacheDataEcc                                         :  1; // bit 3..3
    386     UINT32 MemDataParity                                        :  1; // bit 4..4
    387     UINT32 MemAddressParity                                     :  1; // bit 5..5
    388     UINT32 MemByteEnableParity                                  :  1; // bit 6..6
    389     UINT32 MemDataEcc                                           :  1; // bit 7..7
    390     UINT32 ReInitThreshold                                      :  1; // bit 8..8
    391     UINT32 RsvdEncodingViolation                                :  1; // bit 9..9
    392     UINT32 PoisonReceived                                       :  1; // bit 10..10
    393     UINT32 ReceiverOverflow                                     :  1; // bit 11..11
    394     UINT32 Reserved                                             : 20; // bit 12..31
    395   } Bits;
    396   UINT32                                                        Uint32;
     381    UINT32    CacheDataParity       :  1;                            // bit 0..0
     382    UINT32    CacheAddressParity    :  1;                            // bit 1..1
     383    UINT32    CacheByteEnableParity :  1;                            // bit 2..2
     384    UINT32    CacheDataEcc          :  1;                            // bit 3..3
     385    UINT32    MemDataParity         :  1;                            // bit 4..4
     386    UINT32    MemAddressParity      :  1;                            // bit 5..5
     387    UINT32    MemByteEnableParity   :  1;                            // bit 6..6
     388    UINT32    MemDataEcc            :  1;                            // bit 7..7
     389    UINT32    ReInitThreshold       :  1;                            // bit 8..8
     390    UINT32    RsvdEncodingViolation :  1;                            // bit 9..9
     391    UINT32    PoisonReceived        :  1;                            // bit 10..10
     392    UINT32    ReceiverOverflow      :  1;                            // bit 11..11
     393    UINT32    Reserved              : 20;                            // bit 12..31
     394  } Bits;
     395  UINT32    Uint32;
    397396} CXL_1_1_UNCORRECTABLE_ERROR_STATUS;
    398397
    399398typedef union {
    400399  struct {
    401     UINT32 CacheDataParityMask                                  :  1; // bit 0..0
    402     UINT32 CacheAddressParityMask                               :  1; // bit 1..1
    403     UINT32 CacheByteEnableParityMask                            :  1; // bit 2..2
    404     UINT32 CacheDataEccMask                                     :  1; // bit 3..3
    405     UINT32 MemDataParityMask                                    :  1; // bit 4..4
    406     UINT32 MemAddressParityMask                                 :  1; // bit 5..5
    407     UINT32 MemByteEnableParityMask                              :  1; // bit 6..6
    408     UINT32 MemDataEccMask                                       :  1; // bit 7..7
    409     UINT32 ReInitThresholdMask                                  :  1; // bit 8..8
    410     UINT32 RsvdEncodingViolationMask                            :  1; // bit 9..9
    411     UINT32 PoisonReceivedMask                                   :  1; // bit 10..10
    412     UINT32 ReceiverOverflowMask                                 :  1; // bit 11..11
    413     UINT32 Reserved                                             : 20; // bit 12..31
    414   } Bits;
    415   UINT32                                                        Uint32;
     400    UINT32    CacheDataParityMask       :  1;                        // bit 0..0
     401    UINT32    CacheAddressParityMask    :  1;                        // bit 1..1
     402    UINT32    CacheByteEnableParityMask :  1;                        // bit 2..2
     403    UINT32    CacheDataEccMask          :  1;                        // bit 3..3
     404    UINT32    MemDataParityMask         :  1;                        // bit 4..4
     405    UINT32    MemAddressParityMask      :  1;                        // bit 5..5
     406    UINT32    MemByteEnableParityMask   :  1;                        // bit 6..6
     407    UINT32    MemDataEccMask            :  1;                        // bit 7..7
     408    UINT32    ReInitThresholdMask       :  1;                        // bit 8..8
     409    UINT32    RsvdEncodingViolationMask :  1;                        // bit 9..9
     410    UINT32    PoisonReceivedMask        :  1;                        // bit 10..10
     411    UINT32    ReceiverOverflowMask      :  1;                        // bit 11..11
     412    UINT32    Reserved                  : 20;                        // bit 12..31
     413  } Bits;
     414  UINT32    Uint32;
    416415} CXL_1_1_UNCORRECTABLE_ERROR_MASK;
    417416
    418417typedef union {
    419418  struct {
    420     UINT32 CacheDataParitySeverity                              :  1; // bit 0..0
    421     UINT32 CacheAddressParitySeverity                           :  1; // bit 1..1
    422     UINT32 CacheByteEnableParitySeverity                        :  1; // bit 2..2
    423     UINT32 CacheDataEccSeverity                                 :  1; // bit 3..3
    424     UINT32 MemDataParitySeverity                                :  1; // bit 4..4
    425     UINT32 MemAddressParitySeverity                             :  1; // bit 5..5
    426     UINT32 MemByteEnableParitySeverity                          :  1; // bit 6..6
    427     UINT32 MemDataEccSeverity                                   :  1; // bit 7..7
    428     UINT32 ReInitThresholdSeverity                              :  1; // bit 8..8
    429     UINT32 RsvdEncodingViolationSeverity                        :  1; // bit 9..9
    430     UINT32 PoisonReceivedSeverity                               :  1; // bit 10..10
    431     UINT32 ReceiverOverflowSeverity                             :  1; // bit 11..11
    432     UINT32 Reserved                                             : 20; // bit 12..31
    433   } Bits;
    434   UINT32                                                        Uint32;
     419    UINT32    CacheDataParitySeverity       :  1;                    // bit 0..0
     420    UINT32    CacheAddressParitySeverity    :  1;                    // bit 1..1
     421    UINT32    CacheByteEnableParitySeverity :  1;                    // bit 2..2
     422    UINT32    CacheDataEccSeverity          :  1;                    // bit 3..3
     423    UINT32    MemDataParitySeverity         :  1;                    // bit 4..4
     424    UINT32    MemAddressParitySeverity      :  1;                    // bit 5..5
     425    UINT32    MemByteEnableParitySeverity   :  1;                    // bit 6..6
     426    UINT32    MemDataEccSeverity            :  1;                    // bit 7..7
     427    UINT32    ReInitThresholdSeverity       :  1;                    // bit 8..8
     428    UINT32    RsvdEncodingViolationSeverity :  1;                    // bit 9..9
     429    UINT32    PoisonReceivedSeverity        :  1;                    // bit 10..10
     430    UINT32    ReceiverOverflowSeverity      :  1;                    // bit 11..11
     431    UINT32    Reserved                      : 20;                    // bit 12..31
     432  } Bits;
     433  UINT32    Uint32;
    435434} CXL_1_1_UNCORRECTABLE_ERROR_SEVERITY;
    436435
    437436typedef union {
    438437  struct {
    439     UINT32 CacheDataEcc                                         :  1; // bit 0..0
    440     UINT32 MemoryDataEcc                                        :  1; // bit 1..1
    441     UINT32 CrcThreshold                                         :  1; // bit 2..2
    442     UINT32 RetryThreshold                                       :  1; // bit 3..3
    443     UINT32 CachePoisonReceived                                  :  1; // bit 4..4
    444     UINT32 MemoryPoisonReceived                                 :  1; // bit 5..5
    445     UINT32 PhysicalLayerError                                   :  1; // bit 6..6
    446     UINT32 Reserved                                             : 25; // bit 7..31
    447   } Bits;
    448   UINT32                                                        Uint32;
     438    UINT32    CacheDataEcc         :  1;                              // bit 0..0
     439    UINT32    MemoryDataEcc        :  1;                              // bit 1..1
     440    UINT32    CrcThreshold         :  1;                              // bit 2..2
     441    UINT32    RetryThreshold       :  1;                              // bit 3..3
     442    UINT32    CachePoisonReceived  :  1;                              // bit 4..4
     443    UINT32    MemoryPoisonReceived :  1;                              // bit 5..5
     444    UINT32    PhysicalLayerError   :  1;                              // bit 6..6
     445    UINT32    Reserved             : 25;                              // bit 7..31
     446  } Bits;
     447  UINT32    Uint32;
    449448} CXL_CORRECTABLE_ERROR_STATUS;
    450449
    451450typedef union {
    452451  struct {
    453     UINT32 CacheDataEccMask                                     :  1; // bit 0..0
    454     UINT32 MemoryDataEccMask                                    :  1; // bit 1..1
    455     UINT32 CrcThresholdMask                                     :  1; // bit 2..2
    456     UINT32 RetryThresholdMask                                   :  1; // bit 3..3
    457     UINT32 CachePoisonReceivedMask                              :  1; // bit 4..4
    458     UINT32 MemoryPoisonReceivedMask                             :  1; // bit 5..5
    459     UINT32 PhysicalLayerErrorMask                               :  1; // bit 6..6
    460     UINT32 Reserved                                             : 25; // bit 7..31
    461   } Bits;
    462   UINT32                                                        Uint32;
     452    UINT32    CacheDataEccMask         :  1;                          // bit 0..0
     453    UINT32    MemoryDataEccMask        :  1;                          // bit 1..1
     454    UINT32    CrcThresholdMask         :  1;                          // bit 2..2
     455    UINT32    RetryThresholdMask       :  1;                          // bit 3..3
     456    UINT32    CachePoisonReceivedMask  :  1;                          // bit 4..4
     457    UINT32    MemoryPoisonReceivedMask :  1;                          // bit 5..5
     458    UINT32    PhysicalLayerErrorMask   :  1;                          // bit 6..6
     459    UINT32    Reserved                 : 25;                          // bit 7..31
     460  } Bits;
     461  UINT32    Uint32;
    463462} CXL_CORRECTABLE_ERROR_MASK;
    464463
    465464typedef union {
    466465  struct {
    467     UINT32 FirstErrorPointer                                    :  4; // bit 0..3
    468     UINT32 Reserved1                                            :  5; // bit 4..8
    469     UINT32 MultipleHeaderRecordingCapability                    :  1; // bit 9..9
    470     UINT32 Reserved2                                            :  3; // bit 10..12
    471     UINT32 PoisonEnabled                                        :  1; // bit 13..13
    472     UINT32 Reserved3                                            : 18; // bit 14..31
    473   } Bits;
    474   UINT32                                                        Uint32;
     466    UINT32    FirstErrorPointer                 :  4;                // bit 0..3
     467    UINT32    Reserved1                         :  5;                // bit 4..8
     468    UINT32    MultipleHeaderRecordingCapability :  1;                // bit 9..9
     469    UINT32    Reserved2                         :  3;                // bit 10..12
     470    UINT32    PoisonEnabled                     :  1;                // bit 13..13
     471    UINT32    Reserved3                         : 18;                // bit 14..31
     472  } Bits;
     473  UINT32    Uint32;
    475474} CXL_ERROR_CAPABILITIES_AND_CONTROL;
    476475
    477476typedef struct {
    478   CXL_1_1_UNCORRECTABLE_ERROR_STATUS                            UncorrectableErrorStatus;
    479   CXL_1_1_UNCORRECTABLE_ERROR_MASK                              UncorrectableErrorMask;
    480   CXL_1_1_UNCORRECTABLE_ERROR_SEVERITY                          UncorrectableErrorSeverity;
    481   CXL_CORRECTABLE_ERROR_STATUS                                  CorrectableErrorStatus;
    482   CXL_CORRECTABLE_ERROR_MASK                                    CorrectableErrorMask;
    483   CXL_ERROR_CAPABILITIES_AND_CONTROL                            ErrorCapabilitiesAndControl;
    484   UINT32                                                        HeaderLog[16];
     477  CXL_1_1_UNCORRECTABLE_ERROR_STATUS      UncorrectableErrorStatus;
     478  CXL_1_1_UNCORRECTABLE_ERROR_MASK        UncorrectableErrorMask;
     479  CXL_1_1_UNCORRECTABLE_ERROR_SEVERITY    UncorrectableErrorSeverity;
     480  CXL_CORRECTABLE_ERROR_STATUS            CorrectableErrorStatus;
     481  CXL_CORRECTABLE_ERROR_MASK              CorrectableErrorMask;
     482  CXL_ERROR_CAPABILITIES_AND_CONTROL      ErrorCapabilitiesAndControl;
     483  UINT32                                  HeaderLog[16];
    485484} CXL_1_1_RAS_CAPABILITY_STRUCTURE;
    486485
    487 CXL_11_OFFSET_ASSERT (CXL_1_1_RAS_CAPABILITY_STRUCTURE, UncorrectableErrorStatus   , 0x00);
    488 CXL_11_OFFSET_ASSERT (CXL_1_1_RAS_CAPABILITY_STRUCTURE, UncorrectableErrorMask     , 0x04);
    489 CXL_11_OFFSET_ASSERT (CXL_1_1_RAS_CAPABILITY_STRUCTURE, UncorrectableErrorSeverity , 0x08);
    490 CXL_11_OFFSET_ASSERT (CXL_1_1_RAS_CAPABILITY_STRUCTURE, CorrectableErrorStatus     , 0x0C);
    491 CXL_11_OFFSET_ASSERT (CXL_1_1_RAS_CAPABILITY_STRUCTURE, CorrectableErrorMask       , 0x10);
     486CXL_11_OFFSET_ASSERT (CXL_1_1_RAS_CAPABILITY_STRUCTURE, UncorrectableErrorStatus, 0x00);
     487CXL_11_OFFSET_ASSERT (CXL_1_1_RAS_CAPABILITY_STRUCTURE, UncorrectableErrorMask, 0x04);
     488CXL_11_OFFSET_ASSERT (CXL_1_1_RAS_CAPABILITY_STRUCTURE, UncorrectableErrorSeverity, 0x08);
     489CXL_11_OFFSET_ASSERT (CXL_1_1_RAS_CAPABILITY_STRUCTURE, CorrectableErrorStatus, 0x0C);
     490CXL_11_OFFSET_ASSERT (CXL_1_1_RAS_CAPABILITY_STRUCTURE, CorrectableErrorMask, 0x10);
    492491CXL_11_OFFSET_ASSERT (CXL_1_1_RAS_CAPABILITY_STRUCTURE, ErrorCapabilitiesAndControl, 0x14);
    493 CXL_11_OFFSET_ASSERT (CXL_1_1_RAS_CAPABILITY_STRUCTURE, HeaderLog                  , 0x18);
    494 CXL_11_SIZE_ASSERT   (CXL_1_1_RAS_CAPABILITY_STRUCTURE                             , 0x58);
    495 
    496 typedef union {
    497   struct {
    498     UINT32 DeviceTrustLevel                                     :  2; // bit 0..1
    499     UINT32 Reserved                                             : 30; // bit 2..31
    500   } Bits;
    501   UINT32                                                        Uint32;
     492CXL_11_OFFSET_ASSERT (CXL_1_1_RAS_CAPABILITY_STRUCTURE, HeaderLog, 0x18);
     493CXL_11_SIZE_ASSERT (CXL_1_1_RAS_CAPABILITY_STRUCTURE, 0x58);
     494
     495typedef union {
     496  struct {
     497    UINT32    DeviceTrustLevel :  2;                                  // bit 0..1
     498    UINT32    Reserved         : 30;                                  // bit 2..31
     499  } Bits;
     500  UINT32    Uint32;
    502501} CXL_1_1_SECURITY_POLICY;
    503502
    504503typedef struct {
    505   CXL_1_1_SECURITY_POLICY                                       SecurityPolicy;
     504  CXL_1_1_SECURITY_POLICY    SecurityPolicy;
    506505} CXL_1_1_SECURITY_CAPABILITY_STRUCTURE;
    507506
    508507CXL_11_OFFSET_ASSERT (CXL_1_1_SECURITY_CAPABILITY_STRUCTURE, SecurityPolicy, 0x0);
    509 CXL_11_SIZE_ASSERT   (CXL_1_1_SECURITY_CAPABILITY_STRUCTURE,                0x4);
    510 
    511 typedef union {
    512   struct {
    513     UINT64 CxlLinkVersionSupported                              :  4; // bit 0..3
    514     UINT64 CxlLinkVersionReceived                               :  4; // bit 4..7
    515     UINT64 LlrWrapValueSupported                                :  8; // bit 8..15
    516     UINT64 LlrWrapValueReceived                                 :  8; // bit 16..23
    517     UINT64 NumRetryReceived                                     :  5; // bit 24..28
    518     UINT64 NumPhyReinitReceived                                 :  5; // bit 29..33
    519     UINT64 WrPtrReceived                                        :  8; // bit 34..41
    520     UINT64 EchoEseqReceived                                     :  8; // bit 42..49
    521     UINT64 NumFreeBufReceived                                   :  8; // bit 50..57
    522     UINT64 Reserved                                             :  6; // bit 58..63
    523   } Bits;
    524   UINT64                                                        Uint64;
     508CXL_11_SIZE_ASSERT (CXL_1_1_SECURITY_CAPABILITY_STRUCTURE, 0x4);
     509
     510typedef union {
     511  struct {
     512    UINT64    CxlLinkVersionSupported :  4;                          // bit 0..3
     513    UINT64    CxlLinkVersionReceived  :  4;                          // bit 4..7
     514    UINT64    LlrWrapValueSupported   :  8;                          // bit 8..15
     515    UINT64    LlrWrapValueReceived    :  8;                          // bit 16..23
     516    UINT64    NumRetryReceived        :  5;                          // bit 24..28
     517    UINT64    NumPhyReinitReceived    :  5;                          // bit 29..33
     518    UINT64    WrPtrReceived           :  8;                          // bit 34..41
     519    UINT64    EchoEseqReceived        :  8;                          // bit 42..49
     520    UINT64    NumFreeBufReceived      :  8;                          // bit 50..57
     521    UINT64    Reserved                :  6;                          // bit 58..63
     522  } Bits;
     523  UINT64    Uint64;
    525524} CXL_LINK_LAYER_CAPABILITY;
    526525
    527526typedef union {
    528527  struct {
    529     UINT16 LlReset                                              :  1; // bit 0..0
    530     UINT16 LlInitStall                                          :  1; // bit 1..1
    531     UINT16 LlCrdStall                                           :  1; // bit 2..2
    532     UINT16 InitState                                            :  2; // bit 3..4
    533     UINT16 LlRetryBufferConsumed                                :  8; // bit 5..12
    534     UINT16 Reserved                                             :  3; // bit 13..15
    535   } Bits;
    536   UINT64                                                        Uint64;
     528    UINT16    LlReset               :  1;                            // bit 0..0
     529    UINT16    LlInitStall           :  1;                            // bit 1..1
     530    UINT16    LlCrdStall            :  1;                            // bit 2..2
     531    UINT16    InitState             :  2;                            // bit 3..4
     532    UINT16    LlRetryBufferConsumed :  8;                            // bit 5..12
     533    UINT16    Reserved              :  3;                            // bit 13..15
     534  } Bits;
     535  UINT64    Uint64;
    537536} CXL_LINK_LAYER_CONTROL_AND_STATUS;
    538537
    539538typedef union {
    540539  struct {
    541     UINT64 CacheReqCredits                                      : 10; // bit 0..9
    542     UINT64 CacheRspCredits                                      : 10; // bit 10..19
    543     UINT64 CacheDataCredits                                     : 10; // bit 20..29
    544     UINT64 MemReqRspCredits                                     : 10; // bit 30..39
    545     UINT64 MemDataCredits                                       : 10; // bit 40..49
    546   } Bits;
    547   UINT64                                                        Uint64;
     540    UINT64    CacheReqCredits  : 10;                                  // bit 0..9
     541    UINT64    CacheRspCredits  : 10;                                  // bit 10..19
     542    UINT64    CacheDataCredits : 10;                                  // bit 20..29
     543    UINT64    MemReqRspCredits : 10;                                  // bit 30..39
     544    UINT64    MemDataCredits   : 10;                                  // bit 40..49
     545  } Bits;
     546  UINT64    Uint64;
    548547} CXL_LINK_LAYER_RX_CREDIT_CONTROL;
    549548
    550549typedef union {
    551550  struct {
    552     UINT64 CacheReqCredits                                      : 10; // bit 0..9
    553     UINT64 CacheRspCredits                                      : 10; // bit 10..19
    554     UINT64 CacheDataCredits                                     : 10; // bit 20..29
    555     UINT64 MemReqRspCredits                                     : 10; // bit 30..39
    556     UINT64 MemDataCredits                                       : 10; // bit 40..49
    557   } Bits;
    558   UINT64                                                        Uint64;
     551    UINT64    CacheReqCredits  : 10;                                  // bit 0..9
     552    UINT64    CacheRspCredits  : 10;                                  // bit 10..19
     553    UINT64    CacheDataCredits : 10;                                  // bit 20..29
     554    UINT64    MemReqRspCredits : 10;                                  // bit 30..39
     555    UINT64    MemDataCredits   : 10;                                  // bit 40..49
     556  } Bits;
     557  UINT64    Uint64;
    559558} CXL_LINK_LAYER_RX_CREDIT_RETURN_STATUS;
    560559
    561560typedef union {
    562561  struct {
    563     UINT64 CacheReqCredits                                      : 10; // bit 0..9
    564     UINT64 CacheRspCredits                                      : 10; // bit 10..19
    565     UINT64 CacheDataCredits                                     : 10; // bit 20..29
    566     UINT64 MemReqRspCredits                                     : 10; // bit 30..39
    567     UINT64 MemDataCredits                                       : 10; // bit 40..49
    568   } Bits;
    569   UINT64                                                        Uint64;
     562    UINT64    CacheReqCredits  : 10;                                  // bit 0..9
     563    UINT64    CacheRspCredits  : 10;                                  // bit 10..19
     564    UINT64    CacheDataCredits : 10;                                  // bit 20..29
     565    UINT64    MemReqRspCredits : 10;                                  // bit 30..39
     566    UINT64    MemDataCredits   : 10;                                  // bit 40..49
     567  } Bits;
     568  UINT64    Uint64;
    570569} CXL_LINK_LAYER_TX_CREDIT_STATUS;
    571570
    572571typedef union {
    573572  struct {
    574     UINT32 AckForceThreshold                                    :  8; // bit 0..7
    575     UINT32 AckFLushRetimer                                      : 10; // bit 8..17
    576   } Bits;
    577   UINT64                                                        Uint64;
     573    UINT32    AckForceThreshold :  8;                                // bit 0..7
     574    UINT32    AckFLushRetimer   : 10;                                // bit 8..17
     575  } Bits;
     576  UINT64    Uint64;
    578577} CXL_LINK_LAYER_ACK_TIMER_CONTROL;
    579578
    580579typedef union {
    581580  struct {
    582     UINT32 MdhDisable                                           :  1; // bit 0..0
    583     UINT32 Reserved                                             : 31; // bit 1..31
    584   } Bits;
    585   UINT64                                                        Uint64;
     581    UINT32    MdhDisable :  1;                                        // bit 0..0
     582    UINT32    Reserved   : 31;                                        // bit 1..31
     583  } Bits;
     584  UINT64    Uint64;
    586585} CXL_LINK_LAYER_DEFEATURE;
    587586
    588587typedef struct {
    589   CXL_LINK_LAYER_CAPABILITY                                     LinkLayerCapability;
    590   CXL_LINK_LAYER_CONTROL_AND_STATUS                             LinkLayerControlStatus;
    591   CXL_LINK_LAYER_RX_CREDIT_CONTROL                              LinkLayerRxCreditControl;
    592   CXL_LINK_LAYER_RX_CREDIT_RETURN_STATUS                        LinkLayerRxCreditReturnStatus;
    593   CXL_LINK_LAYER_TX_CREDIT_STATUS                               LinkLayerTxCreditStatus;
    594   CXL_LINK_LAYER_ACK_TIMER_CONTROL                              LinkLayerAckTimerControl;
    595   CXL_LINK_LAYER_DEFEATURE                                      LinkLayerDefeature;
     588  CXL_LINK_LAYER_CAPABILITY                 LinkLayerCapability;
     589  CXL_LINK_LAYER_CONTROL_AND_STATUS         LinkLayerControlStatus;
     590  CXL_LINK_LAYER_RX_CREDIT_CONTROL          LinkLayerRxCreditControl;
     591  CXL_LINK_LAYER_RX_CREDIT_RETURN_STATUS    LinkLayerRxCreditReturnStatus;
     592  CXL_LINK_LAYER_TX_CREDIT_STATUS           LinkLayerTxCreditStatus;
     593  CXL_LINK_LAYER_ACK_TIMER_CONTROL          LinkLayerAckTimerControl;
     594  CXL_LINK_LAYER_DEFEATURE                  LinkLayerDefeature;
    596595} CXL_1_1_LINK_CAPABILITY_STRUCTURE;
    597596
    598 CXL_11_OFFSET_ASSERT (CXL_1_1_LINK_CAPABILITY_STRUCTURE, LinkLayerCapability          , 0x00);
    599 CXL_11_OFFSET_ASSERT (CXL_1_1_LINK_CAPABILITY_STRUCTURE, LinkLayerControlStatus       , 0x08);
    600 CXL_11_OFFSET_ASSERT (CXL_1_1_LINK_CAPABILITY_STRUCTURE, LinkLayerRxCreditControl     , 0x10);
     597CXL_11_OFFSET_ASSERT (CXL_1_1_LINK_CAPABILITY_STRUCTURE, LinkLayerCapability, 0x00);
     598CXL_11_OFFSET_ASSERT (CXL_1_1_LINK_CAPABILITY_STRUCTURE, LinkLayerControlStatus, 0x08);
     599CXL_11_OFFSET_ASSERT (CXL_1_1_LINK_CAPABILITY_STRUCTURE, LinkLayerRxCreditControl, 0x10);
    601600CXL_11_OFFSET_ASSERT (CXL_1_1_LINK_CAPABILITY_STRUCTURE, LinkLayerRxCreditReturnStatus, 0x18);
    602 CXL_11_OFFSET_ASSERT (CXL_1_1_LINK_CAPABILITY_STRUCTURE, LinkLayerTxCreditStatus      , 0x20);
    603 CXL_11_OFFSET_ASSERT (CXL_1_1_LINK_CAPABILITY_STRUCTURE, LinkLayerAckTimerControl     , 0x28);
    604 CXL_11_OFFSET_ASSERT (CXL_1_1_LINK_CAPABILITY_STRUCTURE, LinkLayerDefeature           , 0x30);
    605 CXL_11_SIZE_ASSERT   (CXL_1_1_LINK_CAPABILITY_STRUCTURE                               , 0x38);
    606 
    607 #define CXL_IO_ARBITRATION_CONTROL_OFFSET                       0x180
    608 typedef union {
    609   struct {
    610     UINT32 Reserved1                                            :  4; // bit 0..3
    611     UINT32 WeightedRoundRobinArbitrationWeight                  :  4; // bit 4..7
    612     UINT32 Reserved2                                            : 24; // bit 8..31
    613   } Bits;
    614   UINT32                                                        Uint32;
     601CXL_11_OFFSET_ASSERT (CXL_1_1_LINK_CAPABILITY_STRUCTURE, LinkLayerTxCreditStatus, 0x20);
     602CXL_11_OFFSET_ASSERT (CXL_1_1_LINK_CAPABILITY_STRUCTURE, LinkLayerAckTimerControl, 0x28);
     603CXL_11_OFFSET_ASSERT (CXL_1_1_LINK_CAPABILITY_STRUCTURE, LinkLayerDefeature, 0x30);
     604CXL_11_SIZE_ASSERT (CXL_1_1_LINK_CAPABILITY_STRUCTURE, 0x38);
     605
     606#define CXL_IO_ARBITRATION_CONTROL_OFFSET  0x180
     607typedef union {
     608  struct {
     609    UINT32    Reserved1                           :  4;              // bit 0..3
     610    UINT32    WeightedRoundRobinArbitrationWeight :  4;              // bit 4..7
     611    UINT32    Reserved2                           : 24;              // bit 8..31
     612  } Bits;
     613  UINT32    Uint32;
    615614} CXL_IO_ARBITRATION_CONTROL;
    616615
    617616CXL_11_SIZE_ASSERT (CXL_IO_ARBITRATION_CONTROL, 0x4);
    618617
    619 #define CXL_CACHE_MEMORY_ARBITRATION_CONTROL_OFFSET             0x1C0
    620 typedef union {
    621   struct {
    622     UINT32 Reserved1                                            :  4; // bit 0..3
    623     UINT32 WeightedRoundRobinArbitrationWeight                  :  4; // bit 4..7
    624     UINT32 Reserved2                                            : 24; // bit 8..31
    625   } Bits;
    626   UINT32                                                        Uint32;
     618#define CXL_CACHE_MEMORY_ARBITRATION_CONTROL_OFFSET  0x1C0
     619typedef union {
     620  struct {
     621    UINT32    Reserved1                           :  4;              // bit 0..3
     622    UINT32    WeightedRoundRobinArbitrationWeight :  4;              // bit 4..7
     623    UINT32    Reserved2                           : 24;              // bit 8..31
     624  } Bits;
     625  UINT32    Uint32;
    627626} CXL_CACHE_MEMORY_ARBITRATION_CONTROL;
    628627
     
    636635typedef union {
    637636  struct {
    638     UINT64 RcrbEnable                                           :  1; // bit 0..0
    639     UINT64 Reserved                                             : 12; // bit 1..12
    640     UINT64 RcrbBaseAddress                                      : 51; // bit 13..63
    641   } Bits;
    642   UINT64                                                        Uint64;
     637    UINT64    RcrbEnable      :  1;                                  // bit 0..0
     638    UINT64    Reserved        : 12;                                  // bit 1..12
     639    UINT64    RcrbBaseAddress : 51;                                  // bit 13..63
     640  } Bits;
     641  UINT64    Uint64;
    643642} CXL_RCRB_BASE;
    644643
     
    653652// Compute Express Link Specification Revision: 1.1 - Chapter 7.2.1.1 - Figure 97
    654653//
    655 #define CXL_PORT_RCRB_MEMBAR0_LOW_OFFSET                                0x010
    656 #define CXL_PORT_RCRB_MEMBAR0_HIGH_OFFSET                               0x014
    657 #define CXL_PORT_RCRB_EXTENDED_CAPABILITY_BASE_OFFSET                   0x100
     654#define CXL_PORT_RCRB_MEMBAR0_LOW_OFFSET               0x010
     655#define CXL_PORT_RCRB_MEMBAR0_HIGH_OFFSET              0x014
     656#define CXL_PORT_RCRB_EXTENDED_CAPABILITY_BASE_OFFSET  0x100
    658657
    659658#endif
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