mirror of https://github.com/acidanthera/audk.git
IntelFsp2Pkg-BaseFspCommonLib: Add funtion to return the reset required status
Added new funtion in FSPCommonLib to update the FSP API return status with the requested return status and return the control to the boot loader. Cc: Giri P Mudusuru <giri.p.mudusuru@intel.com> Cc: Jiewen Yao <jiewen.yao@intel.com> Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Satya Yarlagadda <satya.p.yarlagadda@intel.com> Reviewed-by: Giri P Mudusuru <giri.p.mudusuru@intel.com> Reviewed-by: Jiewen Yao <jiewen.yao@intel.com>
This commit is contained in:
parent
fda7cd4f25
commit
6b5677e1bb
|
@ -309,4 +309,15 @@ GetFspCarSize (
|
|||
VOID
|
||||
);
|
||||
|
||||
/**
|
||||
This function updates the return status of the FSP API with requested reset type and returns to Boot Loader.
|
||||
|
||||
@param[in] FspResetType Reset type that needs to returned as API return status
|
||||
|
||||
**/
|
||||
VOID
|
||||
EFIAPI
|
||||
FspApiReturnStatusReset (
|
||||
IN UINT32 FspResetType
|
||||
);
|
||||
#endif
|
||||
|
|
|
@ -28,6 +28,7 @@
|
|||
|
||||
[LibraryClasses]
|
||||
BaseMemoryLib
|
||||
FspSwitchStackLib
|
||||
|
||||
[Pcd]
|
||||
gIntelFsp2PkgTokenSpaceGuid.PcdGlobalDataPointerAddress ## CONSUMES
|
||||
|
|
|
@ -18,6 +18,7 @@
|
|||
#include <FspGlobalData.h>
|
||||
#include <FspEas.h>
|
||||
#include <FspDataTable.h>
|
||||
#include <Library/FspSwitchStackLib.h>
|
||||
|
||||
#pragma pack(1)
|
||||
|
||||
|
@ -544,3 +545,31 @@ GetFspCarSize (
|
|||
}
|
||||
return CarSize;
|
||||
}
|
||||
|
||||
/**
|
||||
This function updates the return status of the FSP API with requested reset type and returns to Boot Loader.
|
||||
|
||||
@param[in] FspResetType Reset type that needs to returned as API return status
|
||||
|
||||
**/
|
||||
VOID
|
||||
EFIAPI
|
||||
FspApiReturnStatusReset (
|
||||
IN UINT32 FspResetType
|
||||
)
|
||||
{
|
||||
volatile BOOLEAN LoopUntilReset;
|
||||
|
||||
LoopUntilReset = TRUE;
|
||||
DEBUG ((DEBUG_INFO, "FSP returning control to Bootloader with reset required return status %x\n",FspResetType));
|
||||
///
|
||||
/// Below code is not an infinite loop.The control will go back to API calling function in BootLoader each time BootLoader
|
||||
/// calls the FSP API without honoring the reset request by FSP
|
||||
///
|
||||
do {
|
||||
SetFspApiReturnStatus ((EFI_STATUS)FspResetType);
|
||||
Pei2LoaderSwitchStack ();
|
||||
DEBUG ((DEBUG_ERROR, "!!!ERROR: FSP has requested BootLoader for reset. But BootLoader has not honored the reset\n"));
|
||||
DEBUG ((DEBUG_ERROR, "!!!ERROR: Please add support in BootLoader to honour the reset request from FSP\n"));
|
||||
} while (LoopUntilReset);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue