LCOV - code coverage report
Current view: top level - drivers/acpi/acpica - uterror.c (source / functions) Hit Total Coverage
Test: combined.info Lines: 0 64 0.0 %
Date: 2022-04-01 14:17:54 Functions: 0 5 0.0 %
Branches: 0 17 0.0 %

           Branch data     Line data    Source code
       1                 :            : // SPDX-License-Identifier: BSD-3-Clause OR GPL-2.0
       2                 :            : /*******************************************************************************
       3                 :            :  *
       4                 :            :  * Module Name: uterror - Various internal error/warning output functions
       5                 :            :  *
       6                 :            :  ******************************************************************************/
       7                 :            : 
       8                 :            : #include <acpi/acpi.h>
       9                 :            : #include "accommon.h"
      10                 :            : #include "acnamesp.h"
      11                 :            : 
      12                 :            : #define _COMPONENT          ACPI_UTILITIES
      13                 :            : ACPI_MODULE_NAME("uterror")
      14                 :            : 
      15                 :            : /*
      16                 :            :  * This module contains internal error functions that may
      17                 :            :  * be configured out.
      18                 :            :  */
      19                 :            : #if !defined (ACPI_NO_ERROR_MESSAGES)
      20                 :            : /*******************************************************************************
      21                 :            :  *
      22                 :            :  * FUNCTION:    acpi_ut_predefined_warning
      23                 :            :  *
      24                 :            :  * PARAMETERS:  module_name     - Caller's module name (for error output)
      25                 :            :  *              line_number     - Caller's line number (for error output)
      26                 :            :  *              pathname        - Full pathname to the node
      27                 :            :  *              node_flags      - From Namespace node for the method/object
      28                 :            :  *              format          - Printf format string + additional args
      29                 :            :  *
      30                 :            :  * RETURN:      None
      31                 :            :  *
      32                 :            :  * DESCRIPTION: Warnings for the predefined validation module. Messages are
      33                 :            :  *              only emitted the first time a problem with a particular
      34                 :            :  *              method/object is detected. This prevents a flood of error
      35                 :            :  *              messages for methods that are repeatedly evaluated.
      36                 :            :  *
      37                 :            :  ******************************************************************************/
      38                 :            : void ACPI_INTERNAL_VAR_XFACE
      39                 :          0 : acpi_ut_predefined_warning(const char *module_name,
      40                 :            :                            u32 line_number,
      41                 :            :                            char *pathname,
      42                 :            :                            u16 node_flags, const char *format, ...)
      43                 :            : {
      44                 :          0 :         va_list arg_list;
      45                 :            : 
      46                 :            :         /*
      47                 :            :          * Warning messages for this method/object will be disabled after the
      48                 :            :          * first time a validation fails or an object is successfully repaired.
      49                 :            :          */
      50         [ #  # ]:          0 :         if (node_flags & ANOBJ_EVALUATED) {
      51                 :          0 :                 return;
      52                 :            :         }
      53                 :            : 
      54                 :          0 :         acpi_os_printf(ACPI_MSG_WARNING "%s: ", pathname);
      55                 :            : 
      56                 :          0 :         va_start(arg_list, format);
      57                 :          0 :         acpi_os_vprintf(format, arg_list);
      58                 :          0 :         ACPI_MSG_SUFFIX;
      59                 :          0 :         va_end(arg_list);
      60                 :            : }
      61                 :            : 
      62                 :            : /*******************************************************************************
      63                 :            :  *
      64                 :            :  * FUNCTION:    acpi_ut_predefined_info
      65                 :            :  *
      66                 :            :  * PARAMETERS:  module_name     - Caller's module name (for error output)
      67                 :            :  *              line_number     - Caller's line number (for error output)
      68                 :            :  *              pathname        - Full pathname to the node
      69                 :            :  *              node_flags      - From Namespace node for the method/object
      70                 :            :  *              format          - Printf format string + additional args
      71                 :            :  *
      72                 :            :  * RETURN:      None
      73                 :            :  *
      74                 :            :  * DESCRIPTION: Info messages for the predefined validation module. Messages
      75                 :            :  *              are only emitted the first time a problem with a particular
      76                 :            :  *              method/object is detected. This prevents a flood of
      77                 :            :  *              messages for methods that are repeatedly evaluated.
      78                 :            :  *
      79                 :            :  ******************************************************************************/
      80                 :            : 
      81                 :            : void ACPI_INTERNAL_VAR_XFACE
      82                 :          0 : acpi_ut_predefined_info(const char *module_name,
      83                 :            :                         u32 line_number,
      84                 :            :                         char *pathname, u16 node_flags, const char *format, ...)
      85                 :            : {
      86                 :          0 :         va_list arg_list;
      87                 :            : 
      88                 :            :         /*
      89                 :            :          * Warning messages for this method/object will be disabled after the
      90                 :            :          * first time a validation fails or an object is successfully repaired.
      91                 :            :          */
      92         [ #  # ]:          0 :         if (node_flags & ANOBJ_EVALUATED) {
      93                 :          0 :                 return;
      94                 :            :         }
      95                 :            : 
      96                 :          0 :         acpi_os_printf(ACPI_MSG_INFO "%s: ", pathname);
      97                 :            : 
      98                 :          0 :         va_start(arg_list, format);
      99                 :          0 :         acpi_os_vprintf(format, arg_list);
     100                 :          0 :         ACPI_MSG_SUFFIX;
     101                 :          0 :         va_end(arg_list);
     102                 :            : }
     103                 :            : 
     104                 :            : /*******************************************************************************
     105                 :            :  *
     106                 :            :  * FUNCTION:    acpi_ut_predefined_bios_error
     107                 :            :  *
     108                 :            :  * PARAMETERS:  module_name     - Caller's module name (for error output)
     109                 :            :  *              line_number     - Caller's line number (for error output)
     110                 :            :  *              pathname        - Full pathname to the node
     111                 :            :  *              node_flags      - From Namespace node for the method/object
     112                 :            :  *              format          - Printf format string + additional args
     113                 :            :  *
     114                 :            :  * RETURN:      None
     115                 :            :  *
     116                 :            :  * DESCRIPTION: BIOS error message for predefined names. Messages
     117                 :            :  *              are only emitted the first time a problem with a particular
     118                 :            :  *              method/object is detected. This prevents a flood of
     119                 :            :  *              messages for methods that are repeatedly evaluated.
     120                 :            :  *
     121                 :            :  ******************************************************************************/
     122                 :            : 
     123                 :            : void ACPI_INTERNAL_VAR_XFACE
     124                 :          0 : acpi_ut_predefined_bios_error(const char *module_name,
     125                 :            :                               u32 line_number,
     126                 :            :                               char *pathname,
     127                 :            :                               u16 node_flags, const char *format, ...)
     128                 :            : {
     129                 :          0 :         va_list arg_list;
     130                 :            : 
     131                 :            :         /*
     132                 :            :          * Warning messages for this method/object will be disabled after the
     133                 :            :          * first time a validation fails or an object is successfully repaired.
     134                 :            :          */
     135         [ #  # ]:          0 :         if (node_flags & ANOBJ_EVALUATED) {
     136                 :          0 :                 return;
     137                 :            :         }
     138                 :            : 
     139                 :          0 :         acpi_os_printf(ACPI_MSG_BIOS_ERROR "%s: ", pathname);
     140                 :            : 
     141                 :          0 :         va_start(arg_list, format);
     142                 :          0 :         acpi_os_vprintf(format, arg_list);
     143                 :          0 :         ACPI_MSG_SUFFIX;
     144                 :          0 :         va_end(arg_list);
     145                 :            : }
     146                 :            : 
     147                 :            : /*******************************************************************************
     148                 :            :  *
     149                 :            :  * FUNCTION:    acpi_ut_prefixed_namespace_error
     150                 :            :  *
     151                 :            :  * PARAMETERS:  module_name         - Caller's module name (for error output)
     152                 :            :  *              line_number         - Caller's line number (for error output)
     153                 :            :  *              prefix_scope        - Scope/Path that prefixes the internal path
     154                 :            :  *              internal_path       - Name or path of the namespace node
     155                 :            :  *              lookup_status       - Exception code from NS lookup
     156                 :            :  *
     157                 :            :  * RETURN:      None
     158                 :            :  *
     159                 :            :  * DESCRIPTION: Print error message with the full pathname constructed this way:
     160                 :            :  *
     161                 :            :  *                  prefix_scope_node_full_path.externalized_internal_path
     162                 :            :  *
     163                 :            :  * NOTE:        10/2017: Treat the major ns_lookup errors as firmware errors
     164                 :            :  *
     165                 :            :  ******************************************************************************/
     166                 :            : 
     167                 :            : void
     168                 :          0 : acpi_ut_prefixed_namespace_error(const char *module_name,
     169                 :            :                                  u32 line_number,
     170                 :            :                                  union acpi_generic_state *prefix_scope,
     171                 :            :                                  const char *internal_path,
     172                 :            :                                  acpi_status lookup_status)
     173                 :            : {
     174                 :          0 :         char *full_path;
     175                 :          0 :         const char *message;
     176                 :            : 
     177                 :            :         /*
     178                 :            :          * Main cases:
     179                 :            :          * 1) Object creation, object must not already exist
     180                 :            :          * 2) Object lookup, object must exist
     181                 :            :          */
     182      [ #  #  # ]:          0 :         switch (lookup_status) {
     183                 :          0 :         case AE_ALREADY_EXISTS:
     184                 :            : 
     185                 :          0 :                 acpi_os_printf(ACPI_MSG_BIOS_ERROR);
     186                 :          0 :                 message = "Failure creating named object";
     187                 :          0 :                 break;
     188                 :            : 
     189                 :          0 :         case AE_NOT_FOUND:
     190                 :            : 
     191                 :          0 :                 acpi_os_printf(ACPI_MSG_BIOS_ERROR);
     192                 :          0 :                 message = "Could not resolve symbol";
     193                 :          0 :                 break;
     194                 :            : 
     195                 :          0 :         default:
     196                 :            : 
     197                 :          0 :                 acpi_os_printf(ACPI_MSG_ERROR);
     198                 :          0 :                 message = "Failure resolving symbol";
     199                 :          0 :                 break;
     200                 :            :         }
     201                 :            : 
     202                 :            :         /* Concatenate the prefix path and the internal path */
     203                 :            : 
     204                 :          0 :         full_path =
     205                 :          0 :             acpi_ns_build_prefixed_pathname(prefix_scope, internal_path);
     206                 :            : 
     207         [ #  # ]:          0 :         acpi_os_printf("%s [%s], %s", message,
     208                 :            :                        full_path ? full_path : "Could not get pathname",
     209                 :            :                        acpi_format_exception(lookup_status));
     210                 :            : 
     211         [ #  # ]:          0 :         if (full_path) {
     212                 :          0 :                 ACPI_FREE(full_path);
     213                 :            :         }
     214                 :            : 
     215                 :          0 :         ACPI_MSG_SUFFIX;
     216                 :          0 : }
     217                 :            : 
     218                 :            : #ifdef __OBSOLETE_FUNCTION
     219                 :            : /*******************************************************************************
     220                 :            :  *
     221                 :            :  * FUNCTION:    acpi_ut_namespace_error
     222                 :            :  *
     223                 :            :  * PARAMETERS:  module_name         - Caller's module name (for error output)
     224                 :            :  *              line_number         - Caller's line number (for error output)
     225                 :            :  *              internal_name       - Name or path of the namespace node
     226                 :            :  *              lookup_status       - Exception code from NS lookup
     227                 :            :  *
     228                 :            :  * RETURN:      None
     229                 :            :  *
     230                 :            :  * DESCRIPTION: Print error message with the full pathname for the NS node.
     231                 :            :  *
     232                 :            :  ******************************************************************************/
     233                 :            : 
     234                 :            : void
     235                 :            : acpi_ut_namespace_error(const char *module_name,
     236                 :            :                         u32 line_number,
     237                 :            :                         const char *internal_name, acpi_status lookup_status)
     238                 :            : {
     239                 :            :         acpi_status status;
     240                 :            :         u32 bad_name;
     241                 :            :         char *name = NULL;
     242                 :            : 
     243                 :            :         ACPI_MSG_REDIRECT_BEGIN;
     244                 :            :         acpi_os_printf(ACPI_MSG_ERROR);
     245                 :            : 
     246                 :            :         if (lookup_status == AE_BAD_CHARACTER) {
     247                 :            : 
     248                 :            :                 /* There is a non-ascii character in the name */
     249                 :            : 
     250                 :            :                 ACPI_MOVE_32_TO_32(&bad_name,
     251                 :            :                                    ACPI_CAST_PTR(u32, internal_name));
     252                 :            :                 acpi_os_printf("[0x%.8X] (NON-ASCII)", bad_name);
     253                 :            :         } else {
     254                 :            :                 /* Convert path to external format */
     255                 :            : 
     256                 :            :                 status =
     257                 :            :                     acpi_ns_externalize_name(ACPI_UINT32_MAX, internal_name,
     258                 :            :                                              NULL, &name);
     259                 :            : 
     260                 :            :                 /* Print target name */
     261                 :            : 
     262                 :            :                 if (ACPI_SUCCESS(status)) {
     263                 :            :                         acpi_os_printf("[%s]", name);
     264                 :            :                 } else {
     265                 :            :                         acpi_os_printf("[COULD NOT EXTERNALIZE NAME]");
     266                 :            :                 }
     267                 :            : 
     268                 :            :                 if (name) {
     269                 :            :                         ACPI_FREE(name);
     270                 :            :                 }
     271                 :            :         }
     272                 :            : 
     273                 :            :         acpi_os_printf(" Namespace lookup failure, %s",
     274                 :            :                        acpi_format_exception(lookup_status));
     275                 :            : 
     276                 :            :         ACPI_MSG_SUFFIX;
     277                 :            :         ACPI_MSG_REDIRECT_END;
     278                 :            : }
     279                 :            : #endif
     280                 :            : 
     281                 :            : /*******************************************************************************
     282                 :            :  *
     283                 :            :  * FUNCTION:    acpi_ut_method_error
     284                 :            :  *
     285                 :            :  * PARAMETERS:  module_name         - Caller's module name (for error output)
     286                 :            :  *              line_number         - Caller's line number (for error output)
     287                 :            :  *              message             - Error message to use on failure
     288                 :            :  *              prefix_node         - Prefix relative to the path
     289                 :            :  *              path                - Path to the node (optional)
     290                 :            :  *              method_status       - Execution status
     291                 :            :  *
     292                 :            :  * RETURN:      None
     293                 :            :  *
     294                 :            :  * DESCRIPTION: Print error message with the full pathname for the method.
     295                 :            :  *
     296                 :            :  ******************************************************************************/
     297                 :            : 
     298                 :            : void
     299                 :          0 : acpi_ut_method_error(const char *module_name,
     300                 :            :                      u32 line_number,
     301                 :            :                      const char *message,
     302                 :            :                      struct acpi_namespace_node *prefix_node,
     303                 :            :                      const char *path, acpi_status method_status)
     304                 :            : {
     305                 :          0 :         acpi_status status;
     306                 :          0 :         struct acpi_namespace_node *node = prefix_node;
     307                 :            : 
     308                 :          0 :         ACPI_MSG_REDIRECT_BEGIN;
     309                 :          0 :         acpi_os_printf(ACPI_MSG_ERROR);
     310                 :            : 
     311         [ #  # ]:          0 :         if (path) {
     312                 :          0 :                 status = acpi_ns_get_node(prefix_node, path,
     313                 :            :                                           ACPI_NS_NO_UPSEARCH, &node);
     314         [ #  # ]:          0 :                 if (ACPI_FAILURE(status)) {
     315                 :          0 :                         acpi_os_printf("[Could not get node by pathname]");
     316                 :            :                 }
     317                 :            :         }
     318                 :            : 
     319                 :          0 :         acpi_ns_print_node_pathname(node, message);
     320                 :          0 :         acpi_os_printf(" due to previous error (%s)",
     321                 :            :                        acpi_format_exception(method_status));
     322                 :            : 
     323                 :          0 :         ACPI_MSG_SUFFIX;
     324                 :          0 :         ACPI_MSG_REDIRECT_END;
     325                 :          0 : }
     326                 :            : 
     327                 :            : #endif                          /* ACPI_NO_ERROR_MESSAGES */

Generated by: LCOV version 1.14