在 8/3/2018 6:28 PM, Leif Lindholm 写道:
> On Tue, Jul 24, 2018 at 03:08:56PM +0800, Ming Huang wrote:
>> From: Sun Yuanchen <[email protected]>
>>
>> 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 <[email protected]>
>> Signed-off-by: Ming Huang <[email protected]>
>> Signed-off-by: Heyi Guo <[email protected]>
>> ---
>> 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)?
>
Before attempting boot
>> + 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
>
All comments will be apply.
Thanks.
Ming
>> PcdLib
>> PrintLib
>> TimerLib
>> @@ -69,6 +70,7 @@
>> gEfiEndOfDxeEventGroupGuid
>> gEfiTtyTermGuid
>> gHisiOemVariableGuid
>> + gOemConfigGuid
>>
>> [Protocols]
>> gEfiGenericMemTestProtocolGuid
>> --
>> 2.17.0
>>
_______________________________________________
edk2-devel mailing list
[email protected]
https://lists.01.org/mailman/listinfo/edk2-devel