mirror of
				https://git.proxmox.com/git/mirror_edk2
				synced 2025-11-04 09:12:31 +00:00 
			
		
		
		
	MdeModulePkg:Prevent the BmRepairAllControllers routine in an infinite loop
Prevent the BmRepairAllControllers routine in an infinite loop Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Gary Li <garyli@hpe.com> Reviewed-by: Ruiyu Ni <ruiyu.ni@intel.com> Reviewed-by: Liming Gao <liming.gao@intel.com>
This commit is contained in:
		
							parent
							
								
									5b03f1b514
								
							
						
					
					
						commit
						b34e446122
					
				@ -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;
 | 
			
		||||
 | 
			
		||||
@ -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
 | 
			
		||||
 | 
			
		||||
@ -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|0x00010076
 | 
			
		||||
 | 
			
		||||
[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.
 | 
			
		||||
 | 
			
		||||
@ -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>"
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user