X-Git-Url: https://git.proxmox.com/?p=mirror_edk2.git;a=blobdiff_plain;f=MdePkg%2FInclude%2FProtocol%2FDriverHealth.h;h=fa2aa781244e332152241b552114f5d94970506c;hp=24bb5bc1ee5502d3110926d21abafe13d7dcb343;hb=9344f0921518309295da89c221d10cbead8531aa;hpb=9df063a06aef048c042498e2f542fb693e93493a diff --git a/MdePkg/Include/Protocol/DriverHealth.h b/MdePkg/Include/Protocol/DriverHealth.h index 24bb5bc1ee..fa2aa78124 100644 --- a/MdePkg/Include/Protocol/DriverHealth.h +++ b/MdePkg/Include/Protocol/DriverHealth.h @@ -5,32 +5,27 @@ 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 + + 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, Intel Corporation. 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. + + 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 @par Revision Reference: - This Protocol is defined in UEFI Specification 2.2 + This Protocol is defined in UEFI Specification 2.3d **/ @@ -41,7 +36,7 @@ { \ 0x2a534210, 0x9280, 0x41d8, { 0xae, 0x79, 0xca, 0xda, 0x1, 0xa2, 0xb1, 0x27 } \ } - + typedef struct _EFI_DRIVER_HEALTH_PROTOCOL EFI_DRIVER_HEALTH_PROTOCOL; /// @@ -62,119 +57,118 @@ typedef enum { typedef struct { EFI_HII_HANDLE HiiHandle; EFI_STRING_ID StringId; - UINT64 Reserved; + + /// + /// 64-bit numeric value of the warning/error specified by this message. + /// A value of 0x0000000000000000 is used to indicate that MessageCode is not specified. + /// The values 0x0000000000000001 to 0x0fffffffffffffff are reserved for allocation by the UEFI Specification. + /// The values 0x1000000000000000 to 0x1fffffffffffffff are reserved for IHV-developed drivers. + /// The values 0x8000000000000000 to 0x8fffffffffffffff is reserved for platform/OEM drivers. + /// All other values are reserved and should not be used. + /// + UINT64 MessageCode; } EFI_DRIVER_HEALTH_HII_MESSAGE; /** Reports the progress of a repair operation - @param[in] Value A value between 0 and Limit that identifies the current + @param[in] Value A value between 0 and Limit that identifies the current progress of the repair operation. - + @param[in] Limit The maximum value of Value for the current repair operation. - For example, a driver that wants to specify progress in + For example, a driver that wants to specify progress in percent would use a Limit value of 100. - - @retval EFI_SUCCESS An attempt to repair the controller specified by - ControllerHandle and ChildHandle was performed. The - result of the repair operation can bet determined by - calling GetHealthStatus(). - @retval EFI_UNSUPPORTED The driver specified by This is not currently managing the - controller specified by ControllerHandle and - ChildHandle. - @retval EFI_OUT_OF_RESOURCES There are not enough resources to perform the repair operation. - **/ typedef EFI_STATUS -(EFIAPI *EFI_DRIVER_HEALTH_REPAIR_PROGRESS_NOTIFY)( +(EFIAPI *EFI_DRIVER_HEALTH_REPAIR_NOTIFY)( IN UINTN Value, IN UINTN Limit ); /** - 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. - + 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. + @param[in] This A pointer to the EFI_DRIVER_HEALTH_PROTOCOL instance. - @param[in] ControllerHandle The 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 + @param[in] ControllerHandle The 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. - @param[in] ChildHandle The 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 + @param[in] ChildHandle The 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. - @param[out] HealthStatus A 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. - - @param[out] MessageList A 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 - Unicode string in a specific language. Messages may be - returned for any of the HealthStatus values except - EfiDriverHealthStatusReconnectRequired and + @param[out] HealthStatus A 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. + + @param[out] MessageList A 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. - @param[out] FormHiiHandle A pointer to the HII handle containing the HII form used when - configuration is required. The HII handle is associated with + @param[out] FormHiiHandle A 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 + will only be returned with a HealthStatus value of EfiDriverHealthStatusConfigurationRequired. - @retval EFI_SUCCESS ControllerHandle 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, + @retval EFI_SUCCESS ControllerHandle 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. - @retval EFI_DEVICE_ERROR ControllerHandle 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 + @retval EFI_DEVICE_ERROR ControllerHandle 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. - @retval EFI_DEVICE_ERROR ControllerHandle 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 + @retval EFI_DEVICE_ERROR ControllerHandle 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. - @retval EFI_SUCCESS ControllerHandle 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 + @retval EFI_SUCCESS ControllerHandle 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. - @retval EFI_UNSUPPORTED ControllerHandle is not NULL, and the controller - specified by ControllerHandle and ChildHandle is not + @retval EFI_UNSUPPORTED ControllerHandle is not NULL, and the controller + specified by ControllerHandle and ChildHandle is not currently being managed by the driver specified by This. @retval EFI_INVALID_PARAMETER HealthStatus is NULL. - @retval EFI_OUT_OF_RESOURCES MessageList is not NULL, and there are not enough + @retval EFI_OUT_OF_RESOURCES MessageList is not NULL, and there are not enough resource available to allocate memory for MessageList. **/ @@ -190,30 +184,30 @@ EFI_STATUS ); /** - Performs a repair operation on a controller in the platform. This function can - optionally report repair progress information back to the platform. - - @param[in] This A pointer to the EFI_DRIVER_HEALTH_PROTOCOL instance. - @param[in] ControllerHandle The handle of the controller to repair. - @param[in] ChildHandle The 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. - @param[in] ProgressNotification A 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. - - - @retval EFI_SUCCESS An attempt to repair the controller specified by - ControllerHandle and ChildHandle was performed. - The result of the repair operation can bet + Performs a repair operation on a controller in the platform. This function can + optionally report repair progress information back to the platform. + + @param[in] This A pointer to the EFI_DRIVER_HEALTH_PROTOCOL instance. + @param[in] ControllerHandle The handle of the controller to repair. + @param[in] ChildHandle The 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. + @param[in] RepairNotify A 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. + + + @retval EFI_SUCCESS An attempt to repair the controller specified by + ControllerHandle and ChildHandle was performed. + The result of the repair operation can bet determined by calling GetHealthStatus(). - @retval EFI_UNSUPPORTED The driver specified by This is not currently - managing the controller specified by ControllerHandle + @retval EFI_UNSUPPORTED The driver specified by This is not currently + managing the controller specified by ControllerHandle and ChildHandle. - @retval EFI_OUT_OF_RESOURCES There are not enough resources to perform the + @retval EFI_OUT_OF_RESOURCES There are not enough resources to perform the repair operation. */ @@ -222,16 +216,16 @@ EFI_STATUS (EFIAPI *EFI_DRIVER_HEALTH_REPAIR)( IN EFI_DRIVER_HEALTH_PROTOCOL *This, IN EFI_HANDLE ControllerHandle, - IN EFI_HANDLE ChildHandle OPTIONAL, - IN EFI_DRIVER_HEALTH_REPAIR_PROGRESS_NOTIFY ProgressNotification OPTIONAL + IN EFI_HANDLE ChildHandle OPTIONAL, + IN EFI_DRIVER_HEALTH_REPAIR_NOTIFY RepairNotify OPTIONAL ); /// /// 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. +/// 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. /// struct _EFI_DRIVER_HEALTH_PROTOCOL { EFI_DRIVER_HEALTH_GET_HEALTH_STATUS GetHealthStatus;