@param[in] CapsuleStatus The capsule process stauts\r
@param[in] PayloadIndex FMP payload index\r
@param[in] ImageHeader FMP image header\r
+ @param[in] FmpDevicePath DevicePath associated with the FMP producer\r
\r
@retval EFI_SUCCESS The capsule status variable is recorded.\r
@retval EFI_OUT_OF_RESOURCES No resource to record the capsule status variable.\r
IN EFI_CAPSULE_HEADER *CapsuleHeader,\r
IN EFI_STATUS CapsuleStatus,\r
IN UINTN PayloadIndex,\r
- IN EFI_FIRMWARE_MANAGEMENT_CAPSULE_IMAGE_HEADER *ImageHeader\r
+ IN EFI_FIRMWARE_MANAGEMENT_CAPSULE_IMAGE_HEADER *ImageHeader,\r
+ IN EFI_DEVICE_PATH_PROTOCOL *FmpDevicePath OPTIONAL\r
);\r
\r
/**\r
\r
This function need support nested FMP capsule.\r
\r
- @param[in] CapsuleHeader Points to a capsule header.\r
- @param[in] AreAllImagesProcessed If all the FMP images in the capsule are processed.\r
+ @param[in] CapsuleHeader Points to a capsule header.\r
+ @param[out] AreAllImagesProcessed If all the FMP images in the capsule are processed.\r
\r
@retval EFI_SUCESS Process Capsule Image successfully.\r
@retval EFI_UNSUPPORTED Capsule image is not supported by the firmware.\r
UINTN Index2;\r
MEMMAP_DEVICE_PATH MemMapNode;\r
EFI_DEVICE_PATH_PROTOCOL *DriverDevicePath;\r
+ EFI_DEVICE_PATH_PROTOCOL *FmpDevicePath;\r
ESRT_MANAGEMENT_PROTOCOL *EsrtProtocol;\r
EFI_SYSTEM_RESOURCE_ENTRY EsrtEntry;\r
VOID *VendorCode;\r
continue;\r
}\r
\r
+ FmpDevicePath = NULL;\r
+ gBS->HandleProtocol(\r
+ HandleBuffer[Index1],\r
+ &gEfiDevicePathProtocolGuid,\r
+ (VOID **)&FmpDevicePath\r
+ );\r
+\r
ImageInfoSize = 0;\r
Status = Fmp->GetImageInfo (\r
Fmp,\r
continue;\r
}\r
\r
- if (CompareGuid(&ImageHeader->UpdateImageTypeId, &TempFmpImageInfo->ImageTypeId) &&\r
- ImageHeader->UpdateImageIndex == TempFmpImageInfo->ImageIndex) {\r
+ if (CompareGuid(&ImageHeader->UpdateImageTypeId, &TempFmpImageInfo->ImageTypeId)) {\r
AbortReason = NULL;\r
if (ImageHeader->Version >= EFI_FIRMWARE_MANAGEMENT_CAPSULE_IMAGE_HEADER_INIT_VERSION) {\r
if(ImageHeader->UpdateHardwareInstance != 0){\r
CapsuleHeader, // CapsuleGuid\r
Status, // CapsuleStatus\r
Index - FmpCapsuleHeader->EmbeddedDriverCount, // PayloadIndex\r
- ImageHeader // ImageHeader\r
+ ImageHeader, // ImageHeader\r
+ FmpDevicePath // FmpDevicePath\r
);\r
if (StatusRet != EFI_SUCCESS) {\r
StatusRet = Status;\r