mirror of https://github.com/acidanthera/audk.git
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
|
/** @file
|
||||||
Library functions which relates with driver health.
|
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>
|
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
|
This program and the accompanying materials
|
||||||
are licensed and made available under the terms and conditions of the BSD License
|
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
|
which accompanies this distribution. The full text of the license may be found at
|
||||||
|
@ -439,6 +440,8 @@ BmRepairAllControllers (
|
||||||
BOOLEAN RebootRequired;
|
BOOLEAN RebootRequired;
|
||||||
EFI_HII_HANDLE *HiiHandles;
|
EFI_HII_HANDLE *HiiHandles;
|
||||||
EFI_FORM_BROWSER2_PROTOCOL *FormBrowser2;
|
EFI_FORM_BROWSER2_PROTOCOL *FormBrowser2;
|
||||||
|
UINT32 MaxRepairCount;
|
||||||
|
UINT32 RepairCount;
|
||||||
|
|
||||||
//
|
//
|
||||||
// Configure PcdDriverHealthConfigureForm to ZeroGuid to disable driver health check.
|
// Configure PcdDriverHealthConfigureForm to ZeroGuid to disable driver health check.
|
||||||
|
@ -450,6 +453,9 @@ BmRepairAllControllers (
|
||||||
Status = gBS->LocateProtocol (&gEfiFormBrowser2ProtocolGuid, NULL, (VOID **) &FormBrowser2);
|
Status = gBS->LocateProtocol (&gEfiFormBrowser2ProtocolGuid, NULL, (VOID **) &FormBrowser2);
|
||||||
ASSERT_EFI_ERROR (Status);
|
ASSERT_EFI_ERROR (Status);
|
||||||
|
|
||||||
|
MaxRepairCount = PcdGet32 (PcdMaxRepairCount);
|
||||||
|
RepairCount = 0;
|
||||||
|
|
||||||
do {
|
do {
|
||||||
RepairRequired = FALSE;
|
RepairRequired = FALSE;
|
||||||
ConfigurationRequired = FALSE;
|
ConfigurationRequired = FALSE;
|
||||||
|
@ -512,7 +518,8 @@ BmRepairAllControllers (
|
||||||
}
|
}
|
||||||
|
|
||||||
EfiBootManagerFreeDriverHealthInfo (DriverHealthInfo, Count);
|
EfiBootManagerFreeDriverHealthInfo (DriverHealthInfo, Count);
|
||||||
} while (RepairRequired || ConfigurationRequired);
|
RepairCount++;
|
||||||
|
} while ((RepairRequired || ConfigurationRequired) && ((MaxRepairCount == 0) || (RepairCount < MaxRepairCount)));
|
||||||
|
|
||||||
RebootRequired = FALSE;
|
RebootRequired = FALSE;
|
||||||
ReconnectRequired = FALSE;
|
ReconnectRequired = FALSE;
|
||||||
|
|
|
@ -6,6 +6,7 @@
|
||||||
# manipulation, driver health checking and etc.
|
# manipulation, driver health checking and etc.
|
||||||
#
|
#
|
||||||
# Copyright (c) 2007 - 2016, Intel Corporation. All rights reserved.<BR>
|
# 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
|
# This program and the accompanying materials
|
||||||
# are licensed and made available under the terms and conditions of the BSD License
|
# 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
|
# which accompanies this distribution. The full text of the license may be found at
|
||||||
|
@ -117,4 +118,4 @@
|
||||||
gEfiMdeModulePkgTokenSpaceGuid.PcdErrorCodeSetVariable ## SOMETIMES_CONSUMES
|
gEfiMdeModulePkgTokenSpaceGuid.PcdErrorCodeSetVariable ## SOMETIMES_CONSUMES
|
||||||
gEfiMdeModulePkgTokenSpaceGuid.PcdBootManagerMenuFile ## CONSUMES
|
gEfiMdeModulePkgTokenSpaceGuid.PcdBootManagerMenuFile ## CONSUMES
|
||||||
gEfiMdeModulePkgTokenSpaceGuid.PcdDriverHealthConfigureForm ## SOMETIMES_CONSUMES
|
gEfiMdeModulePkgTokenSpaceGuid.PcdDriverHealthConfigureForm ## SOMETIMES_CONSUMES
|
||||||
|
gEfiMdeModulePkgTokenSpaceGuid.PcdMaxRepairCount ## CONSUMES
|
||||||
|
|
|
@ -1105,6 +1105,11 @@
|
||||||
# @Prompt Exposed ACPI table versions.
|
# @Prompt Exposed ACPI table versions.
|
||||||
gEfiMdeModulePkgTokenSpaceGuid.PcdAcpiExposedTableVersions|0x3E|UINT32|0x0001004c
|
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]
|
[PcdsPatchableInModule, PcdsDynamic, PcdsDynamicEx]
|
||||||
## This PCD defines the Console output row. The default value is 25 according to UEFI spec.
|
## 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.
|
# 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_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_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