Hi Ray, Thanks for your review. Could you please commit this change?
Regards, Gary Li Platform SW Engineering Servers Office: +886 (2) 8722 9977 -----Original Message----- From: Ni, Ruiyu [mailto:ruiyu...@intel.com] Sent: Friday, June 03, 2016 3:29 PM To: Li, Gary (HPS SW) <gar...@hpe.com> Cc: edk2-devel@lists.01.org; El-Haj-Mahmoud, Samer <samer.el-haj-mahm...@hpe.com> Subject: Re: [PATCH v2] MdeModulePkg:Prevent the BmRepairAllControllers routine in an infinite loop I am ok for the code logic. Reviewed-by: ruiyu...@intel.com Thanks, Ray > 在 2016年6月3日,下午3:23,Gary Li <gar...@hpe.com> 写道: > > Prevent the BmRepairAllControllers routine in an infinite loop > > Contributed-under: TianoCore Contribution Agreement 1.0 > > Signed-off-by: Gary Li <gar...@hpe.com> > --- > MdeModulePkg/Library/UefiBootManagerLib/BmDriverHealth.c | 11 +++++++++-- > .../Library/UefiBootManagerLib/UefiBootManagerLib.inf | 3 ++- > MdeModulePkg/MdeModulePkg.dec | 5 +++++ > MdeModulePkg/MdeModulePkg.uni | 4 ++++ > 4 files changed, 20 insertions(+), 3 deletions(-) > > diff --git a/MdeModulePkg/Library/UefiBootManagerLib/BmDriverHealth.c > b/MdeModulePkg/Library/UefiBootManagerLib/BmDriverHealth.c > index bffbeda..1e68cbc 100644 > --- a/MdeModulePkg/Library/UefiBootManagerLib/BmDriverHealth.c > +++ b/MdeModulePkg/Library/UefiBootManagerLib/BmDriverHealth.c > @@ -1,8 +1,9 @@ > /** @file > Library functions which relates with driver health. > > -(C) Copyright 2015 Hewlett-Packard Development Company, L.P.<BR> > Copyright (c) 2011 - 2015, Intel Corporation. All rights reserved.<BR> > +(C) Copyright 2015 Hewlett-Packard Development Company, L.P.<BR> > +(C) Copyright 2016 Hewlett Packard Enterprise Development LP<BR> > This program and the accompanying materials are licensed and made > available under the terms and conditions of the BSD License which > accompanies this distribution. The full text of the license may be > found at @@ -439,6 +440,8 @@ BmRepairAllControllers ( > BOOLEAN RebootRequired; > EFI_HII_HANDLE *HiiHandles; > EFI_FORM_BROWSER2_PROTOCOL *FormBrowser2; > + UINT32 MaxRepairCount; > + UINT32 RepairCount; > > // > // Configure PcdDriverHealthConfigureForm to ZeroGuid to disable driver > health check. > @@ -450,6 +453,9 @@ BmRepairAllControllers ( > Status = gBS->LocateProtocol (&gEfiFormBrowser2ProtocolGuid, NULL, (VOID > **) &FormBrowser2); > ASSERT_EFI_ERROR (Status); > > + MaxRepairCount = PcdGet32 (PcdMaxRepairCount); RepairCount = 0; > + > do { > RepairRequired = FALSE; > ConfigurationRequired = FALSE; > @@ -512,7 +518,8 @@ BmRepairAllControllers ( > } > > EfiBootManagerFreeDriverHealthInfo (DriverHealthInfo, Count); > - } while (RepairRequired || ConfigurationRequired); > + RepairCount++; > + } while ((RepairRequired || ConfigurationRequired) && > + ((MaxRepairCount == 0) || (RepairCount < MaxRepairCount))); > > RebootRequired = FALSE; > ReconnectRequired = FALSE; > diff --git > a/MdeModulePkg/Library/UefiBootManagerLib/UefiBootManagerLib.inf > b/MdeModulePkg/Library/UefiBootManagerLib/UefiBootManagerLib.inf > index 9d62d3d..078f272 100644 > --- a/MdeModulePkg/Library/UefiBootManagerLib/UefiBootManagerLib.inf > +++ b/MdeModulePkg/Library/UefiBootManagerLib/UefiBootManagerLib.inf > @@ -6,6 +6,7 @@ > # manipulation, driver health checking and etc. > # > # Copyright (c) 2007 - 2016, Intel Corporation. All rights > reserved.<BR> > +# (C) Copyright 2016 Hewlett Packard Enterprise Development LP<BR> > # This program and the accompanying materials # are licensed and > made available under the terms and conditions of the BSD License # > which accompanies this distribution. The full text of the license may > be found at @@ -117,4 +118,4 @@ > gEfiMdeModulePkgTokenSpaceGuid.PcdErrorCodeSetVariable > ## SOMETIMES_CONSUMES > gEfiMdeModulePkgTokenSpaceGuid.PcdBootManagerMenuFile > ## CONSUMES > gEfiMdeModulePkgTokenSpaceGuid.PcdDriverHealthConfigureForm > ## SOMETIMES_CONSUMES > - > + gEfiMdeModulePkgTokenSpaceGuid.PcdMaxRepairCount > ## CONSUMES > diff --git a/MdeModulePkg/MdeModulePkg.dec > b/MdeModulePkg/MdeModulePkg.dec index a133824..27efb37 100644 > --- a/MdeModulePkg/MdeModulePkg.dec > +++ b/MdeModulePkg/MdeModulePkg.dec > @@ -1105,6 +1105,11 @@ > # @Prompt Exposed ACPI table versions. > > gEfiMdeModulePkgTokenSpaceGuid.PcdAcpiExposedTableVersions|0x3E|UINT32 > |0x0001004c > > + ## This PCD defines the MAX repair count. > + # The default value is 0 that means infinite. > + # @Prompt MAX repair count > + > + gEfiMdeModulePkgTokenSpaceGuid.PcdMaxRepairCount|0x00|UINT32|0x00010 > + 076 > + > [PcdsPatchableInModule, PcdsDynamic, PcdsDynamicEx] > ## This PCD defines the Console output row. The default value is 25 > according to UEFI spec. > # This PCD could be set to 0 then console output would be at max column > and max row. > diff --git a/MdeModulePkg/MdeModulePkg.uni > b/MdeModulePkg/MdeModulePkg.uni index 346f735..f529dce 100644 > --- a/MdeModulePkg/MdeModulePkg.uni > +++ b/MdeModulePkg/MdeModulePkg.uni > @@ -978,3 +978,7 @@ > #string > STR_gEfiMdeModulePkgTokenSpaceGuid_PcdSdMmcPciHostControllerMmioBase_PROMPT > #language en-US "Mmio base address of pci-based SD/MMC host controller" > > #string > STR_gEfiMdeModulePkgTokenSpaceGuid_PcdSdMmcPciHostControllerMmioBase_HELP > #language en-US "This PCD specifies the PCI-based SD/MMC host controller mmio > base address. Define the mmio base address of the pci-based SD/MMC host > controller. If there are multiple SD/MMC host controllers, their mmio base > addresses are calculated one by one from this base address.<BR>" > + > +#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdMaxRepairCount_PROMPT > #language en-US "MAX repair count" > + > +#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdMaxRepairCount_HELP #language > en-US "This PCD defines the MAX repair count. The default value is 0 that > means infinite.<BR>" > -- > 2.7.2.windows.1 > _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel