On Tue, Jul 24, 2018 at 03:08:56PM +0800, Ming Huang wrote:
From: Sun Yuanchen sunyuanchen@huawei.com
according as watchdog design on D06, watchdog should be stoped befor boot a option.
stopped before
Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Wang Yue wangyue41@huawei.com Signed-off-by: Ming Huang ming.huang@linaro.org Signed-off-by: Heyi Guo heyi.guo@linaro.org
Silicon/Hisilicon/Include/Library/IpmiCmdLib.h | 16 ++++++++++++++ Silicon/Hisilicon/Library/PlatformBootManagerLib/PlatformBm.c | 22 ++++++++++++++++++++ Silicon/Hisilicon/Library/PlatformBootManagerLib/PlatformBootManagerLib.inf | 2 ++ 3 files changed, 40 insertions(+)
diff --git a/Silicon/Hisilicon/Include/Library/IpmiCmdLib.h b/Silicon/Hisilicon/Include/Library/IpmiCmdLib.h index 8868b76135..b956ee6d07 100644 --- a/Silicon/Hisilicon/Include/Library/IpmiCmdLib.h +++ b/Silicon/Hisilicon/Include/Library/IpmiCmdLib.h @@ -19,6 +19,17 @@ #define BOOT_OPTION_BOOT_FLAG_VALID 1 #define BOOT_OPTION_BOOT_FLAG_INVALID 0 +typedef enum {
- EfiReserved,
- EfiBiosFrb2,
- EfiBiosPost,
- EfiOsLoad,
- EfiSmsOs,
- EfiOem,
- EfiFrbReserved1,
- EfiFrbReserved2
+} EFI_WDT_USER_TYPE;
typedef enum { NoOverride = 0x0, ForcePxe, @@ -91,4 +102,9 @@ IpmiCmdGetSysBootOptions ( IN IPMI_GET_BOOT_OPTION *BootOption ); +EFI_STATUS +IpmiCmdStopWatchdogTimer (
- IN EFI_WDT_USER_TYPE UserType
- );
#endif diff --git a/Silicon/Hisilicon/Library/PlatformBootManagerLib/PlatformBm.c b/Silicon/Hisilicon/Library/PlatformBootManagerLib/PlatformBm.c index f7536bfea3..9636f29dce 100644 --- a/Silicon/Hisilicon/Library/PlatformBootManagerLib/PlatformBm.c +++ b/Silicon/Hisilicon/Library/PlatformBootManagerLib/PlatformBm.c @@ -19,8 +19,10 @@ #include <Library/BootLogoLib.h> #include <Library/BmcConfigBootLib.h> #include <Library/DevicePathLib.h> +#include <Library/OemConfigData.h> #include <Library/PcdLib.h> #include <Library/TimerLib.h> +#include <Library/IpmiCmdLib.h>
Please put this line after Library/DevicePathLib.h.
#include <Library/UefiBootManagerLib.h> #include <Library/UefiLib.h> #include <Protocol/DevicePath.h> @@ -615,6 +617,8 @@ PlatformBootManagerAfterConsole ( { EFI_STATUS Status; ESRT_MANAGEMENT_PROTOCOL *EsrtManagement = NULL;
- OEM_CONFIG_DATA SetupData;
- UINTN DataSize = sizeof (OEM_CONFIG_DATA);
// // Show the splash screen. @@ -651,6 +655,24 @@ PlatformBootManagerAfterConsole ( ); HandleBmcBootType ();
- //Disable POST Watch Dog before enter setup
Before entering setup (as stated here) or before attempting boot (as stated in commit message)?
- Status = gRT->GetVariable (
OEM_CONFIG_NAME,
&gOemConfigGuid,
NULL,
&DataSize,
&SetupData
);
- if (!EFI_ERROR (Status)) {
- if (SetupData.BmcWdtEnable) {
Status = IpmiCmdStopWatchdogTimer (EfiBiosPost);
if (EFI_ERROR (Status)) {
DEBUG ((DEBUG_ERROR, "%a:%r\n", __FUNCTION__, Status));
}
- }
- }
} /** diff --git a/Silicon/Hisilicon/Library/PlatformBootManagerLib/PlatformBootManagerLib.inf b/Silicon/Hisilicon/Library/PlatformBootManagerLib/PlatformBootManagerLib.inf index a093f13fb0..21afb53fc5 100644 --- a/Silicon/Hisilicon/Library/PlatformBootManagerLib/PlatformBootManagerLib.inf +++ b/Silicon/Hisilicon/Library/PlatformBootManagerLib/PlatformBootManagerLib.inf @@ -47,6 +47,7 @@ DevicePathLib DxeServicesLib MemoryAllocationLib
- IpmiCmdLib
Please move up one line.
/ Leif
PcdLib PrintLib TimerLib @@ -69,6 +70,7 @@ gEfiEndOfDxeEventGroupGuid gEfiTtyTermGuid gHisiOemVariableGuid
- gOemConfigGuid
[Protocols] gEfiGenericMemTestProtocolGuid -- 2.17.0