UefiPayloadPkg : Roll back the sequence of gEfiEndOfPeiSignalPpiGuid.

Adjust the sequence of gEfiEndOfPeiSignalPpiGuid notify function
when FDT is disabled , or some of notify functions won't work
cause the debug message print twice.

Signed-off-by: Linus Liu <linus.liu@intel.com>
This commit is contained in:
Linus Liu 2024-10-02 18:49:56 -07:00 committed by mergify[bot]
parent 2ee050d1d5
commit 550c38a299

View File

@ -35,6 +35,43 @@ EFI_PEI_PPI_DESCRIPTOR mEndOfPeiSignalPpi = {
NULL
};
#if (FixedPcdGetBool (PcdHandOffFdtEnable) == 0)
/**
Notify ReadyToPayLoad signal.
@param[in] PeiServices An indirect pointer to the EFI_PEI_SERVICES table published by the PEI Foundation.
@param[in] NotifyDescriptor Address of the notification descriptor data structure.
@param[in] Ppi Address of the PPI that was installed.
@retval EFI_SUCCESS Hobs data is discovered.
@return Others No Hobs data is discovered.
**/
EFI_STATUS
EFIAPI
EndOfPeiPpiNotifyCallback (
IN EFI_PEI_SERVICES **PeiServices,
IN EFI_PEI_NOTIFY_DESCRIPTOR *NotifyDescriptor,
IN VOID *Ppi
)
{
EFI_STATUS Status;
//
// Ready to Payload phase signal
//
Status = PeiServicesInstallPpi (&gReadyToPayloadSignalPpi);
return Status;
}
EFI_PEI_NOTIFY_DESCRIPTOR mEndOfPeiNotifyList[] = {
{
(EFI_PEI_PPI_DESCRIPTOR_NOTIFY_CALLBACK | EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST),
&gEfiEndOfPeiSignalPpiGuid,
EndOfPeiPpiNotifyCallback
}
};
#endif
/**
The wrapper function of PeiLoadImageLoadImage().
@param This - Pointer to EFI_PEI_LOAD_FILE_PPI.
@ -144,13 +181,14 @@ PeiLoadFileLoadPayload (
*ImageSizeArg = Context.PayloadSize;
*EntryPoint = Context.PayloadEntryPoint;
#if (FixedPcdGetBool (PcdHandOffFdtEnable))
Status = PeiServicesInstallPpi (&mEndOfPeiSignalPpi);
ASSERT_EFI_ERROR (Status);
Status = PeiServicesInstallPpi (&gReadyToPayloadSignalPpi);
ASSERT_EFI_ERROR (Status);
#if (FixedPcdGetBool (PcdHandOffFdtEnable))
Hob = GetFirstGuidHob (&gUniversalPayloadDeviceTreeGuid);
if (Hob != NULL) {
Fdt = (UNIVERSAL_PAYLOAD_DEVICE_TREE *)GET_GUID_HOB_DATA (Hob);
@ -178,6 +216,9 @@ PeiLoadFileLoadPayload (
NULL,
TopOfStack
);
#else
Status = PeiServicesNotifyPpi (&mEndOfPeiNotifyList[0]);
ASSERT_EFI_ERROR (Status);
#endif
return EFI_SUCCESS;