diff options
author | Linus Liu <linus.liu@intel.com> | 2024-10-02 18:49:56 -0700 |
---|---|---|
committer | mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> | 2024-10-08 02:30:21 +0000 |
commit | 550c38a29961ab1c9cc4f9a17cdd3346566c4bef (patch) | |
tree | ed9312105a2ec3ed845b0c8151c5065987ac9aaf | |
parent | 2ee050d1d5bdc071f01ae66ce886c35ebf36b27e (diff) | |
download | edk2-550c38a29961ab1c9cc4f9a17cdd3346566c4bef.tar.gz edk2-550c38a29961ab1c9cc4f9a17cdd3346566c4bef.tar.bz2 edk2-550c38a29961ab1c9cc4f9a17cdd3346566c4bef.zip |
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>
-rw-r--r-- | UefiPayloadPkg/PayloadLoaderPeim/FitPayloadLoaderPeim.c | 43 |
1 files changed, 42 insertions, 1 deletions
diff --git a/UefiPayloadPkg/PayloadLoaderPeim/FitPayloadLoaderPeim.c b/UefiPayloadPkg/PayloadLoaderPeim/FitPayloadLoaderPeim.c index 72586dbcaa..7885a52fed 100644 --- a/UefiPayloadPkg/PayloadLoaderPeim/FitPayloadLoaderPeim.c +++ b/UefiPayloadPkg/PayloadLoaderPeim/FitPayloadLoaderPeim.c @@ -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;
|