X-Git-Url: https://git.proxmox.com/?a=blobdiff_plain;f=MdeModulePkg%2FBus%2FPci%2FNvmExpressPei%2FNvmExpressPei.c;h=f73053fc3feb53f760da2bacb7b786842658684a;hb=1436aea4d5707e672672a11bda72be2c63c936c3;hp=a8cb7f3a6758ae5b490a0b48f8811cffe8342ac4;hpb=7c7184e201a90a1d2376e615e55e3f4074731468;p=mirror_edk2.git diff --git a/MdeModulePkg/Bus/Pci/NvmExpressPei/NvmExpressPei.c b/MdeModulePkg/Bus/Pci/NvmExpressPei/NvmExpressPei.c index a8cb7f3a67..f73053fc3f 100644 --- a/MdeModulePkg/Bus/Pci/NvmExpressPei/NvmExpressPei.c +++ b/MdeModulePkg/Bus/Pci/NvmExpressPei/NvmExpressPei.c @@ -53,19 +53,19 @@ EFI_PEI_NOTIFY_DESCRIPTOR mNvmeEndOfPeiNotifyListTemplate = { **/ EFI_STATUS EnumerateNvmeDevNamespace ( - IN OUT PEI_NVME_CONTROLLER_PRIVATE_DATA *Private, - IN UINT32 NamespaceId + IN OUT PEI_NVME_CONTROLLER_PRIVATE_DATA *Private, + IN UINT32 NamespaceId ) { - EFI_STATUS Status; - NVME_ADMIN_NAMESPACE_DATA *NamespaceData; - PEI_NVME_NAMESPACE_INFO *NamespaceInfo; - UINT32 DeviceIndex; - UINT32 Lbads; - UINT32 Flbas; - UINT32 LbaFmtIdx; - - NamespaceData = (NVME_ADMIN_NAMESPACE_DATA *) AllocateZeroPool (sizeof (NVME_ADMIN_NAMESPACE_DATA)); + EFI_STATUS Status; + NVME_ADMIN_NAMESPACE_DATA *NamespaceData; + PEI_NVME_NAMESPACE_INFO *NamespaceInfo; + UINT32 DeviceIndex; + UINT32 Lbads; + UINT32 Flbas; + UINT32 LbaFmtIdx; + + NamespaceData = (NVME_ADMIN_NAMESPACE_DATA *)AllocateZeroPool (sizeof (NVME_ADMIN_NAMESPACE_DATA)); if (NamespaceData == NULL) { return EFI_OUT_OF_RESOURCES; } @@ -92,8 +92,8 @@ EnumerateNvmeDevNamespace ( goto Exit; } - DeviceIndex = Private->ActiveNamespaceNum; - NamespaceInfo = &Private->NamespaceInfo[DeviceIndex]; + DeviceIndex = Private->ActiveNamespaceNum; + NamespaceInfo = &Private->NamespaceInfo[DeviceIndex]; NamespaceInfo->NamespaceId = NamespaceId; NamespaceInfo->NamespaceUuid = NamespaceData->Eui64; NamespaceInfo->Controller = Private; @@ -110,8 +110,8 @@ EnumerateNvmeDevNamespace ( NamespaceInfo->Media.RemovableMedia = FALSE; NamespaceInfo->Media.MediaPresent = TRUE; NamespaceInfo->Media.ReadOnly = FALSE; - NamespaceInfo->Media.BlockSize = (UINT32) 1 << Lbads; - NamespaceInfo->Media.LastBlock = (EFI_PEI_LBA) NamespaceData->Nsze - 1; + NamespaceInfo->Media.BlockSize = (UINT32)1 << Lbads; + NamespaceInfo->Media.LastBlock = (EFI_PEI_LBA)NamespaceData->Nsze - 1; DEBUG (( DEBUG_INFO, "%a: Namespace ID %d - BlockSize = 0x%x, LastBlock = 0x%lx\n", @@ -140,10 +140,10 @@ Exit: **/ EFI_STATUS NvmeDiscoverNamespaces ( - IN OUT PEI_NVME_CONTROLLER_PRIVATE_DATA *Private + IN OUT PEI_NVME_CONTROLLER_PRIVATE_DATA *Private ) { - UINT32 NamespaceId; + UINT32 NamespaceId; Private->ActiveNamespaceNum = 0; Private->NamespaceInfo = AllocateZeroPool (Private->ControllerData->Nn * sizeof (PEI_NVME_NAMESPACE_INFO)); @@ -161,6 +161,7 @@ NvmeDiscoverNamespaces ( // EnumerateNvmeDevNamespace (Private, NamespaceId); } + if (Private->ActiveNamespaceNum == 0) { return EFI_NOT_FOUND; } @@ -187,7 +188,7 @@ NvmePeimEndOfPei ( IN VOID *Ppi ) { - PEI_NVME_CONTROLLER_PRIVATE_DATA *Private; + PEI_NVME_CONTROLLER_PRIVATE_DATA *Private; Private = GET_NVME_PEIM_HC_PRIVATE_DATA_FROM_THIS_NOTIFY (NotifyDescriptor); NvmeFreeDmaResource (Private); @@ -207,19 +208,19 @@ NvmePeimEndOfPei ( EFI_STATUS EFIAPI NvmExpressPeimEntry ( - IN EFI_PEI_FILE_HANDLE FileHandle, - IN CONST EFI_PEI_SERVICES **PeiServices + IN EFI_PEI_FILE_HANDLE FileHandle, + IN CONST EFI_PEI_SERVICES **PeiServices ) { - EFI_STATUS Status; - EFI_BOOT_MODE BootMode; - EDKII_NVM_EXPRESS_HOST_CONTROLLER_PPI *NvmeHcPpi; - UINT8 Controller; - UINTN MmioBase; - UINTN DevicePathLength; - EFI_DEVICE_PATH_PROTOCOL *DevicePath; - PEI_NVME_CONTROLLER_PRIVATE_DATA *Private; - EFI_PHYSICAL_ADDRESS DeviceAddress; + EFI_STATUS Status; + EFI_BOOT_MODE BootMode; + EDKII_NVM_EXPRESS_HOST_CONTROLLER_PPI *NvmeHcPpi; + UINT8 Controller; + UINTN MmioBase; + UINTN DevicePathLength; + EFI_DEVICE_PATH_PROTOCOL *DevicePath; + PEI_NVME_CONTROLLER_PRIVATE_DATA *Private; + EFI_PHYSICAL_ADDRESS DeviceAddress; DEBUG ((DEBUG_INFO, "%a: Enters.\n", __FUNCTION__)); @@ -239,7 +240,7 @@ NvmExpressPeimEntry ( &gEdkiiPeiNvmExpressHostControllerPpiGuid, 0, NULL, - (VOID **) &NvmeHcPpi + (VOID **)&NvmeHcPpi ); if (EFI_ERROR (Status)) { DEBUG ((DEBUG_ERROR, "%a: Fail to locate NvmeHostControllerPpi.\n", __FUNCTION__)); @@ -269,8 +270,10 @@ NvmExpressPeimEntry ( ); if (EFI_ERROR (Status)) { DEBUG (( - DEBUG_ERROR, "%a: Fail to allocate get the device path for Controller %d.\n", - __FUNCTION__, Controller + DEBUG_ERROR, + "%a: Fail to allocate get the device path for Controller %d.\n", + __FUNCTION__, + Controller )); return Status; } @@ -281,8 +284,10 @@ NvmExpressPeimEntry ( Status = NvmeIsHcDevicePathValid (DevicePath, DevicePathLength); if (EFI_ERROR (Status)) { DEBUG (( - DEBUG_ERROR, "%a: The device path is invalid for Controller %d.\n", - __FUNCTION__, Controller + DEBUG_ERROR, + "%a: The device path is invalid for Controller %d.\n", + __FUNCTION__, + Controller )); Controller++; continue; @@ -295,10 +300,13 @@ NvmExpressPeimEntry ( // during S3 resume. // if ((BootMode == BOOT_ON_S3_RESUME) && - (NvmeS3SkipThisController (DevicePath, DevicePathLength))) { + (NvmeS3SkipThisController (DevicePath, DevicePathLength))) + { DEBUG (( - DEBUG_ERROR, "%a: Controller %d is skipped during S3.\n", - __FUNCTION__, Controller + DEBUG_ERROR, + "%a: Controller %d is skipped during S3.\n", + __FUNCTION__, + Controller )); Controller++; continue; @@ -310,8 +318,10 @@ NvmExpressPeimEntry ( Private = AllocateZeroPool (sizeof (PEI_NVME_CONTROLLER_PRIVATE_DATA)); if (Private == NULL) { DEBUG (( - DEBUG_ERROR, "%a: Fail to allocate private data for Controller %d.\n", - __FUNCTION__, Controller + DEBUG_ERROR, + "%a: Fail to allocate private data for Controller %d.\n", + __FUNCTION__, + Controller )); return EFI_OUT_OF_RESOURCES; } @@ -327,12 +337,15 @@ NvmExpressPeimEntry ( ); if (EFI_ERROR (Status)) { DEBUG (( - DEBUG_ERROR, "%a: Fail to allocate DMA buffers for Controller %d.\n", - __FUNCTION__, Controller + DEBUG_ERROR, + "%a: Fail to allocate DMA buffers for Controller %d.\n", + __FUNCTION__, + Controller )); return Status; } - ASSERT (DeviceAddress == ((EFI_PHYSICAL_ADDRESS) (UINTN) Private->Buffer)); + + ASSERT (DeviceAddress == ((EFI_PHYSICAL_ADDRESS)(UINTN)Private->Buffer)); DEBUG ((DEBUG_INFO, "%a: DMA buffer base at 0x%x\n", __FUNCTION__, Private->Buffer)); // @@ -351,7 +364,9 @@ NvmExpressPeimEntry ( DEBUG (( DEBUG_ERROR, "%a: Controller initialization fail for Controller %d with Status - %r.\n", - __FUNCTION__, Controller, Status + __FUNCTION__, + Controller, + Status )); NvmeFreeDmaResource (Private); Controller++; @@ -369,7 +384,9 @@ NvmExpressPeimEntry ( DEBUG (( DEBUG_ERROR, "%a: Namespaces discovery fail for Controller %d with Status - %r.\n", - __FUNCTION__, Controller, Status + __FUNCTION__, + Controller, + Status )); NvmeFreeDmaResource (Private); Controller++; @@ -379,35 +396,35 @@ NvmExpressPeimEntry ( // // Nvm Express Pass Thru PPI // - Private->PassThruMode.Attributes = EFI_NVM_EXPRESS_PASS_THRU_ATTRIBUTES_PHYSICAL | - EFI_NVM_EXPRESS_PASS_THRU_ATTRIBUTES_LOGICAL | - EFI_NVM_EXPRESS_PASS_THRU_ATTRIBUTES_CMD_SET_NVM; - Private->PassThruMode.IoAlign = sizeof (UINTN); - Private->PassThruMode.NvmeVersion = EDKII_PEI_NVM_EXPRESS_PASS_THRU_PPI_REVISION; - Private->NvmePassThruPpi.Mode = &Private->PassThruMode; - Private->NvmePassThruPpi.GetDevicePath = NvmePassThruGetDevicePath; - Private->NvmePassThruPpi.GetNextNameSpace = NvmePassThruGetNextNameSpace; - Private->NvmePassThruPpi.PassThru = NvmePassThru; + Private->PassThruMode.Attributes = EFI_NVM_EXPRESS_PASS_THRU_ATTRIBUTES_PHYSICAL | + EFI_NVM_EXPRESS_PASS_THRU_ATTRIBUTES_LOGICAL | + EFI_NVM_EXPRESS_PASS_THRU_ATTRIBUTES_CMD_SET_NVM; + Private->PassThruMode.IoAlign = sizeof (UINTN); + Private->PassThruMode.NvmeVersion = EDKII_PEI_NVM_EXPRESS_PASS_THRU_PPI_REVISION; + Private->NvmePassThruPpi.Mode = &Private->PassThruMode; + Private->NvmePassThruPpi.GetDevicePath = NvmePassThruGetDevicePath; + Private->NvmePassThruPpi.GetNextNameSpace = NvmePassThruGetNextNameSpace; + Private->NvmePassThruPpi.PassThru = NvmePassThru; CopyMem ( &Private->NvmePassThruPpiList, &mNvmePassThruPpiListTemplate, sizeof (EFI_PEI_PPI_DESCRIPTOR) ); - Private->NvmePassThruPpiList.Ppi = &Private->NvmePassThruPpi; + Private->NvmePassThruPpiList.Ppi = &Private->NvmePassThruPpi; PeiServicesInstallPpi (&Private->NvmePassThruPpiList); // // Block Io PPI // - Private->BlkIoPpi.GetNumberOfBlockDevices = NvmeBlockIoPeimGetDeviceNo; - Private->BlkIoPpi.GetBlockDeviceMediaInfo = NvmeBlockIoPeimGetMediaInfo; - Private->BlkIoPpi.ReadBlocks = NvmeBlockIoPeimReadBlocks; + Private->BlkIoPpi.GetNumberOfBlockDevices = NvmeBlockIoPeimGetDeviceNo; + Private->BlkIoPpi.GetBlockDeviceMediaInfo = NvmeBlockIoPeimGetMediaInfo; + Private->BlkIoPpi.ReadBlocks = NvmeBlockIoPeimReadBlocks; CopyMem ( &Private->BlkIoPpiList, &mNvmeBlkIoPpiListTemplate, sizeof (EFI_PEI_PPI_DESCRIPTOR) ); - Private->BlkIoPpiList.Ppi = &Private->BlkIoPpi; + Private->BlkIoPpiList.Ppi = &Private->BlkIoPpi; Private->BlkIo2Ppi.Revision = EFI_PEI_RECOVERY_BLOCK_IO2_PPI_REVISION; Private->BlkIo2Ppi.GetNumberOfBlockDevices = NvmeBlockIoPeimGetDeviceNo2; @@ -418,7 +435,7 @@ NvmExpressPeimEntry ( &mNvmeBlkIo2PpiListTemplate, sizeof (EFI_PEI_PPI_DESCRIPTOR) ); - Private->BlkIo2PpiList.Ppi = &Private->BlkIo2Ppi; + Private->BlkIo2PpiList.Ppi = &Private->BlkIo2Ppi; PeiServicesInstallPpi (&Private->BlkIoPpiList); // @@ -428,7 +445,8 @@ NvmExpressPeimEntry ( DEBUG (( DEBUG_INFO, "%a: Security Security Command PPI will be produced for Controller %d.\n", - __FUNCTION__, Controller + __FUNCTION__, + Controller )); Private->StorageSecurityPpi.Revision = EDKII_STORAGE_SECURITY_PPI_REVISION; Private->StorageSecurityPpi.GetNumberofDevices = NvmeStorageSecurityGetDeviceNo; @@ -440,7 +458,7 @@ NvmExpressPeimEntry ( &mNvmeStorageSecurityPpiListTemplate, sizeof (EFI_PEI_PPI_DESCRIPTOR) ); - Private->StorageSecurityPpiList.Ppi = &Private->StorageSecurityPpi; + Private->StorageSecurityPpiList.Ppi = &Private->StorageSecurityPpi; PeiServicesInstallPpi (&Private->StorageSecurityPpiList); } @@ -449,11 +467,13 @@ NvmExpressPeimEntry ( &mNvmeEndOfPeiNotifyListTemplate, sizeof (EFI_PEI_NOTIFY_DESCRIPTOR) ); - PeiServicesNotifyPpi (&Private->EndOfPeiNotifyList); + PeiServicesNotifyPpi (&Private->EndOfPeiNotifyList); DEBUG (( - DEBUG_INFO, "%a: Controller %d has been successfully initialized.\n", - __FUNCTION__, Controller + DEBUG_INFO, + "%a: Controller %d has been successfully initialized.\n", + __FUNCTION__, + Controller )); Controller++; }