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

