NULL\r
};\r
\r
+EFI_PEI_PPI_DESCRIPTOR mAhciBlkIoPpiListTemplate = {\r
+ (EFI_PEI_PPI_DESCRIPTOR_PPI | EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST),\r
+ &gEfiPeiVirtualBlockIoPpiGuid,\r
+ NULL\r
+};\r
+\r
+EFI_PEI_PPI_DESCRIPTOR mAhciBlkIo2PpiListTemplate = {\r
+ (EFI_PEI_PPI_DESCRIPTOR_PPI | EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST),\r
+ &gEfiPeiVirtualBlockIo2PpiGuid,\r
+ NULL\r
+};\r
+\r
EFI_PEI_PPI_DESCRIPTOR mAhciStorageSecurityPpiListTemplate = {\r
(EFI_PEI_PPI_DESCRIPTOR_PPI | EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST),\r
&gEdkiiPeiStorageSecurityCommandPpiGuid,\r
Private->AtaPassThruPpiList.Ppi = &Private->AtaPassThruPpi;\r
PeiServicesInstallPpi (&Private->AtaPassThruPpiList);\r
\r
+ Private->BlkIoPpi.GetNumberOfBlockDevices = AhciBlockIoGetDeviceNo;\r
+ Private->BlkIoPpi.GetBlockDeviceMediaInfo = AhciBlockIoGetMediaInfo;\r
+ Private->BlkIoPpi.ReadBlocks = AhciBlockIoReadBlocks;\r
+ CopyMem (\r
+ &Private->BlkIoPpiList,\r
+ &mAhciBlkIoPpiListTemplate,\r
+ sizeof (EFI_PEI_PPI_DESCRIPTOR)\r
+ );\r
+ Private->BlkIoPpiList.Ppi = &Private->BlkIoPpi;\r
+ PeiServicesInstallPpi (&Private->BlkIoPpiList);\r
+\r
+ Private->BlkIo2Ppi.Revision = EFI_PEI_RECOVERY_BLOCK_IO2_PPI_REVISION;\r
+ Private->BlkIo2Ppi.GetNumberOfBlockDevices = AhciBlockIoGetDeviceNo2;\r
+ Private->BlkIo2Ppi.GetBlockDeviceMediaInfo = AhciBlockIoGetMediaInfo2;\r
+ Private->BlkIo2Ppi.ReadBlocks = AhciBlockIoReadBlocks2;\r
+ CopyMem (\r
+ &Private->BlkIo2PpiList,\r
+ &mAhciBlkIo2PpiListTemplate,\r
+ sizeof (EFI_PEI_PPI_DESCRIPTOR)\r
+ );\r
+ Private->BlkIo2PpiList.Ppi = &Private->BlkIo2Ppi;\r
+ PeiServicesInstallPpi (&Private->BlkIo2PpiList);\r
+\r
if (Private->TrustComputingDevices != 0) {\r
DEBUG ((\r
DEBUG_INFO,\r