On 24 July 2018 at 09:08, Ming Huang <[email protected]> wrote:
> From: Sun Yuanchen <[email protected]>
>
> according as watchdog design on D06, watchdog should be
> stoped befor boot a option.
>

Why? The DXE core already handles the watchdog, why do you need
something special here?

> 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>
>  #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
> +  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
>    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

Reply via email to