MdePkg[all]  1.08
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
DriverHealth.h File Reference

Data Structures

struct  EFI_DRIVER_HEALTH_HII_MESSAGE
 
struct  _EFI_DRIVER_HEALTH_PROTOCOL
 

Macros

#define EFI_DRIVER_HEALTH_PROTOCOL_GUID
 

Typedefs

typedef struct
_EFI_DRIVER_HEALTH_PROTOCOL 
EFI_DRIVER_HEALTH_PROTOCOL
 
typedef EFI_STATUS(EFIAPIEFI_DRIVER_HEALTH_REPAIR_NOTIFY )(IN UINTN Value, IN UINTN Limit)
 
typedef EFI_STATUS(EFIAPIEFI_DRIVER_HEALTH_GET_HEALTH_STATUS )(IN EFI_DRIVER_HEALTH_PROTOCOL *This, IN EFI_HANDLE ControllerHandle, IN EFI_HANDLE ChildHandle, OUT EFI_DRIVER_HEALTH_STATUS *HealthStatus, OUT EFI_DRIVER_HEALTH_HII_MESSAGE **MessageList, OUT EFI_HII_HANDLE *FormHiiHandle)
 
typedef EFI_STATUS(EFIAPIEFI_DRIVER_HEALTH_REPAIR )(IN EFI_DRIVER_HEALTH_PROTOCOL *This, IN EFI_HANDLE ControllerHandle, IN EFI_HANDLE ChildHandle, IN EFI_DRIVER_HEALTH_REPAIR_NOTIFY RepairNotify)
 

Enumerations

enum  EFI_DRIVER_HEALTH_STATUS {
  EfiDriverHealthStatusHealthy, EfiDriverHealthStatusRepairRequired, EfiDriverHealthStatusConfigurationRequired, EfiDriverHealthStatusFailed,
  EfiDriverHealthStatusReconnectRequired, EfiDriverHealthStatusRebootRequired
}
 

Variables

EFI_GUID gEfiDriverHealthProtocolGuid
 

Detailed Description

EFI Driver Health Protocol definitions.

When installed, the Driver Health Protocol produces a collection of services that allow the health status for a controller to be retrieved. If a controller is not in a usable state, status messages may be reported to the user, repair operations can be invoked, and the user may be asked to make software and/or hardware configuration changes.

The Driver Health Protocol is optionally produced by a driver that follows the EFI Driver Model. If an EFI Driver needs to report health status to the platform, provide warning or error messages to the user, perform length repair operations, or request the user to make hardware or software configuration changes, then the Driver Health Protocol must be produced.

A controller that is managed by driver that follows the EFI Driver Model and produces the Driver Health Protocol must report the current health of the controllers that the driver is currently managing. The controller can initially be healthy, failed, require repair, or require configuration. If a controller requires configuration, and the user make configuration changes, the controller may then need to be reconnected or the system may need to be rebooted for the configuration changes to take affect.

Copyright (c) 2009 - 2018, Intel Corporation. All rights reserved.
Copyright (c) 2014, Hewlett-Packard Development Company, L.P.
SPDX-License-Identifier: BSD-2-Clause-Patent

Revision Reference:
This Protocol is defined in UEFI Specification 2.3d

Macro Definition Documentation

#define EFI_DRIVER_HEALTH_PROTOCOL_GUID
Value:
{ \
0x2a534210, 0x9280, 0x41d8, { 0xae, 0x79, 0xca, 0xda, 0x1, 0xa2, 0xb1, 0x27 } \
}

Typedef Documentation

typedef EFI_STATUS(EFIAPI * EFI_DRIVER_HEALTH_GET_HEALTH_STATUS)(IN EFI_DRIVER_HEALTH_PROTOCOL *This, IN EFI_HANDLE ControllerHandle, IN EFI_HANDLE ChildHandle, OUT EFI_DRIVER_HEALTH_STATUS *HealthStatus, OUT EFI_DRIVER_HEALTH_HII_MESSAGE **MessageList, OUT EFI_HII_HANDLE *FormHiiHandle)

Retrieves the health status of a controller in the platform. This function can also optionally return warning messages, error messages, and a set of HII Forms that may be repair a controller that is not proper configured.

Parameters
[in]ThisA pointer to the EFI_DRIVER_HEALTH_PROTOCOL instance.
[in]ControllerHandleThe handle of the controller to retrieve the health status on. This is an optional parameter that may be NULL. If this parameter is NULL, then the value of ChildHandle is ignored, and the combined health status of all the devices that the driver is managing is returned.
[in]ChildHandleThe handle of the child controller to retrieve the health status on. This is an optional parameter that may be NULL. This parameter is ignored of ControllerHandle is NULL. It will be NULL for device drivers. It will also be NULL for bus drivers when an attempt is made to collect the health status of the bus controller. If will not be NULL when an attempt is made to collect the health status for a child controller produced by the driver.
[out]HealthStatusA pointer to the health status that is returned by this function. This is an optional parameter that may be NULL. This parameter is ignored of ControllerHandle is NULL. The health status for the controller specified by ControllerHandle and ChildHandle is returned.
[out]MessageListA pointer to 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. MessageList is allocated by this function with the EFI Boot Service AllocatePool(), and it is the caller's responsibility to free MessageList with the EFI Boot Service FreePool(). Each message is specified by tuple of an EFI_HII_HANDLE and an EFI_STRING_ID. The array of messages is terminated by tuple containing a EFI_HII_HANDLE with a value of NULL. The EFI_HII_STRING_PROTOCOL.GetString() function can be used to retrieve the warning or error message as a Null-terminated string in a specific language. Messages may be returned for any of the HealthStatus values except EfiDriverHealthStatusReconnectRequired and EfiDriverHealthStatusRebootRequired.
[out]FormHiiHandleA pointer to the HII handle containing the HII form used when configuration is required. The HII handle is associated with the controller specified by ControllerHandle and ChildHandle. If this is NULL, then no HII form is available. An HII handle will only be returned with a HealthStatus value of EfiDriverHealthStatusConfigurationRequired.
Return values
EFI_SUCCESSControllerHandle is NULL, and all the controllers managed by this driver specified by This have a health status of EfiDriverHealthStatusHealthy with no warning messages to be returned. The ChildHandle, HealthStatus, MessageList, and FormList parameters are ignored.
EFI_DEVICE_ERRORControllerHandle is NULL, and one or more of the controllers managed by this driver specified by This do not have a health status of EfiDriverHealthStatusHealthy. The ChildHandle, HealthStatus, MessageList, and FormList parameters are ignored.
EFI_DEVICE_ERRORControllerHandle is NULL, and one or more of the controllers managed by this driver specified by This have one or more warning and/or error messages. The ChildHandle, HealthStatus, MessageList, and FormList parameters are ignored.
EFI_SUCCESSControllerHandle is not NULL and the health status of the controller specified by ControllerHandle and ChildHandle was returned in HealthStatus. A list of warning and error messages may be optionally returned in MessageList, and a list of HII Forms may be optionally returned in FormList.
EFI_UNSUPPORTEDControllerHandle is not NULL, and the controller specified by ControllerHandle and ChildHandle is not currently being managed by the driver specified by This.
EFI_INVALID_PARAMETERHealthStatus is NULL.
EFI_OUT_OF_RESOURCESMessageList is not NULL, and there are not enough resource available to allocate memory for MessageList.
typedef EFI_STATUS(EFIAPI * EFI_DRIVER_HEALTH_REPAIR)(IN EFI_DRIVER_HEALTH_PROTOCOL *This, IN EFI_HANDLE ControllerHandle, IN EFI_HANDLE ChildHandle, IN EFI_DRIVER_HEALTH_REPAIR_NOTIFY RepairNotify)

Performs a repair operation on a controller in the platform. This function can optionally report repair progress information back to the platform.

Parameters
[in]ThisA pointer to the EFI_DRIVER_HEALTH_PROTOCOL instance.
[in]ControllerHandleThe handle of the controller to repair.
[in]ChildHandleThe handle of the child controller to repair. This is an optional parameter that may be NULL. It will be NULL for device drivers. It will also be NULL for bus drivers when an attempt is made to repair a bus controller. If will not be NULL when an attempt is made to repair a child controller produced by the driver.
[in]RepairNotifyA notification function that may be used by a driver to report the progress of the repair operation. This is an optional parameter that may be NULL.
Return values
EFI_SUCCESSAn attempt to repair the controller specified by ControllerHandle and ChildHandle was performed. The result of the repair operation can bet determined by calling GetHealthStatus().
EFI_UNSUPPORTEDThe driver specified by This is not currently managing the controller specified by ControllerHandle and ChildHandle.
EFI_OUT_OF_RESOURCESThere are not enough resources to perform the repair operation.
typedef EFI_STATUS(EFIAPI * EFI_DRIVER_HEALTH_REPAIR_NOTIFY)(IN UINTN Value, IN UINTN Limit)

Reports the progress of a repair operation

Parameters
[in]ValueA value between 0 and Limit that identifies the current progress of the repair operation.
[in]LimitThe maximum value of Value for the current repair operation. For example, a driver that wants to specify progress in percent would use a Limit value of 100.

Enumeration Type Documentation

EFI_DRIVER_HEALTH_HEALTH_STATUS

Enumerator
EfiDriverHealthStatusHealthy 
EfiDriverHealthStatusRepairRequired 
EfiDriverHealthStatusConfigurationRequired 
EfiDriverHealthStatusFailed 
EfiDriverHealthStatusReconnectRequired 
EfiDriverHealthStatusRebootRequired 

Variable Documentation

EFI_GUID gEfiDriverHealthProtocolGuid