mirror of
https://github.com/acidanthera/audk.git
synced 2025-07-27 15:44:04 +02:00
Driver health management implementation in BDS based on UEFI Specification 2.3.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@9514 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
parent
c6204371fd
commit
ab4da12626
@ -19,6 +19,7 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
|||||||
#include <IndustryStandard/PeImage.h>
|
#include <IndustryStandard/PeImage.h>
|
||||||
#include <Guid/MdeModuleHii.h>
|
#include <Guid/MdeModuleHii.h>
|
||||||
#include <Guid/FileSystemVolumeLabelInfo.h>
|
#include <Guid/FileSystemVolumeLabelInfo.h>
|
||||||
|
#include <Guid/HiiPlatformSetupFormset.h>
|
||||||
#include <Protocol/DevicePath.h>
|
#include <Protocol/DevicePath.h>
|
||||||
#include <IndustryStandard/SmBios.h>
|
#include <IndustryStandard/SmBios.h>
|
||||||
#include <Protocol/LoadFile.h>
|
#include <Protocol/LoadFile.h>
|
||||||
@ -42,6 +43,7 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
|||||||
#include <Protocol/SerialIo.h>
|
#include <Protocol/SerialIo.h>
|
||||||
#include <Protocol/LegacyBios.h>
|
#include <Protocol/LegacyBios.h>
|
||||||
#include <Protocol/SimpleTextInEx.h>
|
#include <Protocol/SimpleTextInEx.h>
|
||||||
|
#include <Protocol/DriverHealth.h>
|
||||||
|
|
||||||
#include <Library/UefiDriverEntryPoint.h>
|
#include <Library/UefiDriverEntryPoint.h>
|
||||||
#include <Library/PrintLib.h>
|
#include <Library/PrintLib.h>
|
||||||
|
@ -55,6 +55,7 @@
|
|||||||
|
|
||||||
DeviceMngr/DeviceManager.h
|
DeviceMngr/DeviceManager.h
|
||||||
DeviceMngr/DeviceManagerVfr.Vfr
|
DeviceMngr/DeviceManagerVfr.Vfr
|
||||||
|
DeviceMngr/DriverHealthVfr.Vfr
|
||||||
DeviceMngr/DeviceManagerStrings.uni
|
DeviceMngr/DeviceManagerStrings.uni
|
||||||
DeviceMngr/DeviceManager.c
|
DeviceMngr/DeviceManager.c
|
||||||
BootMngr/BootManagerVfr.Vfr
|
BootMngr/BootManagerVfr.Vfr
|
||||||
@ -132,22 +133,24 @@
|
|||||||
gEfiFileInfoGuid ## CONSUMES ## GUID (Indicate the information type is file)
|
gEfiFileInfoGuid ## CONSUMES ## GUID (Indicate the information type is file)
|
||||||
gEfiHiiPlatformSetupFormsetGuid ## CONSUMES ## GUID (Indicate the formset class guid to be displayed)
|
gEfiHiiPlatformSetupFormsetGuid ## CONSUMES ## GUID (Indicate the formset class guid to be displayed)
|
||||||
gEfiIfrTianoGuid ## CONSUMES ## GUID (Extended IFR Guid Opcode)
|
gEfiIfrTianoGuid ## CONSUMES ## GUID (Extended IFR Guid Opcode)
|
||||||
|
gEfiHiiDriverHealthFormsetGuid ## CONSUMES ## GUID (Indicate the Driver Health formset class guid to be displayed)
|
||||||
|
|
||||||
[Protocols]
|
[Protocols]
|
||||||
gEfiSimpleFileSystemProtocolGuid # PROTOCOL ALWAYS_CONSUMES
|
gEfiSimpleFileSystemProtocolGuid ## PROTOCOL CONSUMES
|
||||||
gEfiLoadFileProtocolGuid # PROTOCOL ALWAYS_CONSUMES
|
gEfiLoadFileProtocolGuid ## PROTOCOL CONSUMES
|
||||||
gEfiBdsArchProtocolGuid # PROTOCOL ALWAYS_PRODUCES
|
gEfiBdsArchProtocolGuid ## PROTOCOL PRODUCES
|
||||||
gEfiSmbiosProtocolGuid # PROTOCOL ALWAYS_CONSUMED
|
gEfiSmbiosProtocolGuid ## PROTOCOL CONSUMES
|
||||||
gEfiGenericMemTestProtocolGuid # PROTOCOL ALWAYS_CONSUMES
|
gEfiGenericMemTestProtocolGuid ## PROTOCOL CONSUMES
|
||||||
gEfiLegacyBiosProtocolGuid # PROTOCOL ALWAYS_CONSUMES
|
gEfiLegacyBiosProtocolGuid ## PROTOCOL CONSUMES
|
||||||
gEfiUgaDrawProtocolGuid |PcdUgaConsumeSupport # PROTOCOL SOMETIMES_CONSUMES
|
gEfiUgaDrawProtocolGuid |PcdUgaConsumeSupport ## PROTOCOL SOMETIMES_CONSUMES
|
||||||
gEfiBlockIoProtocolGuid # PROTOCOL ALWAYS_CONSUMES
|
gEfiBlockIoProtocolGuid ## PROTOCOL CONSUMES
|
||||||
gEfiGraphicsOutputProtocolGuid # PROTOCOL SOMETIMES_CONSUMES
|
gEfiGraphicsOutputProtocolGuid ## PROTOCOL SOMETIMES_CONSUMES
|
||||||
gEfiSimpleTextInputExProtocolGuid # PROTOCOL ALWAYS_CONSUMES
|
gEfiSimpleTextInputExProtocolGuid ## PROTOCOL CONSUMES
|
||||||
gEfiHiiConfigAccessProtocolGuid # PROTOCOL ALWAYS_CONSUMES
|
gEfiHiiConfigAccessProtocolGuid ## PROTOCOL CONSUMES
|
||||||
gEfiFormBrowser2ProtocolGuid # PROTOCOL ALWAYS_CONSUMES
|
gEfiFormBrowser2ProtocolGuid ## PROTOCOL CONSUMES
|
||||||
gEfiSerialIoProtocolGuid # PROTOCOL ALWAYS_CONSUMES
|
gEfiSerialIoProtocolGuid ## PROTOCOL CONSUMES
|
||||||
gEfiDevicePathProtocolGuid # PROTOCOL ALWAYS_CONSUMES
|
gEfiDevicePathProtocolGuid ## PROTOCOL CONSUMES
|
||||||
|
gEfiDriverHealthProtocolGuid ## PROTOCOL SOMETIMES_CONSUMES
|
||||||
|
|
||||||
[FeaturePcd.common]
|
[FeaturePcd.common]
|
||||||
gEfiMdePkgTokenSpaceGuid.PcdUefiVariableDefaultLangDeprecate
|
gEfiMdePkgTokenSpaceGuid.PcdUefiVariableDefaultLangDeprecate
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -1,7 +1,7 @@
|
|||||||
/** @file
|
/** @file
|
||||||
The platform device manager reference implement
|
The platform device manager reference implement
|
||||||
|
|
||||||
Copyright (c) 2004 - 2008, Intel Corporation. <BR>
|
Copyright (c) 2004 - 2009, Intel Corporation. <BR>
|
||||||
All rights reserved. This program and the accompanying materials
|
All rights reserved. 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
|
||||||
@ -26,43 +26,111 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
|||||||
0x3ebfa8e6, 0x511d, 0x4b5b, {0xa9, 0x5f, 0xfb, 0x38, 0x26, 0xf, 0x1c, 0x27} \
|
0x3ebfa8e6, 0x511d, 0x4b5b, {0xa9, 0x5f, 0xfb, 0x38, 0x26, 0xf, 0x1c, 0x27} \
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#define DRIVER_HEALTH_FORMSET_GUID \
|
||||||
|
{ \
|
||||||
|
0xf76e0a70, 0xb5ed, 0x4c38, {0xac, 0x9a, 0xe5, 0xf5, 0x4b, 0xf1, 0x6e, 0x34} \
|
||||||
|
}
|
||||||
|
|
||||||
#define LABEL_DEVICES_LIST 0x0080
|
#define LABEL_DEVICES_LIST 0x0080
|
||||||
#define LABEL_END 0xffff
|
#define LABEL_END 0xffff
|
||||||
|
|
||||||
|
#define LABEL_DRIVER_HEALTH 0x2000
|
||||||
|
#define LABEL_DRIVER_HEALTH_END 0x2001
|
||||||
|
|
||||||
|
#define LABEL_DRIVER_HEALTH_REAPIR_ALL 0x3000
|
||||||
|
#define LABEL_DRIVER_HEALTH_REAPIR_ALL_END 0x3001
|
||||||
|
|
||||||
#define LABEL_VBIOS 0x0040
|
#define LABEL_VBIOS 0x0040
|
||||||
|
|
||||||
#define DEVICE_MANAGER_FORM_ID 0x1000
|
#define DEVICE_MANAGER_FORM_ID 0x1000
|
||||||
|
#define DRIVER_HEALTH_FORM_ID 0x1001
|
||||||
|
|
||||||
#define DEVICE_KEY_OFFSET 0x1000
|
#define DEVICE_KEY_OFFSET 0x1000
|
||||||
#define DEVICE_MANAGER_KEY_VBIOS 0x2000
|
#define DEVICE_MANAGER_KEY_VBIOS 0x2000
|
||||||
|
|
||||||
|
#define DEVICE_MANAGER_KEY_DRIVER_HEALTH 0x1111
|
||||||
|
#define DRIVER_HEALTH_KEY_OFFSET 0x2000
|
||||||
|
#define DRIVER_HEALTH_REPAIR_ALL_KEY 0x3000
|
||||||
|
#define DRIVER_HEALTH_RETURN_KEY 0x4000
|
||||||
|
|
||||||
//
|
//
|
||||||
// These are the VFR compiler generated data representing our VFR data.
|
// These are the VFR compiler generated data representing our VFR data.
|
||||||
//
|
//
|
||||||
extern UINT8 DeviceManagerVfrBin[];
|
extern UINT8 DeviceManagerVfrBin[];
|
||||||
|
extern UINT8 DriverHealthVfrBin[];
|
||||||
|
|
||||||
#define DEVICE_MANAGER_CALLBACK_DATA_SIGNATURE SIGNATURE_32 ('D', 'M', 'C', 'B')
|
#define DEVICE_MANAGER_CALLBACK_DATA_SIGNATURE SIGNATURE_32 ('D', 'M', 'C', 'B')
|
||||||
|
#define DEVICE_MANAGER_DRIVER_HEALTH_INFO_SIGNATURE SIGNATURE_32 ('D', 'M', 'D', 'H')
|
||||||
|
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
UINTN Signature;
|
UINTN Signature;
|
||||||
|
|
||||||
///
|
///
|
||||||
/// HII relative handles
|
/// Device Manager HII relative handles
|
||||||
///
|
///
|
||||||
EFI_HII_HANDLE HiiHandle;
|
EFI_HII_HANDLE HiiHandle;
|
||||||
EFI_HANDLE DriverHandle;
|
|
||||||
|
|
||||||
///
|
///
|
||||||
/// Produced protocols
|
/// Driver Health HII relative handles
|
||||||
|
///
|
||||||
|
EFI_HII_HANDLE DriverHealthHiiHandle;
|
||||||
|
|
||||||
|
EFI_HANDLE DriverHandle;
|
||||||
|
EFI_HANDLE DriverHealthHandle;
|
||||||
|
|
||||||
|
///
|
||||||
|
/// Device Manager Produced protocols
|
||||||
///
|
///
|
||||||
EFI_HII_CONFIG_ACCESS_PROTOCOL ConfigAccess;
|
EFI_HII_CONFIG_ACCESS_PROTOCOL ConfigAccess;
|
||||||
|
|
||||||
|
///
|
||||||
|
/// Driver Health Produced protocols
|
||||||
|
///
|
||||||
|
EFI_HII_CONFIG_ACCESS_PROTOCOL DriverHealthConfigAccess;
|
||||||
|
|
||||||
///
|
///
|
||||||
/// Configuration data
|
/// Configuration data
|
||||||
///
|
///
|
||||||
UINT8 VideoBios;
|
UINT8 VideoBios;
|
||||||
} DEVICE_MANAGER_CALLBACK_DATA;
|
} DEVICE_MANAGER_CALLBACK_DATA;
|
||||||
|
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
UINTN Signature;
|
||||||
|
LIST_ENTRY Link;
|
||||||
|
|
||||||
|
///
|
||||||
|
/// HII relative handles
|
||||||
|
///
|
||||||
|
EFI_HII_HANDLE HiiHandle;
|
||||||
|
|
||||||
|
///
|
||||||
|
/// Driver relative handles
|
||||||
|
///
|
||||||
|
EFI_HANDLE DriverHandle;
|
||||||
|
EFI_HANDLE ControllerHandle;
|
||||||
|
EFI_HANDLE ChildHandle;
|
||||||
|
|
||||||
|
EFI_DRIVER_HEALTH_PROTOCOL *DriverHealth;
|
||||||
|
///
|
||||||
|
/// Driver health messages of the specify Driver
|
||||||
|
///
|
||||||
|
EFI_DRIVER_HEALTH_HII_MESSAGE *MessageList;
|
||||||
|
|
||||||
|
///
|
||||||
|
/// Driver Health status
|
||||||
|
///
|
||||||
|
EFI_DRIVER_HEALTH_STATUS HealthStatus;
|
||||||
|
} DRIVER_HEALTH_INFO;
|
||||||
|
|
||||||
|
#define DEVICE_MANAGER_HEALTH_INFO_FROM_LINK(a) \
|
||||||
|
CR (a, \
|
||||||
|
DRIVER_HEALTH_INFO, \
|
||||||
|
Link, \
|
||||||
|
DEVICE_MANAGER_DRIVER_HEALTH_INFO_SIGNATURE \
|
||||||
|
)
|
||||||
|
|
||||||
#define DEVICE_MANAGER_CALLBACK_DATA_FROM_THIS(a) \
|
#define DEVICE_MANAGER_CALLBACK_DATA_FROM_THIS(a) \
|
||||||
CR (a, \
|
CR (a, \
|
||||||
DEVICE_MANAGER_CALLBACK_DATA, \
|
DEVICE_MANAGER_CALLBACK_DATA, \
|
||||||
@ -75,7 +143,7 @@ typedef struct {
|
|||||||
} DEVICE_MANAGER_MENU_ITEM;
|
} DEVICE_MANAGER_MENU_ITEM;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
This function is invoked if user selected a iteractive opcode from Device Manager's
|
This function is invoked if user selected a interactive opcode from Device Manager's
|
||||||
Formset. The decision by user is saved to gCallbackKey for later processing. If
|
Formset. The decision by user is saved to gCallbackKey for later processing. If
|
||||||
user set VBIOS, the new value is saved to EFI variable.
|
user set VBIOS, the new value is saved to EFI variable.
|
||||||
|
|
||||||
@ -103,6 +171,35 @@ DeviceManagerCallback (
|
|||||||
OUT EFI_BROWSER_ACTION_REQUEST *ActionRequest
|
OUT EFI_BROWSER_ACTION_REQUEST *ActionRequest
|
||||||
);
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
This function is invoked if user selected a interactive opcode from Driver Health's
|
||||||
|
Formset. The decision by user is saved to gCallbackKey for later processing.
|
||||||
|
|
||||||
|
|
||||||
|
@param This Points to the EFI_HII_CONFIG_ACCESS_PROTOCOL.
|
||||||
|
@param Action Specifies the type of action taken by the browser.
|
||||||
|
@param QuestionId A unique value which is sent to the original exporting driver
|
||||||
|
so that it can identify the type of data to expect.
|
||||||
|
@param Type The type of value for the question.
|
||||||
|
@param Value A pointer to the data being sent to the original exporting driver.
|
||||||
|
@param ActionRequest On return, points to the action requested by the callback function.
|
||||||
|
|
||||||
|
@retval EFI_SUCCESS The callback successfully handled the action.
|
||||||
|
@retval EFI_INVALID_PARAMETER The setup browser call this function with invalid parameters.
|
||||||
|
|
||||||
|
**/
|
||||||
|
EFI_STATUS
|
||||||
|
EFIAPI
|
||||||
|
DriverHealthCallback (
|
||||||
|
IN CONST EFI_HII_CONFIG_ACCESS_PROTOCOL *This,
|
||||||
|
IN EFI_BROWSER_ACTION Action,
|
||||||
|
IN EFI_QUESTION_ID QuestionId,
|
||||||
|
IN UINT8 Type,
|
||||||
|
IN EFI_IFR_TYPE_VALUE *Value,
|
||||||
|
OUT EFI_BROWSER_ACTION_REQUEST *ActionRequest
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
||||||
This function registers HII packages to HII database.
|
This function registers HII packages to HII database.
|
||||||
@ -134,4 +231,317 @@ CallDeviceManager (
|
|||||||
VOID
|
VOID
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
Check the Driver Health status of a single controller and try to process it if not healthy.
|
||||||
|
|
||||||
|
This function called by CheckAllControllersHealthStatus () function in order to process a specify
|
||||||
|
contoller's health state.
|
||||||
|
|
||||||
|
@param DriverHealth A pointer to the EFI_DRIVER_HEALTH_PROTOCOL instance.
|
||||||
|
@param ControllerHandle The class guid specifies which form set will be displayed.
|
||||||
|
@param ChildHandle The handle of the child controller to retrieve the health
|
||||||
|
status on. This is an optional parameter that may be NULL.
|
||||||
|
@param HealthStatus The health status of the controller.
|
||||||
|
@param MessageList An array of warning or error messages associated
|
||||||
|
with the controller specified by ControllerHandle and
|
||||||
|
ChildHandle. This is an optional parameter that may be NULL.
|
||||||
|
@param FormHiiHandle The HII handle for an HII form associated with the
|
||||||
|
controller specified by ControllerHandle and ChildHandle.
|
||||||
|
|
||||||
|
@retval EFI_INVALID_PARAMETER HealthStatus or DriverHealth is NULL.
|
||||||
|
@retval HealthStatus The Health status of specify controller.
|
||||||
|
@retval EFI_OUT_OF_RESOURCES The list of Driver Health Protocol handles can not be retrieved.
|
||||||
|
@retval EFI_NOT_FOUND No controller in the platform install Driver Health Protocol.
|
||||||
|
@retval EFI_SUCCESS The Health related operation has been taken successfully.
|
||||||
|
|
||||||
|
*/
|
||||||
|
EFI_STATUS
|
||||||
|
EFIAPI
|
||||||
|
GetSingleControllerHealthStatus (
|
||||||
|
IN OUT LIST_ENTRY *DriverHealthList,
|
||||||
|
IN EFI_HANDLE DriverHandle,
|
||||||
|
IN EFI_HANDLE ControllerHandle, OPTIONAL
|
||||||
|
IN EFI_HANDLE ChildHandle, OPTIONAL
|
||||||
|
IN EFI_DRIVER_HEALTH_PROTOCOL *DriverHealth,
|
||||||
|
IN EFI_DRIVER_HEALTH_STATUS *HealthStatus
|
||||||
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Collects all the EFI Driver Health Protocols currently present in the EFI Handle Database,
|
||||||
|
and queries each EFI Driver Health Protocol to determine if one or more of the controllers
|
||||||
|
managed by each EFI Driver Health Protocol instance are not healthy.
|
||||||
|
|
||||||
|
@param DriverHealthList A Pointer to the list contain all of the platform driver health
|
||||||
|
information.
|
||||||
|
|
||||||
|
@retval EFI_NOT_FOUND No controller in the platform install Driver Health Protocol.
|
||||||
|
@retval EFI_SUCCESS All the controllers in the platform are healthy.
|
||||||
|
@retval EFI_OUT_OF_RESOURCES The list of Driver Health Protocol handles can not be retrieved.
|
||||||
|
|
||||||
|
**/
|
||||||
|
EFI_STATUS
|
||||||
|
GetAllControllersHealthStatus (
|
||||||
|
IN OUT LIST_ENTRY *DriverHealthList
|
||||||
|
);
|
||||||
|
|
||||||
|
/*
|
||||||
|
Check the healthy status of the platform, this function will return immediately while found one driver
|
||||||
|
in the platform are not healthy.
|
||||||
|
|
||||||
|
@retval FALSE at least one driver in the platform are not healthy.
|
||||||
|
@retval TRUE No controller install Driver Health Protocol,
|
||||||
|
or all controllers in the platform are in healthy status.
|
||||||
|
*/
|
||||||
|
BOOLEAN
|
||||||
|
PlaformHealthStatusCheck (
|
||||||
|
VOID
|
||||||
|
);
|
||||||
|
|
||||||
|
/*
|
||||||
|
Repair the whole platform.
|
||||||
|
|
||||||
|
This function is the main entry for user choose "Repair All" in the front page.
|
||||||
|
It will try to do recovery job till all the driver health protocol installed modules
|
||||||
|
reach a terminal state.
|
||||||
|
|
||||||
|
@param DriverHealthList A Pointer to the list contain all of the platform driver health
|
||||||
|
information.
|
||||||
|
|
||||||
|
*/
|
||||||
|
VOID
|
||||||
|
PlatformRepairAll (
|
||||||
|
IN LIST_ENTRY *DriverHealthList
|
||||||
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Processes a single controller using the EFI Driver Health Protocol associated with
|
||||||
|
that controller. This algorithm continues to query the GetHealthStatus() service until
|
||||||
|
one of the legal terminal states of the EFI Driver Health Protocol is reached. This may
|
||||||
|
require the processing of HII Messages, HII Form, and invocation of repair operations.
|
||||||
|
|
||||||
|
@param DriverHealth A pointer to the EFI_DRIVER_HEALTH_PROTOCOL instance.
|
||||||
|
@param ControllerHandle The class guid specifies which form set will be displayed.
|
||||||
|
@param ChildHandle The handle of the child controller to retrieve the health
|
||||||
|
status on. This is an optional parameter that may be NULL.
|
||||||
|
@param HealthStatus The health status of the controller.
|
||||||
|
@param MessageList An array of warning or error messages associated
|
||||||
|
with the controller specified by ControllerHandle and
|
||||||
|
ChildHandle. This is an optional parameter that may be NULL.
|
||||||
|
@param FormHiiHandle The HII handle for an HII form associated with the
|
||||||
|
controller specified by ControllerHandle and ChildHandle.
|
||||||
|
|
||||||
|
**/
|
||||||
|
VOID
|
||||||
|
ProcessSingleControllerHealth (
|
||||||
|
IN EFI_DRIVER_HEALTH_PROTOCOL *DriverHealth,
|
||||||
|
IN EFI_HANDLE ControllerHandle, OPTIONAL
|
||||||
|
IN EFI_HANDLE ChildHandle, OPTIONAL
|
||||||
|
IN EFI_DRIVER_HEALTH_STATUS HealthStatus,
|
||||||
|
IN EFI_DRIVER_HEALTH_HII_MESSAGE **MessageList, OPTIONAL
|
||||||
|
IN EFI_HII_HANDLE FormHiiHandle
|
||||||
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Repair notification function, simply print the repair progress.
|
||||||
|
|
||||||
|
@param Value The value of part has been repaired.
|
||||||
|
@param Limit Total value need to be repaired.
|
||||||
|
|
||||||
|
**/
|
||||||
|
VOID
|
||||||
|
RepairNotify (
|
||||||
|
IN UINTN Value,
|
||||||
|
IN UINTN Limit
|
||||||
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Processes a set of messages returned by the GetHealthStatus ()
|
||||||
|
service of the EFI Driver Health Protocol
|
||||||
|
|
||||||
|
@param MessageList The MessageList point to messages need to processed.
|
||||||
|
|
||||||
|
**/
|
||||||
|
VOID
|
||||||
|
ProcessMessages (
|
||||||
|
IN EFI_DRIVER_HEALTH_HII_MESSAGE *MessageList
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
Collect and display the platform's driver health relative information, allow user to do interactive
|
||||||
|
operation while the platform is unhealthy.
|
||||||
|
|
||||||
|
This function display a form which divided into two parts. The one list all modules which has installed
|
||||||
|
driver health protocol. The list usually contain driver name, controller name, and it's health info.
|
||||||
|
While the driver name can't be retrieved, will use device path as backup. The other part of the form provide
|
||||||
|
a choice to the user to repair all platform.
|
||||||
|
|
||||||
|
**/
|
||||||
|
VOID
|
||||||
|
CallDriverHealth (
|
||||||
|
VOID
|
||||||
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
|
||||||
|
Select the best matching language according to front page policy for best user experience.
|
||||||
|
|
||||||
|
This function supports both ISO 639-2 and RFC 4646 language codes, but language
|
||||||
|
code types may not be mixed in a single call to this function.
|
||||||
|
|
||||||
|
@param SupportedLanguages A pointer to a Null-terminated ASCII string that
|
||||||
|
contains a set of language codes in the format
|
||||||
|
specified by Iso639Language.
|
||||||
|
@param Iso639Language If TRUE, then all language codes are assumed to be
|
||||||
|
in ISO 639-2 format. If FALSE, then all language
|
||||||
|
codes are assumed to be in RFC 4646 language format.
|
||||||
|
|
||||||
|
@retval NULL The best matching language could not be found in SupportedLanguages.
|
||||||
|
@retval NULL There are not enough resources available to return the best matching
|
||||||
|
language.
|
||||||
|
@retval Other A pointer to a Null-terminated ASCII string that is the best matching
|
||||||
|
language in SupportedLanguages.
|
||||||
|
**/
|
||||||
|
CHAR8 *
|
||||||
|
DriverHealthSelectBestLanguage (
|
||||||
|
IN CHAR8 *SupportedLanguages,
|
||||||
|
IN BOOLEAN Iso639Language
|
||||||
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
|
||||||
|
This is an internal worker function to get the Component Name (2) protocol interface
|
||||||
|
and the language it supports.
|
||||||
|
|
||||||
|
@param ProtocolGuid A pointer to an EFI_GUID. It points to Component Name (2) protocol GUID.
|
||||||
|
@param DriverBindingHandle The handle on which the Component Name (2) protocol instance is retrieved.
|
||||||
|
@param ComponentName A pointer to the Component Name (2) protocol interface.
|
||||||
|
@param SupportedLanguage The best suitable language that matches the SupportedLangues interface for the
|
||||||
|
located Component Name (2) instance.
|
||||||
|
|
||||||
|
@param EFI_SUCCESS The Component Name (2) protocol instance is successfully located and we find
|
||||||
|
the best matching language it support.
|
||||||
|
@param EFI_UNSUPPORTED The input Language is not supported by the Component Name (2) protocol.
|
||||||
|
@param Other Some error occurs when locating Component Name (2) protocol instance or finding
|
||||||
|
the supported language.
|
||||||
|
|
||||||
|
**/
|
||||||
|
EFI_STATUS
|
||||||
|
GetComponentNameWorker (
|
||||||
|
IN EFI_GUID *ProtocolGuid,
|
||||||
|
IN EFI_HANDLE DriverBindingHandle,
|
||||||
|
OUT EFI_COMPONENT_NAME_PROTOCOL **ComponentName,
|
||||||
|
OUT CHAR8 **SupportedLanguage
|
||||||
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
|
||||||
|
This is an internal worker function to get driver name from Component Name (2) protocol interface.
|
||||||
|
|
||||||
|
|
||||||
|
@param ProtocolGuid A pointer to an EFI_GUID. It points to Component Name (2) protocol GUID.
|
||||||
|
@param DriverBindingHandle The handle on which the Component Name (2) protocol instance is retrieved.
|
||||||
|
@param DriverName A pointer to the Unicode string to return. This Unicode string is the name
|
||||||
|
of the driver specified by This.
|
||||||
|
|
||||||
|
@retval EFI_SUCCESS The driver name is successfully retrieved from Component Name (2) protocol
|
||||||
|
interface.
|
||||||
|
@retval Other The driver name cannot be retrieved from Component Name (2) protocol
|
||||||
|
interface.
|
||||||
|
|
||||||
|
**/
|
||||||
|
EFI_STATUS
|
||||||
|
GetDriverNameWorker (
|
||||||
|
IN EFI_GUID *ProtocolGuid,
|
||||||
|
IN EFI_HANDLE DriverBindingHandle,
|
||||||
|
OUT CHAR16 **DriverName
|
||||||
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
|
||||||
|
This function gets driver name from Component Name 2 protocol interface and Component Name protocol interface
|
||||||
|
in turn. It first tries UEFI 2.0 Component Name 2 protocol interface and try to get the driver name.
|
||||||
|
If the attempt fails, it then gets the driver name from EFI 1.1 Component Name protocol for backward
|
||||||
|
compatibility support.
|
||||||
|
|
||||||
|
@param DriverBindingHandle The handle on which the Component Name (2) protocol instance is retrieved.
|
||||||
|
@param DriverName A pointer to the Unicode string to return. This Unicode string is the name
|
||||||
|
of the driver specified by This.
|
||||||
|
|
||||||
|
@retval EFI_SUCCESS The driver name is successfully retrieved from Component Name (2) protocol
|
||||||
|
interface.
|
||||||
|
@retval Other The driver name cannot be retrieved from Component Name (2) protocol
|
||||||
|
interface.
|
||||||
|
|
||||||
|
**/
|
||||||
|
EFI_STATUS
|
||||||
|
DriverHealthGetDriverName (
|
||||||
|
IN EFI_HANDLE DriverBindingHandle,
|
||||||
|
OUT CHAR16 **DriverName
|
||||||
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
This function gets controller name from Component Name 2 protocol interface and Component Name protocol interface
|
||||||
|
in turn. It first tries UEFI 2.0 Component Name 2 protocol interface and try to get the controller name.
|
||||||
|
If the attempt fails, it then gets the controller name from EFI 1.1 Component Name protocol for backward
|
||||||
|
compatibility support.
|
||||||
|
|
||||||
|
@param ProtocolGuid A pointer to an EFI_GUID. It points to Component Name (2) protocol GUID.
|
||||||
|
@param DriverBindingHandle The handle on which the Component Name (2) protocol instance is retrieved.
|
||||||
|
@param ControllerHandle The handle of a controller that the driver specified by This is managing.
|
||||||
|
This handle specifies the controller whose name is to be returned.
|
||||||
|
@param ChildHandle The handle of the child controller to retrieve the name of. This is an
|
||||||
|
optional parameter that may be NULL. It will be NULL for device drivers.
|
||||||
|
It will also be NULL for bus drivers that attempt to retrieve the name
|
||||||
|
of the bus controller. It will not be NULL for a bus driver that attempts
|
||||||
|
to retrieve the name of a child controller.
|
||||||
|
@param ControllerName A pointer to the Unicode string to return. This Unicode string
|
||||||
|
is the name of the controller specified by ControllerHandle and ChildHandle.
|
||||||
|
|
||||||
|
@retval EFI_SUCCESS The controller name is successfully retrieved from Component Name (2) protocol
|
||||||
|
interface.
|
||||||
|
@retval Other The controller name cannot be retrieved from Component Name (2) protocol.
|
||||||
|
|
||||||
|
**/
|
||||||
|
|
||||||
|
EFI_STATUS
|
||||||
|
GetControllerNameWorker (
|
||||||
|
IN EFI_GUID *ProtocolGuid,
|
||||||
|
IN EFI_HANDLE DriverBindingHandle,
|
||||||
|
IN EFI_HANDLE ControllerHandle,
|
||||||
|
IN EFI_HANDLE ChildHandle,
|
||||||
|
OUT CHAR16 **ControllerName
|
||||||
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
This function gets controller name from Component Name 2 protocol interface and Component Name protocol interface
|
||||||
|
in turn. It first tries UEFI 2.0 Component Name 2 protocol interface and try to get the controller name.
|
||||||
|
If the attempt fails, it then gets the controller name from EFI 1.1 Component Name protocol for backward
|
||||||
|
compatibility support.
|
||||||
|
|
||||||
|
@param DriverBindingHandle The handle on which the Component Name (2) protocol instance is retrieved.
|
||||||
|
@param ControllerHandle The handle of a controller that the driver specified by This is managing.
|
||||||
|
This handle specifies the controller whose name is to be returned.
|
||||||
|
@param ChildHandle The handle of the child controller to retrieve the name of. This is an
|
||||||
|
optional parameter that may be NULL. It will be NULL for device drivers.
|
||||||
|
It will also be NULL for bus drivers that attempt to retrieve the name
|
||||||
|
of the bus controller. It will not be NULL for a bus driver that attempts
|
||||||
|
to retrieve the name of a child controller.
|
||||||
|
@param ControllerName A pointer to the Unicode string to return. This Unicode string
|
||||||
|
is the name of the controller specified by ControllerHandle and ChildHandle.
|
||||||
|
|
||||||
|
@retval EFI_SUCCESS The controller name is successfully retrieved from Component Name (2) protocol
|
||||||
|
interface.
|
||||||
|
@retval Other The controller name cannot be retrieved from Component Name (2) protocol.
|
||||||
|
|
||||||
|
**/
|
||||||
|
EFI_STATUS
|
||||||
|
DriverHealthGetControllerName (
|
||||||
|
IN EFI_HANDLE DriverBindingHandle,
|
||||||
|
IN EFI_HANDLE ControllerHandle,
|
||||||
|
IN EFI_HANDLE ChildHandle,
|
||||||
|
OUT CHAR16 **ControllerName
|
||||||
|
);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
Binary file not shown.
@ -2,7 +2,7 @@
|
|||||||
//
|
//
|
||||||
// Device Manager formset.
|
// Device Manager formset.
|
||||||
//
|
//
|
||||||
// Copyright (c) 2004 - 2008, Intel Corporation. <BR>
|
// Copyright (c) 2004 - 2009, Intel Corporation. <BR>
|
||||||
// All rights reserved. This program and the accompanying materials
|
// All rights reserved. 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
|
||||||
@ -31,6 +31,8 @@
|
|||||||
|
|
||||||
#define DEVICE_MANAGER_FORM_ID 0x1000
|
#define DEVICE_MANAGER_FORM_ID 0x1000
|
||||||
|
|
||||||
|
#define DEVICE_MANAGER_KEY_DRIVER_HEALTH 0x1111
|
||||||
|
|
||||||
formset
|
formset
|
||||||
guid = FORMSET_GUID,
|
guid = FORMSET_GUID,
|
||||||
title = STRING_TOKEN(STR_DEVICE_MANAGER_TITLE),
|
title = STRING_TOKEN(STR_DEVICE_MANAGER_TITLE),
|
||||||
@ -65,6 +67,16 @@ formset
|
|||||||
label LABEL_DEVICES_LIST;
|
label LABEL_DEVICES_LIST;
|
||||||
label LABEL_END;
|
label LABEL_END;
|
||||||
|
|
||||||
|
subtitle text = STRING_TOKEN(STR_LAST_STRING);
|
||||||
|
subtitle text = STRING_TOKEN(STR_DM_DRIVER_HEALTH_TITLE);
|
||||||
|
|
||||||
|
text
|
||||||
|
help = STRING_TOKEN(STR_DRIVER_HEALTH_STATUS_HELP),
|
||||||
|
text = STRING_TOKEN(STR_DRIVER_HEALTH_ALL_HEALTHY),
|
||||||
|
text = STRING_TOKEN(STR_LAST_STRING),
|
||||||
|
flags = INTERACTIVE,
|
||||||
|
key = DEVICE_MANAGER_KEY_DRIVER_HEALTH;
|
||||||
|
|
||||||
subtitle text = STRING_TOKEN(STR_EMPTY_STRING);
|
subtitle text = STRING_TOKEN(STR_EMPTY_STRING);
|
||||||
|
|
||||||
label LABEL_VBIOS;
|
label LABEL_VBIOS;
|
||||||
|
@ -0,0 +1,45 @@
|
|||||||
|
///** @file
|
||||||
|
//
|
||||||
|
// Driver Health formset.
|
||||||
|
//
|
||||||
|
// Copyright (c) 2004 - 2009, Intel Corporation. <BR>
|
||||||
|
// All rights reserved. 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
|
||||||
|
// http://opensource.org/licenses/bsd-license.php
|
||||||
|
//
|
||||||
|
// THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||||
|
//
|
||||||
|
//**/
|
||||||
|
|
||||||
|
#define DRIVER_HEALTH_FORMSET_GUID { 0xf76e0a70, 0xb5ed, 0x4c38, 0xac, 0x9a, 0xe5, 0xf5, 0x4b, 0xf1, 0x6e, 0x34 }
|
||||||
|
|
||||||
|
#define LABEL_DRIVER_HEALTH 0x2000
|
||||||
|
#define LABEL_DRIVER_HEALTH_END 0x2001
|
||||||
|
#define LABEL_DRIVER_HEALTH_REAPIR_ALL 0x3000
|
||||||
|
#define LABEL_DRIVER_HEALTH_REAPIR_ALL_END 0x3001
|
||||||
|
|
||||||
|
#define DRIVER_HEALTH_FORM_ID 0x1001
|
||||||
|
|
||||||
|
formset
|
||||||
|
guid = DRIVER_HEALTH_FORMSET_GUID,
|
||||||
|
title = STRING_TOKEN(STR_DH_BANNER),
|
||||||
|
help = STRING_TOKEN(STR_EMPTY_STRING),
|
||||||
|
classguid = DRIVER_HEALTH_FORMSET_GUID,
|
||||||
|
|
||||||
|
form formid = DRIVER_HEALTH_FORM_ID,
|
||||||
|
title = STRING_TOKEN(STR_DH_BANNER);
|
||||||
|
|
||||||
|
label LABEL_DRIVER_HEALTH;
|
||||||
|
label LABEL_DRIVER_HEALTH_END;
|
||||||
|
|
||||||
|
subtitle text = STRING_TOKEN(STR_LAST_STRING);
|
||||||
|
label LABEL_DRIVER_HEALTH_REAPIR_ALL;
|
||||||
|
label LABEL_DRIVER_HEALTH_REAPIR_ALL_END;
|
||||||
|
|
||||||
|
subtitle text = STRING_TOKEN(STR_LAST_STRING);
|
||||||
|
subtitle text = STRING_TOKEN(STR_HELP_FOOTER);
|
||||||
|
subtitle text = STRING_TOKEN(STR_LAST_STRING);
|
||||||
|
endform;
|
||||||
|
endformset;
|
Loading…
x
Reference in New Issue
Block a user