@@ -427,6 +427,42 @@ ReportVersions (
427427 }
428428}
429429
430+ STATIC
431+ CONST EFI_GUID *
432+ GetFirstPayloadFwClass (
433+ IN CONST CapsuleResult * Capsule
434+ )
435+ {
436+ UINTN PayloadIdx ;
437+ UINTN ItemCount ;
438+ EFI_CAPSULE_HEADER * Header ;
439+ EFI_FIRMWARE_MANAGEMENT_CAPSULE_HEADER * FmpHdr ;
440+ EFI_FIRMWARE_MANAGEMENT_CAPSULE_IMAGE_HEADER * FmpImageHdr ;
441+ UINT64 * ItemOffsetList ;
442+
443+ Header = Capsule -> Header ;
444+ if (!IsFmpCapsule (Header )) {
445+ return NULL ;
446+ }
447+
448+ // An FMP capsule can be nested which is checked for in IsFmpCapsule().
449+ if (!IsFmpCapsuleGuid (& Header -> CapsuleGuid )) {
450+ Header = (VOID * )((UINT8 * )Header + Header -> HeaderSize );
451+ }
452+
453+ FmpHdr = (VOID * )((UINT8 * )Header + Header -> HeaderSize );
454+ ItemCount = FmpHdr -> EmbeddedDriverCount + FmpHdr -> PayloadItemCount ;
455+ ItemOffsetList = (UINT64 * )& FmpHdr [1 ];
456+
457+ PayloadIdx = FmpHdr -> EmbeddedDriverCount ;
458+ if (PayloadIdx < ItemCount ) {
459+ FmpImageHdr = (VOID * )((UINT8 * )FmpHdr + ItemOffsetList [PayloadIdx ]);
460+ return & FmpImageHdr -> UpdateImageTypeId ;
461+ }
462+
463+ return NULL ;
464+ }
465+
430466STATIC
431467VOID
432468EFIAPI
@@ -439,6 +475,7 @@ ReportResults (
439475 UINTN PayloadIdx ;
440476 CONST CapsuleResult * Capsule ;
441477 CONST PayloadResult * Payload ;
478+ CONST EFI_GUID * FwClass ;
442479
443480 for (CapsuleIdx = 0 ; CapsuleIdx < Report -> CapsuleCount ; ++ CapsuleIdx ) {
444481 Capsule = & Report -> Capsules [CapsuleIdx ];
@@ -451,9 +488,19 @@ ReportResults (
451488 if (Report -> CapsuleCount > 1 ) {
452489 AddFullLineF (PopUp , L"Capsule #%d" , Capsule -> Index + 1 );
453490 }
454- AddFullLineF (PopUp , L"- Result: %s" , OutcomeToString (Capsule -> Outcome ));
455- if (Capsule -> Status != EFI_SUCCESS ) {
456- AddFullLineF (PopUp , L"- Status: %r" , Capsule -> Status );
491+
492+ // Can print GUIDs of all payloads if we'll ever use such capsules.
493+ FwClass = GetFirstPayloadFwClass (Capsule );
494+ if (FwClass == NULL ) {
495+ AddFullLine (PopUp , L"- GUID: unknown" );
496+ } else {
497+ AddFullLineF (PopUp , L"- GUID: %g" , FwClass );
498+ }
499+
500+ if (Capsule -> Status == EFI_SUCCESS ) {
501+ AddFullLineF (PopUp , L"- Result: %s" , OutcomeToString (Capsule -> Outcome ));
502+ } else {
503+ AddFullLineF (PopUp , L"- Result: %s (error: %r)" , OutcomeToString (Capsule -> Outcome ), Capsule -> Status );
457504 }
458505
459506 for (PayloadIdx = 0 ; PayloadIdx < Capsule -> PayloadCount ; ++ PayloadIdx ) {
0 commit comments