#include "InternalBm.h"\r
\r
GLOBAL_REMOVE_IF_UNREFERENCED\r
- CHAR16 *mBmHealthStatusText[] = {\r
- L"Healthy",\r
- L"Repair Required",\r
- L"Configuration Required",\r
- L"Failed",\r
- L"Reconnect Required",\r
- L"Reboot Required"\r
- };\r
+CHAR16 *mBmHealthStatusText[] = {\r
+ L"Healthy",\r
+ L"Repair Required",\r
+ L"Configuration Required",\r
+ L"Failed",\r
+ L"Reconnect Required",\r
+ L"Reboot Required"\r
+};\r
\r
/**\r
Return the controller name.\r
**/\r
CHAR16 *\r
BmGetControllerName (\r
- IN EFI_HANDLE DriverHealthHandle,\r
- IN EFI_HANDLE ControllerHandle,\r
- IN EFI_HANDLE ChildHandle\r
+ IN EFI_HANDLE DriverHealthHandle,\r
+ IN EFI_HANDLE ControllerHandle,\r
+ IN EFI_HANDLE ChildHandle\r
)\r
{\r
- EFI_STATUS Status;\r
- CHAR16 *ControllerName;\r
- CHAR8 *LanguageVariable;\r
- CHAR8 *BestLanguage;\r
- BOOLEAN Iso639Language;\r
- EFI_COMPONENT_NAME_PROTOCOL *ComponentName;\r
+ EFI_STATUS Status;\r
+ CHAR16 *ControllerName;\r
+ CHAR8 *LanguageVariable;\r
+ CHAR8 *BestLanguage;\r
+ BOOLEAN Iso639Language;\r
+ EFI_COMPONENT_NAME_PROTOCOL *ComponentName;\r
\r
ControllerName = NULL;\r
\r
// Locate Component Name (2) protocol on the driver binging handle.\r
//\r
Iso639Language = FALSE;\r
- Status = gBS->HandleProtocol (\r
- DriverHealthHandle,\r
- &gEfiComponentName2ProtocolGuid,\r
- (VOID **) &ComponentName\r
- );\r
+ Status = gBS->HandleProtocol (\r
+ DriverHealthHandle,\r
+ &gEfiComponentName2ProtocolGuid,\r
+ (VOID **)&ComponentName\r
+ );\r
if (EFI_ERROR (Status)) {\r
Status = gBS->HandleProtocol (\r
DriverHealthHandle,\r
&gEfiComponentNameProtocolGuid,\r
- (VOID **) &ComponentName\r
+ (VOID **)&ComponentName\r
);\r
if (!EFI_ERROR (Status)) {\r
Iso639Language = TRUE;\r
}\r
\r
if (!EFI_ERROR (Status)) {\r
- GetEfiGlobalVariable2 (Iso639Language ? L"Lang" : L"PlatformLang", (VOID**)&LanguageVariable, NULL);\r
- BestLanguage = GetBestLanguage(\r
- ComponentName->SupportedLanguages,\r
- Iso639Language,\r
- (LanguageVariable != NULL) ? LanguageVariable : "",\r
- Iso639Language ? "eng" : "en-US",\r
- NULL\r
- );\r
+ GetEfiGlobalVariable2 (Iso639Language ? L"Lang" : L"PlatformLang", (VOID **)&LanguageVariable, NULL);\r
+ BestLanguage = GetBestLanguage (\r
+ ComponentName->SupportedLanguages,\r
+ Iso639Language,\r
+ (LanguageVariable != NULL) ? LanguageVariable : "",\r
+ Iso639Language ? "eng" : "en-US",\r
+ NULL\r
+ );\r
if (LanguageVariable != NULL) {\r
FreePool (LanguageVariable);\r
}\r
**/\r
VOID\r
BmDisplayMessages (\r
- IN EFI_BOOT_MANAGER_DRIVER_HEALTH_INFO *DriverHealthInfo\r
+ IN EFI_BOOT_MANAGER_DRIVER_HEALTH_INFO *DriverHealthInfo\r
)\r
{\r
- UINTN Index;\r
- EFI_STRING String;\r
- CHAR16 *ControllerName;\r
+ UINTN Index;\r
+ EFI_STRING String;\r
+ CHAR16 *ControllerName;\r
\r
- if (DriverHealthInfo->MessageList == NULL ||\r
- DriverHealthInfo->MessageList[0].HiiHandle == NULL) {\r
+ if ((DriverHealthInfo->MessageList == NULL) ||\r
+ (DriverHealthInfo->MessageList[0].HiiHandle == NULL))\r
+ {\r
return;\r
}\r
\r
EFI_STATUS\r
EFIAPI\r
BmRepairNotify (\r
- IN UINTN Value,\r
- IN UINTN Limit\r
+ IN UINTN Value,\r
+ IN UINTN Limit\r
)\r
{\r
DEBUG ((DEBUG_INFO, "[BDS]RepairNotify: %d/%d\n", Value, Limit));\r
**/\r
EFI_STATUS\r
BmGetSingleControllerHealthStatus (\r
- IN OUT EFI_BOOT_MANAGER_DRIVER_HEALTH_INFO **DriverHealthInfo,\r
- IN OUT UINTN *Count,\r
- IN EFI_HANDLE DriverHealthHandle,\r
- IN EFI_HANDLE ControllerHandle OPTIONAL,\r
- IN EFI_HANDLE ChildHandle OPTIONAL\r
+ IN OUT EFI_BOOT_MANAGER_DRIVER_HEALTH_INFO **DriverHealthInfo,\r
+ IN OUT UINTN *Count,\r
+ IN EFI_HANDLE DriverHealthHandle,\r
+ IN EFI_HANDLE ControllerHandle OPTIONAL,\r
+ IN EFI_HANDLE ChildHandle OPTIONAL\r
)\r
{\r
EFI_STATUS Status;\r
Status = gBS->HandleProtocol (\r
DriverHealthHandle,\r
&gEfiDriverHealthProtocolGuid,\r
- (VOID **) &DriverHealth\r
+ (VOID **)&DriverHealth\r
);\r
ASSERT_EFI_ERROR (Status);\r
\r
-\r
if (ControllerHandle == NULL) {\r
//\r
// If ControllerHandle is NULL, the return the cumulative health status of the driver\r
//\r
Status = DriverHealth->GetHealthStatus (DriverHealth, NULL, NULL, &HealthStatus, NULL, NULL);\r
- if (!EFI_ERROR (Status) && HealthStatus == EfiDriverHealthStatusHealthy) {\r
+ if (!EFI_ERROR (Status) && (HealthStatus == EfiDriverHealthStatusHealthy)) {\r
*DriverHealthInfo = ReallocatePool (\r
(*Count) * sizeof (EFI_BOOT_MANAGER_DRIVER_HEALTH_INFO),\r
(*Count + 1) * sizeof (EFI_BOOT_MANAGER_DRIVER_HEALTH_INFO),\r
\r
Status = EFI_ABORTED;\r
}\r
+\r
return Status;\r
}\r
\r
EFI_BOOT_MANAGER_DRIVER_HEALTH_INFO *\r
EFIAPI\r
EfiBootManagerGetDriverHealthInfo (\r
- UINTN *Count\r
+ UINTN *Count\r
)\r
{\r
- EFI_STATUS Status;\r
- UINTN NumHandles;\r
- EFI_HANDLE *DriverHealthHandles;\r
- UINTN DriverHealthIndex;\r
- EFI_HANDLE *Handles;\r
- UINTN HandleCount;\r
- UINTN ControllerIndex;\r
- UINTN ChildIndex;\r
+ EFI_STATUS Status;\r
+ UINTN NumHandles;\r
+ EFI_HANDLE *DriverHealthHandles;\r
+ UINTN DriverHealthIndex;\r
+ EFI_HANDLE *Handles;\r
+ UINTN HandleCount;\r
+ UINTN ControllerIndex;\r
+ UINTN ChildIndex;\r
EFI_BOOT_MANAGER_DRIVER_HEALTH_INFO *DriverHealthInfo;\r
\r
//\r
// Initialize local variables\r
//\r
- *Count = 0;\r
- DriverHealthInfo = NULL;\r
- Handles = NULL;\r
- DriverHealthHandles = NULL;\r
- NumHandles = 0;\r
- HandleCount = 0;\r
+ *Count = 0;\r
+ DriverHealthInfo = NULL;\r
+ Handles = NULL;\r
+ DriverHealthHandles = NULL;\r
+ NumHandles = 0;\r
+ HandleCount = 0;\r
\r
Status = gBS->LocateHandleBuffer (\r
ByProtocol,\r
&DriverHealthHandles\r
);\r
\r
- if (Status == EFI_NOT_FOUND || NumHandles == 0) {\r
+ if ((Status == EFI_NOT_FOUND) || (NumHandles == 0)) {\r
//\r
// If there are no Driver Health Protocols handles, then return EFI_NOT_FOUND\r
//\r
// Retrieve the list of all handles from the handle database\r
//\r
Status = gBS->LocateHandleBuffer (\r
- AllHandles,\r
- NULL,\r
- NULL,\r
- &HandleCount,\r
- &Handles\r
- );\r
+ AllHandles,\r
+ NULL,\r
+ NULL,\r
+ &HandleCount,\r
+ &Handles\r
+ );\r
ASSERT_EFI_ERROR (Status);\r
}\r
+\r
//\r
// Loop through all the controller handles in the handle database\r
//\r
if (Handles != NULL) {\r
FreePool (Handles);\r
}\r
+\r
if (DriverHealthHandles != NULL) {\r
FreePool (DriverHealthHandles);\r
}\r
EFI_STATUS\r
EFIAPI\r
EfiBootManagerFreeDriverHealthInfo (\r
- EFI_BOOT_MANAGER_DRIVER_HEALTH_INFO *DriverHealthInfo,\r
- UINTN Count\r
+ EFI_BOOT_MANAGER_DRIVER_HEALTH_INFO *DriverHealthInfo,\r
+ UINTN Count\r
)\r
{\r
- UINTN Index;\r
+ UINTN Index;\r
\r
for (Index = 0; Index < Count; Index++) {\r
if (DriverHealthInfo[Index].MessageList != NULL) {\r
FreePool (DriverHealthInfo[Index].MessageList);\r
}\r
}\r
+\r
return gBS->FreePool (DriverHealthInfo);\r
}\r
\r
**/\r
VOID\r
BmRepairAllControllers (\r
- UINTN ReconnectRepairCount\r
+ UINTN ReconnectRepairCount\r
)\r
{\r
- EFI_STATUS Status;\r
- EFI_BOOT_MANAGER_DRIVER_HEALTH_INFO *DriverHealthInfo;\r
- EFI_DRIVER_HEALTH_STATUS HealthStatus;\r
- UINTN Count;\r
- UINTN Index;\r
- BOOLEAN RepairRequired;\r
- BOOLEAN ConfigurationRequired;\r
- BOOLEAN ReconnectRequired;\r
- BOOLEAN RebootRequired;\r
- EFI_HII_HANDLE *HiiHandles;\r
- EFI_FORM_BROWSER2_PROTOCOL *FormBrowser2;\r
- UINT32 MaxRepairCount;\r
- UINT32 RepairCount;\r
+ EFI_STATUS Status;\r
+ EFI_BOOT_MANAGER_DRIVER_HEALTH_INFO *DriverHealthInfo;\r
+ EFI_DRIVER_HEALTH_STATUS HealthStatus;\r
+ UINTN Count;\r
+ UINTN Index;\r
+ BOOLEAN RepairRequired;\r
+ BOOLEAN ConfigurationRequired;\r
+ BOOLEAN ReconnectRequired;\r
+ BOOLEAN RebootRequired;\r
+ EFI_HII_HANDLE *HiiHandles;\r
+ EFI_FORM_BROWSER2_PROTOCOL *FormBrowser2;\r
+ UINT32 MaxRepairCount;\r
+ UINT32 RepairCount;\r
\r
//\r
// Configure PcdDriverHealthConfigureForm to ZeroGuid to disable driver health check.\r
return;\r
}\r
\r
- Status = gBS->LocateProtocol (&gEfiFormBrowser2ProtocolGuid, NULL, (VOID **) &FormBrowser2);\r
+ Status = gBS->LocateProtocol (&gEfiFormBrowser2ProtocolGuid, NULL, (VOID **)&FormBrowser2);\r
ASSERT_EFI_ERROR (Status);\r
\r
MaxRepairCount = PcdGet32 (PcdMaxRepairCount);\r
- RepairCount = 0;\r
+ RepairCount = 0;\r
\r
do {\r
RepairRequired = FALSE;\r
}\r
\r
if (DriverHealthInfo[Index].HealthStatus == EfiDriverHealthStatusRepairRequired) {\r
- RepairRequired = TRUE;\r
+ RepairRequired = TRUE;\r
\r
BmDisplayMessages (&DriverHealthInfo[Index]);\r
\r
break;\r
}\r
}\r
+\r
FreePool (HiiHandles);\r
}\r
}\r
ReconnectRequired = FALSE;\r
DriverHealthInfo = EfiBootManagerGetDriverHealthInfo (&Count);\r
for (Index = 0; Index < Count; Index++) {\r
-\r
BmDisplayMessages (&DriverHealthInfo[Index]);\r
\r
if (DriverHealthInfo[Index].HealthStatus == EfiDriverHealthStatusReconnectRequired) {\r
//\r
// Disconnect failed. Need to promote reconnect to a reboot.\r
//\r
- RebootRequired = TRUE;\r
+ RebootRequired = TRUE;\r
} else {\r
gBS->ConnectController (DriverHealthInfo[Index].ControllerHandle, NULL, NULL, TRUE);\r
ReconnectRequired = TRUE;\r
}\r
\r
if (DriverHealthInfo[Index].HealthStatus == EfiDriverHealthStatusRebootRequired) {\r
- RebootRequired = TRUE;\r
+ RebootRequired = TRUE;\r
}\r
}\r
- EfiBootManagerFreeDriverHealthInfo (DriverHealthInfo, Count);\r
\r
+ EfiBootManagerFreeDriverHealthInfo (DriverHealthInfo, Count);\r
\r
DEBUG_CODE_BEGIN ();\r
- CHAR16 *ControllerName;\r
+ CHAR16 *ControllerName;\r
\r
- DriverHealthInfo = EfiBootManagerGetDriverHealthInfo (&Count);\r
- for (Index = 0; Index < Count; Index++) {\r
- ControllerName = BmGetControllerName (\r
- DriverHealthInfo[Index].DriverHealthHandle,\r
- DriverHealthInfo[Index].ControllerHandle,\r
- DriverHealthInfo[Index].ChildHandle\r
- );\r
- DEBUG ((\r
- DEBUG_INFO,\r
- "%02d: %s - %s\n",\r
- Index,\r
- ControllerName,\r
- mBmHealthStatusText[DriverHealthInfo[Index].HealthStatus]\r
- ));\r
- if (ControllerName != NULL) {\r
- FreePool (ControllerName);\r
- }\r
+ DriverHealthInfo = EfiBootManagerGetDriverHealthInfo (&Count);\r
+ for (Index = 0; Index < Count; Index++) {\r
+ ControllerName = BmGetControllerName (\r
+ DriverHealthInfo[Index].DriverHealthHandle,\r
+ DriverHealthInfo[Index].ControllerHandle,\r
+ DriverHealthInfo[Index].ChildHandle\r
+ );\r
+ DEBUG ((\r
+ DEBUG_INFO,\r
+ "%02d: %s - %s\n",\r
+ Index,\r
+ ControllerName,\r
+ mBmHealthStatusText[DriverHealthInfo[Index].HealthStatus]\r
+ ));\r
+ if (ControllerName != NULL) {\r
+ FreePool (ControllerName);\r
}\r
- EfiBootManagerFreeDriverHealthInfo (DriverHealthInfo, Count);\r
+ }\r
+\r
+ EfiBootManagerFreeDriverHealthInfo (DriverHealthInfo, Count);\r
DEBUG_CODE_END ();\r
\r
if (ReconnectRequired) {\r
if (ReconnectRepairCount < MAX_RECONNECT_REPAIR) {\r
BmRepairAllControllers (ReconnectRepairCount + 1);\r
} else {\r
- DEBUG ((DEBUG_ERROR, "[%a:%d] Repair failed after %d retries.\n",\r
- __FUNCTION__, DEBUG_LINE_NUMBER, ReconnectRepairCount));\r
+ DEBUG ((\r
+ DEBUG_ERROR,\r
+ "[%a:%d] Repair failed after %d retries.\n",\r
+ __FUNCTION__,\r
+ DEBUG_LINE_NUMBER,\r
+ ReconnectRepairCount\r
+ ));\r
}\r
}\r
\r