VirtualBox

source: vbox/trunk/src/VBox/Devices/EFI/Firmware/MdePkg/Include/IndustryStandard/PciExpress21.h@ 58464

最後變更 在這個檔案從58464是 58459,由 vboxsync 提交於 9 年 前

EFI/Firmware: 'svn merge /vendor/edk2/UDK2010.SR1 /vendor/edk2/current .', reverting and removing files+dirs listed in ReadMe.vbox, resolving conflicts with help from ../UDK2014.SP1/. This is a raw untested merge.

  • 屬性 svn:eol-style 設為 native
檔案大小: 13.6 KB
 
1/** @file
2 Support for the latest PCI standard.
3
4 Copyright (c) 2006 - 2014, Intel Corporation. All rights reserved.<BR>
5 This program and the accompanying materials
6 are licensed and made available under the terms and conditions of the BSD License
7 which accompanies this distribution. The full text of the license may be found at
8 http://opensource.org/licenses/bsd-license.php
9
10 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
11 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
12
13**/
14
15#ifndef _PCIEXPRESS21_H_
16#define _PCIEXPRESS21_H_
17
18#define EFI_PCIE_CAPABILITY_BASE_OFFSET 0x100
19#define EFI_PCIE_CAPABILITY_ID_SRIOV_CONTROL_ARI_HIERARCHY 0x10
20#define EFI_PCIE_CAPABILITY_DEVICE_CAPABILITIES_2_OFFSET 0x24
21#define EFI_PCIE_CAPABILITY_DEVICE_CAPABILITIES_2_ARI_FORWARDING 0x20
22#define EFI_PCIE_CAPABILITY_DEVICE_CONTROL_2_OFFSET 0x28
23#define EFI_PCIE_CAPABILITY_DEVICE_CONTROL_2_ARI_FORWARDING 0x20
24
25//
26// for SR-IOV
27//
28#define EFI_PCIE_CAPABILITY_ID_ARI 0x0E
29#define EFI_PCIE_CAPABILITY_ID_ATS 0x0F
30#define EFI_PCIE_CAPABILITY_ID_SRIOV 0x10
31#define EFI_PCIE_CAPABILITY_ID_MRIOV 0x11
32
33typedef struct {
34 UINT32 CapabilityHeader;
35 UINT32 Capability;
36 UINT16 Control;
37 UINT16 Status;
38 UINT16 InitialVFs;
39 UINT16 TotalVFs;
40 UINT16 NumVFs;
41 UINT8 FunctionDependencyLink;
42 UINT8 Reserved0;
43 UINT16 FirstVFOffset;
44 UINT16 VFStride;
45 UINT16 Reserved1;
46 UINT16 VFDeviceID;
47 UINT32 SupportedPageSize;
48 UINT32 SystemPageSize;
49 UINT32 VFBar[6];
50 UINT32 VFMigrationStateArrayOffset;
51} SR_IOV_CAPABILITY_REGISTER;
52
53#define EFI_PCIE_CAPABILITY_ID_SRIOV_CAPABILITIES 0x04
54#define EFI_PCIE_CAPABILITY_ID_SRIOV_CONTROL 0x08
55#define EFI_PCIE_CAPABILITY_ID_SRIOV_STATUS 0x0A
56#define EFI_PCIE_CAPABILITY_ID_SRIOV_INITIALVFS 0x0C
57#define EFI_PCIE_CAPABILITY_ID_SRIOV_TOTALVFS 0x0E
58#define EFI_PCIE_CAPABILITY_ID_SRIOV_NUMVFS 0x10
59#define EFI_PCIE_CAPABILITY_ID_SRIOV_FUNCTION_DEPENDENCY_LINK 0x12
60#define EFI_PCIE_CAPABILITY_ID_SRIOV_FIRSTVF 0x14
61#define EFI_PCIE_CAPABILITY_ID_SRIOV_VFSTRIDE 0x16
62#define EFI_PCIE_CAPABILITY_ID_SRIOV_VFDEVICEID 0x1A
63#define EFI_PCIE_CAPABILITY_ID_SRIOV_SUPPORTED_PAGE_SIZE 0x1C
64#define EFI_PCIE_CAPABILITY_ID_SRIOV_SYSTEM_PAGE_SIZE 0x20
65#define EFI_PCIE_CAPABILITY_ID_SRIOV_BAR0 0x24
66#define EFI_PCIE_CAPABILITY_ID_SRIOV_BAR1 0x28
67#define EFI_PCIE_CAPABILITY_ID_SRIOV_BAR2 0x2C
68#define EFI_PCIE_CAPABILITY_ID_SRIOV_BAR3 0x30
69#define EFI_PCIE_CAPABILITY_ID_SRIOV_BAR4 0x34
70#define EFI_PCIE_CAPABILITY_ID_SRIOV_BAR5 0x38
71#define EFI_PCIE_CAPABILITY_ID_SRIOV_VF_MIGRATION_STATE 0x3C
72
73typedef struct {
74 UINT32 CapabilityId:16;
75 UINT32 CapabilityVersion:4;
76 UINT32 NextCapabilityOffset:12;
77} PCI_EXPRESS_EXTENDED_CAPABILITIES_HEADER;
78
79#define PCI_EXP_EXT_HDR PCI_EXPRESS_EXTENDED_CAPABILITIES_HEADER
80
81#define PCI_EXPRESS_EXTENDED_CAPABILITY_ADVANCED_ERROR_REPORTING_ID 0x0001
82#define PCI_EXPRESS_EXTENDED_CAPABILITY_ADVANCED_ERROR_REPORTING_VER1 0x1
83#define PCI_EXPRESS_EXTENDED_CAPABILITY_ADVANCED_ERROR_REPORTING_VER2 0x2
84
85typedef struct {
86 PCI_EXPRESS_EXTENDED_CAPABILITIES_HEADER Header;
87 UINT32 UncorrectableErrorStatus;
88 UINT32 UncorrectableErrorMask;
89 UINT32 UncorrectableErrorSeverity;
90 UINT32 CorrectableErrorStatus;
91 UINT32 CorrectableErrorMask;
92 UINT32 AdvancedErrorCapabilitiesAndControl;
93 UINT32 HeaderLog;
94 UINT32 RootErrorCommand;
95 UINT32 RootErrorStatus;
96 UINT16 ErrorSourceIdentification;
97 UINT16 CorrectableErrorSourceIdentification;
98 UINT32 TlpPrefixLog[4];
99} PCI_EXPRESS_EXTENDED_CAPABILITIES_ADVANCED_ERROR_REPORTING;
100
101#define PCI_EXPRESS_EXTENDED_CAPABILITY_VIRTUAL_CHANNEL_ID 0x0002
102#define PCI_EXPRESS_EXTENDED_CAPABILITY_VIRTUAL_CHANNEL_MFVC 0x0009
103#define PCI_EXPRESS_EXTENDED_CAPABILITY_VIRTUAL_CHANNEL_VER1 0x1
104
105typedef struct {
106 UINT32 VcResourceCapability:24;
107 UINT32 PortArbTableOffset:8;
108 UINT32 VcResourceControl;
109 UINT16 Reserved1;
110 UINT16 VcResourceStatus;
111} PCI_EXPRESS_EXTENDED_CAPABILITIES_VIRTUAL_CHANNEL_VC;
112
113typedef struct {
114 PCI_EXPRESS_EXTENDED_CAPABILITIES_HEADER Header;
115 UINT32 ExtendedVcCount:3;
116 UINT32 PortVcCapability1:29;
117 UINT32 PortVcCapability2:24;
118 UINT32 VcArbTableOffset:8;
119 UINT16 PortVcControl;
120 UINT16 PortVcStatus;
121 PCI_EXPRESS_EXTENDED_CAPABILITIES_VIRTUAL_CHANNEL_VC Capability[1];
122} PCI_EXPRESS_EXTENDED_CAPABILITIES_VIRTUAL_CHANNEL_CAPABILITY;
123
124#define PCI_EXPRESS_EXTENDED_CAPABILITY_SERIAL_NUMBER_ID 0x0003
125#define PCI_EXPRESS_EXTENDED_CAPABILITY_SERIAL_NUMBER_VER1 0x1
126
127typedef struct {
128 PCI_EXPRESS_EXTENDED_CAPABILITIES_HEADER Header;
129 UINT64 SerialNumber;
130} PCI_EXPRESS_EXTENDED_CAPABILITIES_SERIAL_NUMBER;
131
132#define PCI_EXPRESS_EXTENDED_CAPABILITY_LINK_DECLARATION_ID 0x0005
133#define PCI_EXPRESS_EXTENDED_CAPABILITY_LINK_DECLARATION_VER1 0x1
134
135typedef struct {
136 PCI_EXPRESS_EXTENDED_CAPABILITIES_HEADER Header;
137 UINT32 ElementSelfDescription;
138 UINT32 Reserved;
139 UINT32 LinkEntry[1];
140} PCI_EXPRESS_EXTENDED_CAPABILITIES_LINK_DECLARATION;
141
142#define PCI_EXPRESS_EXTENDED_CAPABILITY_LINK_DECLARATION_GET_LINK_COUNT(LINK_DECLARATION) (UINT8)(((LINK_DECLARATION->ElementSelfDescription)&0x0000ff00)>>8)
143
144#define PCI_EXPRESS_EXTENDED_CAPABILITY_LINK_CONTROL_ID 0x0006
145#define PCI_EXPRESS_EXTENDED_CAPABILITY_LINK_CONTROL_VER1 0x1
146
147typedef struct {
148 PCI_EXPRESS_EXTENDED_CAPABILITIES_HEADER Header;
149 UINT32 RootComplexLinkCapabilities;
150 UINT16 RootComplexLinkControl;
151 UINT16 RootComplexLinkStatus;
152} PCI_EXPRESS_EXTENDED_CAPABILITIES_INTERNAL_LINK_CONTROL;
153
154#define PCI_EXPRESS_EXTENDED_CAPABILITY_POWER_BUDGETING_ID 0x0004
155#define PCI_EXPRESS_EXTENDED_CAPABILITY_POWER_BUDGETING_VER1 0x1
156
157typedef struct {
158 PCI_EXPRESS_EXTENDED_CAPABILITIES_HEADER Header;
159 UINT32 DataSelect:8;
160 UINT32 Reserved:24;
161 UINT32 Data;
162 UINT32 PowerBudgetCapability:1;
163 UINT32 Reserved2:7;
164 UINT32 Reserved3:24;
165} PCI_EXPRESS_EXTENDED_CAPABILITIES_POWER_BUDGETING;
166
167#define PCI_EXPRESS_EXTENDED_CAPABILITY_ACS_EXTENDED_ID 0x000D
168#define PCI_EXPRESS_EXTENDED_CAPABILITY_ACS_EXTENDED_VER1 0x1
169
170typedef struct {
171 PCI_EXPRESS_EXTENDED_CAPABILITIES_HEADER Header;
172 UINT16 AcsCapability;
173 UINT16 AcsControl;
174 UINT8 EgressControlVectorArray[1];
175} PCI_EXPRESS_EXTENDED_CAPABILITIES_ACS_EXTENDED;
176
177#define PCI_EXPRESS_EXTENDED_CAPABILITY_ACS_EXTENDED_GET_EGRES_CONTROL(ACS_EXTENDED) (UINT8)(((ACS_EXTENDED->AcsCapability)&0x00000020))
178#define PCI_EXPRESS_EXTENDED_CAPABILITY_ACS_EXTENDED_GET_EGRES_VECTOR_SIZE(ACS_EXTENDED) (UINT8)(((ACS_EXTENDED->AcsCapability)&0x0000FF00))
179
180#define PCI_EXPRESS_EXTENDED_CAPABILITY_EVENT_COLLECTOR_ENDPOINT_ASSOCIATION_ID 0x0007
181#define PCI_EXPRESS_EXTENDED_CAPABILITY_EVENT_COLLECTOR_ENDPOINT_ASSOCIATION_VER1 0x1
182
183typedef struct {
184 PCI_EXPRESS_EXTENDED_CAPABILITIES_HEADER Header;
185 UINT32 AssociationBitmap;
186} PCI_EXPRESS_EXTENDED_CAPABILITIES_EVENT_COLLECTOR_ENDPOINT_ASSOCIATION;
187
188#define PCI_EXPRESS_EXTENDED_CAPABILITY_MULTI_FUNCTION_VIRTUAL_CHANNEL_ID 0x0008
189#define PCI_EXPRESS_EXTENDED_CAPABILITY_MULTI_FUNCTION_VIRTUAL_CHANNEL_VER1 0x1
190
191typedef PCI_EXPRESS_EXTENDED_CAPABILITIES_VIRTUAL_CHANNEL_CAPABILITY PCI_EXPRESS_EXTENDED_CAPABILITIES_MULTI_FUNCTION_VIRTUAL_CHANNEL_CAPABILITY;
192
193#define PCI_EXPRESS_EXTENDED_CAPABILITY_VENDOR_SPECIFIC_ID 0x000B
194#define PCI_EXPRESS_EXTENDED_CAPABILITY_VENDOR_SPECIFIC_VER1 0x1
195
196typedef struct {
197 PCI_EXPRESS_EXTENDED_CAPABILITIES_HEADER Header;
198 UINT32 VendorSpecificHeader;
199 UINT8 VendorSpecific[1];
200} PCI_EXPRESS_EXTENDED_CAPABILITIES_VENDOR_SPECIFIC;
201
202#define PCI_EXPRESS_EXTENDED_CAPABILITY_VENDOR_SPECIFIC_GET_SIZE(VENDOR) (UINT16)(((VENDOR->VendorSpecificHeader)&0xFFF00000)>>20)
203
204#define PCI_EXPRESS_EXTENDED_CAPABILITY_RCRB_HEADER_ID 0x000A
205#define PCI_EXPRESS_EXTENDED_CAPABILITY_RCRB_HEADER_VER1 0x1
206
207typedef struct {
208 PCI_EXPRESS_EXTENDED_CAPABILITIES_HEADER Header;
209 UINT16 VendorId;
210 UINT16 DeviceId;
211 UINT32 RcrbCapabilities;
212 UINT32 RcrbControl;
213 UINT32 Reserved;
214} PCI_EXPRESS_EXTENDED_CAPABILITIES_RCRB_HEADER;
215
216#define PCI_EXPRESS_EXTENDED_CAPABILITY_MULTICAST_ID 0x0012
217#define PCI_EXPRESS_EXTENDED_CAPABILITY_MULTICAST_VER1 0x1
218
219typedef struct {
220 PCI_EXPRESS_EXTENDED_CAPABILITIES_HEADER Header;
221 UINT16 MultiCastCapability;
222 UINT16 MulticastControl;
223 UINT64 McBaseAddress;
224 UINT64 McReceiveAddress;
225 UINT64 McBlockAll;
226 UINT64 McBlockUntranslated;
227 UINT64 McOverlayBar;
228} PCI_EXPRESS_EXTENDED_CAPABILITIES_MULTICAST;
229
230#define PCI_EXPRESS_EXTENDED_CAPABILITY_RESIZABLE_BAR_ID 0x0015
231#define PCI_EXPRESS_EXTENDED_CAPABILITY_RESIZABLE_BAR_VER1 0x1
232
233typedef struct {
234 UINT32 ResizableBarCapability;
235 UINT16 ResizableBarControl;
236 UINT16 Reserved;
237} PCI_EXPRESS_EXTENDED_CAPABILITIES_RESIZABLE_BAR_ENTRY;
238
239typedef struct {
240 PCI_EXPRESS_EXTENDED_CAPABILITIES_HEADER Header;
241 PCI_EXPRESS_EXTENDED_CAPABILITIES_RESIZABLE_BAR_ENTRY Capability[1];
242} PCI_EXPRESS_EXTENDED_CAPABILITIES_RESIZABLE_BAR;
243
244#define GET_NUMBER_RESIZABLE_BARS(x) (((x->Capability[0].ResizableBarControl) & 0xE0) >> 5)
245
246#define PCI_EXPRESS_EXTENDED_CAPABILITY_ARI_CAPABILITY_ID 0x000E
247#define PCI_EXPRESS_EXTENDED_CAPABILITY_ARI_CAPABILITY_VER1 0x1
248
249typedef struct {
250 PCI_EXPRESS_EXTENDED_CAPABILITIES_HEADER Header;
251 UINT16 AriCapability;
252 UINT16 AriControl;
253} PCI_EXPRESS_EXTENDED_CAPABILITIES_ARI_CAPABILITY;
254
255#define PCI_EXPRESS_EXTENDED_CAPABILITY_DYNAMIC_POWER_ALLOCATION_ID 0x0016
256#define PCI_EXPRESS_EXTENDED_CAPABILITY_DYNAMIC_POWER_ALLOCATION_VER1 0x1
257
258typedef struct {
259 PCI_EXPRESS_EXTENDED_CAPABILITIES_HEADER Header;
260 UINT32 DpaCapability;
261 UINT32 DpaLatencyIndicator;
262 UINT16 DpaStatus;
263 UINT16 DpaControl;
264 UINT8 DpaPowerAllocationArray[1];
265} PCI_EXPRESS_EXTENDED_CAPABILITIES_DYNAMIC_POWER_ALLOCATION;
266
267#define PCI_EXPRESS_EXTENDED_CAPABILITY_DYNAMIC_POWER_ALLOCATION_GET_SUBSTATE_MAX(POWER) (UINT16)(((POWER->DpaCapability)&0x0000000F))
268
269
270#define PCI_EXPRESS_EXTENDED_CAPABILITY_LATENCE_TOLERANCE_REPORTING_ID 0x0018
271#define PCI_EXPRESS_EXTENDED_CAPABILITY_LATENCE_TOLERANCE_REPORTING_VER1 0x1
272
273typedef struct {
274 PCI_EXPRESS_EXTENDED_CAPABILITIES_HEADER Header;
275 UINT16 MaxSnoopLatency;
276 UINT16 MaxNoSnoopLatency;
277} PCI_EXPRESS_EXTENDED_CAPABILITIES_LATENCE_TOLERANCE_REPORTING;
278
279#define PCI_EXPRESS_EXTENDED_CAPABILITY_TPH_ID 0x0017
280#define PCI_EXPRESS_EXTENDED_CAPABILITY_TPH_VER1 0x1
281
282typedef struct {
283 PCI_EXPRESS_EXTENDED_CAPABILITIES_HEADER Header;
284 UINT32 TphRequesterCapability;
285 UINT32 TphRequesterControl;
286 UINT16 TphStTable[1];
287} PCI_EXPRESS_EXTENDED_CAPABILITIES_TPH;
288
289#define GET_TPH_TABLE_SIZE(x) ((x->TphRequesterCapability & 0x7FF0000)>>16) * sizeof(UINT16)
290
291#endif
注意: 瀏覽 TracBrowser 來幫助您使用儲存庫瀏覽器

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