TianoCore EDK2 master
Loading...
Searching...
No Matches
AhciPei.c
Go to the documentation of this file.
1
11#include "AhciPei.h"
12#include <Ppi/PciDevice.h>
15
16EFI_PEI_PPI_DESCRIPTOR mAhciAtaPassThruPpiListTemplate = {
17 (EFI_PEI_PPI_DESCRIPTOR_PPI | EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST),
18 &gEdkiiPeiAtaPassThruPpiGuid,
19 NULL
20};
21
22EFI_PEI_PPI_DESCRIPTOR mAhciBlkIoPpiListTemplate = {
23 (EFI_PEI_PPI_DESCRIPTOR_PPI | EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST),
24 &gEfiPeiVirtualBlockIoPpiGuid,
25 NULL
26};
27
28EFI_PEI_PPI_DESCRIPTOR mAhciBlkIo2PpiListTemplate = {
29 (EFI_PEI_PPI_DESCRIPTOR_PPI | EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST),
30 &gEfiPeiVirtualBlockIo2PpiGuid,
31 NULL
32};
33
34EFI_PEI_PPI_DESCRIPTOR mAhciStorageSecurityPpiListTemplate = {
35 (EFI_PEI_PPI_DESCRIPTOR_PPI | EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST),
36 &gEdkiiPeiStorageSecurityCommandPpiGuid,
37 NULL
38};
39
40EFI_PEI_NOTIFY_DESCRIPTOR mAhciEndOfPeiNotifyListTemplate = {
41 (EFI_PEI_PPI_DESCRIPTOR_NOTIFY_CALLBACK | EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST),
42 &gEfiEndOfPeiSignalPpiGuid,
44};
45
46EFI_PEI_NOTIFY_DESCRIPTOR mAtaAhciHostControllerNotify = {
47 (EFI_PEI_PPI_DESCRIPTOR_NOTIFY_CALLBACK | EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST),
48 &gEdkiiPeiAtaAhciHostControllerPpiGuid,
50};
51
52EFI_PEI_NOTIFY_DESCRIPTOR mPciDevicePpiNotify = {
53 (EFI_PEI_PPI_DESCRIPTOR_NOTIFY_CALLBACK | EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST),
54 &gEdkiiPeiPciDevicePpiGuid,
56};
57
65VOID
68 )
69{
70 EFI_AHCI_REGISTERS *AhciRegisters;
71
72 ASSERT (Private != NULL);
73
74 AhciRegisters = &Private->AhciRegisters;
75
76 if (AhciRegisters->AhciRFisMap != NULL) {
78 EFI_SIZE_TO_PAGES (AhciRegisters->MaxRFisSize),
79 AhciRegisters->AhciRFis,
80 AhciRegisters->AhciRFisMap
81 );
82 }
83
84 if (AhciRegisters->AhciCmdListMap != NULL) {
86 EFI_SIZE_TO_PAGES (AhciRegisters->MaxCmdListSize),
87 AhciRegisters->AhciCmdList,
88 AhciRegisters->AhciCmdListMap
89 );
90 }
91
92 if (AhciRegisters->AhciCmdTableMap != NULL) {
94 EFI_SIZE_TO_PAGES (AhciRegisters->MaxCmdTableSize),
95 AhciRegisters->AhciCmdTable,
96 AhciRegisters->AhciCmdTableMap
97 );
98 }
99}
100
113EFIAPI
115 IN EFI_PEI_SERVICES **PeiServices,
116 IN EFI_PEI_NOTIFY_DESCRIPTOR *NotifyDescriptor,
117 IN VOID *Ppi
118 )
119{
121
122 Private = GET_AHCI_PEIM_HC_PRIVATE_DATA_FROM_THIS_NOTIFY (NotifyDescriptor);
123 AhciFreeDmaResource (Private);
124
125 return EFI_SUCCESS;
126}
127
141 IN UINTN MmioBase,
142 IN EFI_DEVICE_PATH_PROTOCOL *DevicePath,
143 IN UINTN DevicePathLength
144 )
145{
146 EFI_STATUS Status;
147 UINT32 PortBitMap;
148 UINT8 NumberOfPorts;
150 EFI_BOOT_MODE BootMode;
151
152 DEBUG ((DEBUG_INFO, "Initializing private data for ATA\n"));
153
154 //
155 // Get the current boot mode.
156 //
157 Status = PeiServicesGetBootMode (&BootMode);
158 if (EFI_ERROR (Status)) {
159 DEBUG ((DEBUG_ERROR, "%a: Fail to get the current boot mode.\n", __func__));
160 return Status;
161 }
162
163 //
164 // Check validity of the device path of the ATA AHCI controller.
165 //
166 Status = AhciIsHcDevicePathValid (DevicePath, DevicePathLength);
167 if (EFI_ERROR (Status)) {
168 DEBUG ((
169 DEBUG_ERROR,
170 "%a: The device path is invalid.\n",
171 __func__
172 ));
173 return Status;
174 }
175
176 //
177 // For S3 resume performance consideration, not all ports on an ATA AHCI
178 // controller will be enumerated/initialized. The driver consumes the
179 // content within S3StorageDeviceInitList LockBox to get the ports that
180 // will be enumerated/initialized during S3 resume.
181 //
182 if (BootMode == BOOT_ON_S3_RESUME) {
183 NumberOfPorts = AhciS3GetEumeratePorts (DevicePath, DevicePathLength, &PortBitMap);
184 if (NumberOfPorts == 0) {
185 return EFI_SUCCESS;
186 }
187 } else {
188 PortBitMap = MAX_UINT32;
189 }
190
191 //
192 // Memory allocation for controller private data.
193 //
195 if (Private == NULL) {
196 DEBUG ((
197 DEBUG_ERROR,
198 "%a: Fail to allocate private data.\n",
199 __func__
200 ));
201 return EFI_OUT_OF_RESOURCES;
202 }
203
204 //
205 // Initialize controller private data.
206 //
207 Private->Signature = AHCI_PEI_CONTROLLER_PRIVATE_DATA_SIGNATURE;
208 Private->MmioBase = MmioBase;
209 Private->DevicePathLength = DevicePathLength;
210 Private->DevicePath = DevicePath;
211 Private->PortBitMap = PortBitMap;
212 InitializeListHead (&Private->DeviceList);
213
214 Status = AhciModeInitialization (Private);
215 if (EFI_ERROR (Status)) {
216 return Status;
217 }
218
219 Private->AtaPassThruMode.Attributes = EFI_ATA_PASS_THRU_ATTRIBUTES_PHYSICAL |
221 Private->AtaPassThruMode.IoAlign = sizeof (UINTN);
222 Private->AtaPassThruPpi.Revision = EDKII_PEI_ATA_PASS_THRU_PPI_REVISION;
223 Private->AtaPassThruPpi.Mode = &Private->AtaPassThruMode;
224 Private->AtaPassThruPpi.PassThru = AhciAtaPassThruPassThru;
225 Private->AtaPassThruPpi.GetNextPort = AhciAtaPassThruGetNextPort;
226 Private->AtaPassThruPpi.GetNextDevice = AhciAtaPassThruGetNextDevice;
227 Private->AtaPassThruPpi.GetDevicePath = AhciAtaPassThruGetDevicePath;
228 CopyMem (
229 &Private->AtaPassThruPpiList,
230 &mAhciAtaPassThruPpiListTemplate,
232 );
233 Private->AtaPassThruPpiList.Ppi = &Private->AtaPassThruPpi;
234 PeiServicesInstallPpi (&Private->AtaPassThruPpiList);
235
238 Private->BlkIoPpi.ReadBlocks = AhciBlockIoReadBlocks;
239 CopyMem (
240 &Private->BlkIoPpiList,
241 &mAhciBlkIoPpiListTemplate,
243 );
244 Private->BlkIoPpiList.Ppi = &Private->BlkIoPpi;
245 PeiServicesInstallPpi (&Private->BlkIoPpiList);
246
247 Private->BlkIo2Ppi.Revision = EFI_PEI_RECOVERY_BLOCK_IO2_PPI_REVISION;
250 Private->BlkIo2Ppi.ReadBlocks = AhciBlockIoReadBlocks2;
251 CopyMem (
252 &Private->BlkIo2PpiList,
253 &mAhciBlkIo2PpiListTemplate,
255 );
256 Private->BlkIo2PpiList.Ppi = &Private->BlkIo2Ppi;
257 PeiServicesInstallPpi (&Private->BlkIo2PpiList);
258
259 if (Private->TrustComputingDevices != 0) {
260 DEBUG ((
261 DEBUG_INFO,
262 "%a: Security Security Command PPI will be produced.\n",
263 __func__
264 ));
265 Private->StorageSecurityPpi.Revision = EDKII_STORAGE_SECURITY_PPI_REVISION;
266 Private->StorageSecurityPpi.GetNumberofDevices = AhciStorageSecurityGetDeviceNo;
267 Private->StorageSecurityPpi.GetDevicePath = AhciStorageSecurityGetDevicePath;
268 Private->StorageSecurityPpi.ReceiveData = AhciStorageSecurityReceiveData;
269 Private->StorageSecurityPpi.SendData = AhciStorageSecuritySendData;
270 CopyMem (
271 &Private->StorageSecurityPpiList,
272 &mAhciStorageSecurityPpiListTemplate,
274 );
275 Private->StorageSecurityPpiList.Ppi = &Private->StorageSecurityPpi;
276 PeiServicesInstallPpi (&Private->StorageSecurityPpiList);
277 }
278
279 CopyMem (
280 &Private->EndOfPeiNotifyList,
281 &mAhciEndOfPeiNotifyListTemplate,
283 );
284 PeiServicesNotifyPpi (&Private->EndOfPeiNotifyList);
285
286 return EFI_SUCCESS;
287}
288
299 )
300{
301 UINT8 Controller;
302 UINTN MmioBase;
303 UINTN DevicePathLength;
304 EFI_DEVICE_PATH_PROTOCOL *DevicePath;
305 EFI_STATUS Status;
306
307 Controller = 0;
308 MmioBase = 0;
309 while (TRUE) {
310 Status = AhciHcPpi->GetAhciHcMmioBar (
311 AhciHcPpi,
312 Controller,
313 &MmioBase
314 );
315 //
316 // When status is error, meant no controller is found.
317 //
318 if (EFI_ERROR (Status)) {
319 break;
320 }
321
322 Status = AhciHcPpi->GetAhciHcDevicePath (
323 AhciHcPpi,
324 Controller,
325 &DevicePathLength,
326 &DevicePath
327 );
328 if (EFI_ERROR (Status)) {
329 DEBUG ((
330 DEBUG_ERROR,
331 "%a: Fail to allocate get the device path for Controller %d.\n",
332 __func__,
333 Controller
334 ));
335 return Status;
336 }
337
338 Status = AtaAhciInitPrivateData (MmioBase, DevicePath, DevicePathLength);
339 if (EFI_ERROR (Status)) {
340 DEBUG ((
341 DEBUG_ERROR,
342 "%a: Controller initialization fail for Controller %d with Status - %r.\n",
343 __func__,
344 Controller,
345 Status
346 ));
347 } else {
348 DEBUG ((
349 DEBUG_INFO,
350 "%a: Controller %d has been successfully initialized.\n",
351 __func__,
352 Controller
353 ));
354 }
355
356 Controller++;
357 }
358
359 return EFI_SUCCESS;
360}
361
375EFIAPI
377 IN EFI_PEI_SERVICES **PeiServices,
378 IN EFI_PEI_NOTIFY_DESCRIPTOR *NotifyDescriptor,
379 IN VOID *Ppi
380 )
381{
383
384 if (Ppi == NULL) {
385 return EFI_INVALID_PARAMETER;
386 }
387
388 AhciHcPpi = (EDKII_ATA_AHCI_HOST_CONTROLLER_PPI *)Ppi;
389
391}
392
403 EDKII_PCI_DEVICE_PPI *PciDevice
404 )
405{
406 EFI_STATUS Status;
407 PCI_TYPE00 PciData;
408 UINT32 MmioBase;
409 EFI_DEVICE_PATH_PROTOCOL *DevicePath;
410 UINTN DevicePathLength;
411 UINT64 EnabledPciAttributes;
412
413 //
414 // Now further check the PCI header: Base Class (offset 0x0B) and
415 // Sub Class (offset 0x0A). This controller should be an SATA controller
416 //
417 Status = PciDevice->PciIo.Pci.Read (
418 &PciDevice->PciIo,
419 EfiPciIoWidthUint8,
420 PCI_CLASSCODE_OFFSET,
421 sizeof (PciData.Hdr.ClassCode),
422 PciData.Hdr.ClassCode
423 );
424 if (EFI_ERROR (Status)) {
425 return EFI_UNSUPPORTED;
426 }
427
428 if (!IS_PCI_IDE (&PciData) && !IS_PCI_SATADPA (&PciData)) {
429 return EFI_UNSUPPORTED;
430 }
431
432 Status = PciDevice->PciIo.Attributes (
433 &PciDevice->PciIo,
435 0,
436 &EnabledPciAttributes
437 );
438 if (EFI_ERROR (Status)) {
439 return EFI_UNSUPPORTED;
440 } else {
441 EnabledPciAttributes &= (UINT64)EFI_PCI_DEVICE_ENABLE;
442 Status = PciDevice->PciIo.Attributes (
443 &PciDevice->PciIo,
445 EnabledPciAttributes,
446 NULL
447 );
448 if (EFI_ERROR (Status)) {
449 return EFI_UNSUPPORTED;
450 }
451 }
452
453 Status = PciDevice->PciIo.Pci.Read (
454 &PciDevice->PciIo,
455 EfiPciIoWidthUint32,
456 0x24,
457 1,
458 &MmioBase
459 );
460 if (EFI_ERROR (Status)) {
461 return EFI_UNSUPPORTED;
462 }
463
464 MmioBase &= 0xFFFFFFF0;
465
466 DevicePathLength = GetDevicePathSize (PciDevice->DevicePath);
467 DevicePath = PciDevice->DevicePath;
468
469 Status = AtaAhciInitPrivateData (MmioBase, DevicePath, DevicePathLength);
470 if (EFI_ERROR (Status)) {
471 DEBUG ((
472 DEBUG_INFO,
473 "%a: Failed to init controller, with Status - %r\n",
474 __func__,
475 Status
476 ));
477 }
478
479 return EFI_SUCCESS;
480}
481
495EFIAPI
497 IN EFI_PEI_SERVICES **PeiServices,
498 IN EFI_PEI_NOTIFY_DESCRIPTOR *NotifyDescriptor,
499 IN VOID *Ppi
500 )
501{
502 EDKII_PCI_DEVICE_PPI *PciDevice;
503
504 PciDevice = (EDKII_PCI_DEVICE_PPI *)Ppi;
505
506 return AtaAhciInitPrivateDataFromPciDevice (PciDevice);
507}
508
519EFIAPI
521 IN EFI_PEI_FILE_HANDLE FileHandle,
522 IN CONST EFI_PEI_SERVICES **PeiServices
523 )
524{
525 DEBUG ((DEBUG_INFO, "%a: Enters.\n", __func__));
526
527 PeiServicesNotifyPpi (&mAtaAhciHostControllerNotify);
528
529 PeiServicesNotifyPpi (&mPciDevicePpiNotify);
530
531 return EFI_SUCCESS;
532}
UINT64 UINTN
EFI_STATUS AhciModeInitialization(IN OUT PEI_AHCI_CONTROLLER_PRIVATE_DATA *Private)
Definition: AhciMode.c:1664
EFI_STATUS AtaAhciInitPrivateDataFromPciDevice(EDKII_PCI_DEVICE_PPI *PciDevice)
Definition: AhciPei.c:402
EFI_STATUS EFIAPI AtaAhciPeimEntry(IN EFI_PEI_FILE_HANDLE FileHandle, IN CONST EFI_PEI_SERVICES **PeiServices)
Definition: AhciPei.c:520
EFI_STATUS EFIAPI AhciPeimEndOfPei(IN EFI_PEI_SERVICES **PeiServices, IN EFI_PEI_NOTIFY_DESCRIPTOR *NotifyDescriptor, IN VOID *Ppi)
Definition: AhciPei.c:114
VOID AhciFreeDmaResource(IN PEI_AHCI_CONTROLLER_PRIVATE_DATA *Private)
Definition: AhciPei.c:66
EFI_STATUS AtaAhciInitPrivateDataFromHostControllerPpi(IN EDKII_ATA_AHCI_HOST_CONTROLLER_PPI *AhciHcPpi)
Definition: AhciPei.c:297
EFI_STATUS EFIAPI AtaAhciPciDevicePpiInstallationCallback(IN EFI_PEI_SERVICES **PeiServices, IN EFI_PEI_NOTIFY_DESCRIPTOR *NotifyDescriptor, IN VOID *Ppi)
Definition: AhciPei.c:496
EFI_STATUS EFIAPI AtaAhciHostControllerPpiInstallationCallback(IN EFI_PEI_SERVICES **PeiServices, IN EFI_PEI_NOTIFY_DESCRIPTOR *NotifyDescriptor, IN VOID *Ppi)
Definition: AhciPei.c:376
EFI_STATUS AtaAhciInitPrivateData(IN UINTN MmioBase, IN EFI_DEVICE_PATH_PROTOCOL *DevicePath, IN UINTN DevicePathLength)
Definition: AhciPei.c:140
UINT8 AhciS3GetEumeratePorts(IN EFI_DEVICE_PATH_PROTOCOL *HcDevicePath, IN UINTN HcDevicePathLength, OUT UINT32 *PortBitMap)
Definition: AhciPeiS3.c:30
EFI_STATUS IoMmuFreeBuffer(IN UINTN Pages, IN VOID *HostAddress, IN VOID *Mapping)
Definition: DmaMem.c:251
EFI_STATUS AhciIsHcDevicePathValid(IN EFI_DEVICE_PATH_PROTOCOL *DevicePath, IN UINTN DevicePathLength)
Definition: DevicePath.c:106
EFI_STATUS EFIAPI AhciBlockIoGetDeviceNo(IN EFI_PEI_SERVICES **PeiServices, IN EFI_PEI_RECOVERY_BLOCK_IO_PPI *This, OUT UINTN *NumberBlockDevices)
EFI_STATUS EFIAPI AhciBlockIoReadBlocks(IN EFI_PEI_SERVICES **PeiServices, IN EFI_PEI_RECOVERY_BLOCK_IO_PPI *This, IN UINTN DeviceIndex, IN EFI_PEI_LBA StartLBA, IN UINTN BufferSize, OUT VOID *Buffer)
EFI_STATUS EFIAPI AhciBlockIoGetMediaInfo(IN EFI_PEI_SERVICES **PeiServices, IN EFI_PEI_RECOVERY_BLOCK_IO_PPI *This, IN UINTN DeviceIndex, OUT EFI_PEI_BLOCK_IO_MEDIA *MediaInfo)
EFI_STATUS EFIAPI AhciBlockIoGetDeviceNo2(IN EFI_PEI_SERVICES **PeiServices, IN EFI_PEI_RECOVERY_BLOCK_IO2_PPI *This, OUT UINTN *NumberBlockDevices)
EFI_STATUS EFIAPI AhciBlockIoGetMediaInfo2(IN EFI_PEI_SERVICES **PeiServices, IN EFI_PEI_RECOVERY_BLOCK_IO2_PPI *This, IN UINTN DeviceIndex, OUT EFI_PEI_BLOCK_IO2_MEDIA *MediaInfo)
EFI_STATUS EFIAPI AhciBlockIoReadBlocks2(IN EFI_PEI_SERVICES **PeiServices, IN EFI_PEI_RECOVERY_BLOCK_IO2_PPI *This, IN UINTN DeviceIndex, IN EFI_PEI_LBA StartLBA, IN UINTN BufferSize, OUT VOID *Buffer)
EFI_STATUS EFIAPI AhciAtaPassThruGetNextDevice(IN EDKII_PEI_ATA_PASS_THRU_PPI *This, IN UINT16 Port, IN OUT UINT16 *PortMultiplierPort)
EFI_STATUS EFIAPI AhciAtaPassThruGetDevicePath(IN EDKII_PEI_ATA_PASS_THRU_PPI *This, OUT UINTN *DevicePathLength, OUT EFI_DEVICE_PATH_PROTOCOL **DevicePath)
EFI_STATUS EFIAPI AhciAtaPassThruPassThru(IN EDKII_PEI_ATA_PASS_THRU_PPI *This, IN UINT16 Port, IN UINT16 PortMultiplierPort, IN OUT EFI_ATA_PASS_THRU_COMMAND_PACKET *Packet)
EFI_STATUS EFIAPI AhciAtaPassThruGetNextPort(IN EDKII_PEI_ATA_PASS_THRU_PPI *This, IN OUT UINT16 *Port)
EFI_STATUS EFIAPI AhciStorageSecurityGetDevicePath(IN EDKII_PEI_STORAGE_SECURITY_CMD_PPI *This, IN UINTN DeviceIndex, OUT UINTN *DevicePathLength, OUT EFI_DEVICE_PATH_PROTOCOL **DevicePath)
EFI_STATUS EFIAPI AhciStorageSecuritySendData(IN EDKII_PEI_STORAGE_SECURITY_CMD_PPI *This, IN UINTN DeviceIndex, IN UINT64 Timeout, IN UINT8 SecurityProtocolId, IN UINT16 SecurityProtocolSpecificData, IN UINTN PayloadBufferSize, IN VOID *PayloadBuffer)
EFI_STATUS EFIAPI AhciStorageSecurityReceiveData(IN EDKII_PEI_STORAGE_SECURITY_CMD_PPI *This, IN UINTN DeviceIndex, IN UINT64 Timeout, IN UINT8 SecurityProtocolId, IN UINT16 SecurityProtocolSpecificData, IN UINTN PayloadBufferSize, OUT VOID *PayloadBuffer, OUT UINTN *PayloadTransferSize)
EFI_STATUS EFIAPI AhciStorageSecurityGetDeviceNo(IN EDKII_PEI_STORAGE_SECURITY_CMD_PPI *This, OUT UINTN *NumberofDevices)
LIST_ENTRY *EFIAPI InitializeListHead(IN OUT LIST_ENTRY *ListHead)
Definition: LinkedList.c:182
VOID *EFIAPI CopyMem(OUT VOID *DestinationBuffer, IN CONST VOID *SourceBuffer, IN UINTN Length)
UINTN EFIAPI GetDevicePathSize(IN CONST EFI_DEVICE_PATH_PROTOCOL *DevicePath)
VOID *EFIAPI AllocateZeroPool(IN UINTN AllocationSize)
EFI_STATUS EFIAPI PeiServicesGetBootMode(OUT EFI_BOOT_MODE *BootMode)
EFI_STATUS EFIAPI PeiServicesNotifyPpi(IN CONST EFI_PEI_NOTIFY_DESCRIPTOR *NotifyList)
EFI_STATUS EFIAPI PeiServicesInstallPpi(IN CONST EFI_PEI_PPI_DESCRIPTOR *PpiList)
#define NULL
Definition: Base.h:319
#define CONST
Definition: Base.h:259
#define TRUE
Definition: Base.h:301
#define IN
Definition: Base.h:279
#define DEBUG(Expression)
Definition: DebugLib.h:434
#define EFI_ATA_PASS_THRU_ATTRIBUTES_PHYSICAL
Definition: AtaPassThru.h:33
#define EFI_ATA_PASS_THRU_ATTRIBUTES_LOGICAL
Definition: AtaPassThru.h:38
@ EfiPciIoAttributeOperationEnable
Definition: PciIo.h:111
@ EfiPciIoAttributeOperationSupported
Definition: PciIo.h:119
#define IS_PCI_IDE(_p)
Definition: Pci22.h:404
#define IS_PCI_SATADPA(_p)
Definition: Pci30.h:40
UINT32 EFI_BOOT_MODE
Definition: PiBootMode.h:18
VOID * EFI_PEI_FILE_HANDLE
Definition: PiPeiCis.h:26
RETURN_STATUS EFI_STATUS
Definition: UefiBaseType.h:29
#define EFI_SIZE_TO_PAGES(Size)
Definition: UefiBaseType.h:200
#define EFI_SUCCESS
Definition: UefiBaseType.h:112
EFI_PEI_READ_BLOCKS2 ReadBlocks
Definition: BlockIo2.h:212
EFI_PEI_GET_DEVICE_MEDIA_INFORMATION2 GetBlockDeviceMediaInfo
Definition: BlockIo2.h:207
EFI_PEI_GET_NUMBER_BLOCK_DEVICES2 GetNumberOfBlockDevices
Definition: BlockIo2.h:202
EFI_PEI_READ_BLOCKS ReadBlocks
Definition: BlockIo.h:227
EFI_PEI_GET_NUMBER_BLOCK_DEVICES GetNumberOfBlockDevices
Definition: BlockIo.h:217
EFI_PEI_GET_DEVICE_MEDIA_INFORMATION GetBlockDeviceMediaInfo
Definition: BlockIo.h:222