1cc84e262SBob Moore /******************************************************************************* 2cc84e262SBob Moore * 3cc84e262SBob Moore * Module Name: utxferror - Various error/warning output functions 4cc84e262SBob Moore * 5cc84e262SBob Moore ******************************************************************************/ 6cc84e262SBob Moore 7cc84e262SBob Moore /* 877848130SBob Moore * Copyright (C) 2000 - 2012, Intel Corp. 9cc84e262SBob Moore * All rights reserved. 10cc84e262SBob Moore * 11cc84e262SBob Moore * Redistribution and use in source and binary forms, with or without 12cc84e262SBob Moore * modification, are permitted provided that the following conditions 13cc84e262SBob Moore * are met: 14cc84e262SBob Moore * 1. Redistributions of source code must retain the above copyright 15cc84e262SBob Moore * notice, this list of conditions, and the following disclaimer, 16cc84e262SBob Moore * without modification. 17cc84e262SBob Moore * 2. Redistributions in binary form must reproduce at minimum a disclaimer 18cc84e262SBob Moore * substantially similar to the "NO WARRANTY" disclaimer below 19cc84e262SBob Moore * ("Disclaimer") and any redistribution must be conditioned upon 20cc84e262SBob Moore * including a substantially similar Disclaimer requirement for further 21cc84e262SBob Moore * binary redistribution. 22cc84e262SBob Moore * 3. Neither the names of the above-listed copyright holders nor the names 23cc84e262SBob Moore * of any contributors may be used to endorse or promote products derived 24cc84e262SBob Moore * from this software without specific prior written permission. 25cc84e262SBob Moore * 26cc84e262SBob Moore * Alternatively, this software may be distributed under the terms of the 27cc84e262SBob Moore * GNU General Public License ("GPL") version 2 as published by the Free 28cc84e262SBob Moore * Software Foundation. 29cc84e262SBob Moore * 30cc84e262SBob Moore * NO WARRANTY 31cc84e262SBob Moore * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 32cc84e262SBob Moore * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 33cc84e262SBob Moore * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR 34cc84e262SBob Moore * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 35cc84e262SBob Moore * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 36cc84e262SBob Moore * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 37cc84e262SBob Moore * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 38cc84e262SBob Moore * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 39cc84e262SBob Moore * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 40cc84e262SBob Moore * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 41cc84e262SBob Moore * POSSIBILITY OF SUCH DAMAGES. 42cc84e262SBob Moore */ 43cc84e262SBob Moore 44214f2c90SPaul Gortmaker #include <linux/export.h> 45cc84e262SBob Moore #include <acpi/acpi.h> 46cc84e262SBob Moore #include "accommon.h" 47cc84e262SBob Moore #include "acnamesp.h" 48cc84e262SBob Moore 49cc84e262SBob Moore #define _COMPONENT ACPI_UTILITIES 50cc84e262SBob Moore ACPI_MODULE_NAME("utxferror") 51cc84e262SBob Moore 52cc84e262SBob Moore /* 53cc84e262SBob Moore * This module is used for the in-kernel ACPICA as well as the ACPICA 54cc84e262SBob Moore * tools/applications. 55cc84e262SBob Moore * 56*ba494beeSBob Moore * For the iASL compiler case, the output is redirected to stderr so that 57cc84e262SBob Moore * any of the various ACPI errors and warnings do not appear in the output 58cc84e262SBob Moore * files, for either the compiler or disassembler portions of the tool. 59cc84e262SBob Moore */ 60cc84e262SBob Moore #ifdef ACPI_ASL_COMPILER 61cc84e262SBob Moore #include <stdio.h> 62cc84e262SBob Moore extern FILE *acpi_gbl_output_file; 63cc84e262SBob Moore 64cc84e262SBob Moore #define ACPI_MSG_REDIRECT_BEGIN \ 65cc84e262SBob Moore FILE *output_file = acpi_gbl_output_file; \ 66cc84e262SBob Moore acpi_os_redirect_output (stderr); 67cc84e262SBob Moore 68cc84e262SBob Moore #define ACPI_MSG_REDIRECT_END \ 69cc84e262SBob Moore acpi_os_redirect_output (output_file); 70cc84e262SBob Moore 71cc84e262SBob Moore #else 72cc84e262SBob Moore /* 73*ba494beeSBob Moore * non-iASL case - no redirection, nothing to do 74cc84e262SBob Moore */ 75cc84e262SBob Moore #define ACPI_MSG_REDIRECT_BEGIN 76cc84e262SBob Moore #define ACPI_MSG_REDIRECT_END 77cc84e262SBob Moore #endif 78cc84e262SBob Moore /* 79cc84e262SBob Moore * Common message prefixes 80cc84e262SBob Moore */ 81cc84e262SBob Moore #define ACPI_MSG_ERROR "ACPI Error: " 82cc84e262SBob Moore #define ACPI_MSG_EXCEPTION "ACPI Exception: " 83cc84e262SBob Moore #define ACPI_MSG_WARNING "ACPI Warning: " 84cc84e262SBob Moore #define ACPI_MSG_INFO "ACPI: " 8562cdd141SBob Moore #define ACPI_MSG_BIOS_ERROR "ACPI BIOS Bug: Error: " 8662cdd141SBob Moore #define ACPI_MSG_BIOS_WARNING "ACPI BIOS Bug: Warning: " 87cc84e262SBob Moore /* 88cc84e262SBob Moore * Common message suffix 89cc84e262SBob Moore */ 90cc84e262SBob Moore #define ACPI_MSG_SUFFIX \ 91cc84e262SBob Moore acpi_os_printf (" (%8.8X/%s-%u)\n", ACPI_CA_VERSION, module_name, line_number) 92cc84e262SBob Moore /******************************************************************************* 93cc84e262SBob Moore * 94cc84e262SBob Moore * FUNCTION: acpi_error 95cc84e262SBob Moore * 96cc84e262SBob Moore * PARAMETERS: module_name - Caller's module name (for error output) 97cc84e262SBob Moore * line_number - Caller's line number (for error output) 98*ba494beeSBob Moore * format - Printf format string + additional args 99cc84e262SBob Moore * 100cc84e262SBob Moore * RETURN: None 101cc84e262SBob Moore * 102cc84e262SBob Moore * DESCRIPTION: Print "ACPI Error" message with module/line/version info 103cc84e262SBob Moore * 104cc84e262SBob Moore ******************************************************************************/ 105cc84e262SBob Moore void ACPI_INTERNAL_VAR_XFACE 106cc84e262SBob Moore acpi_error(const char *module_name, u32 line_number, const char *format, ...) 107cc84e262SBob Moore { 108cc84e262SBob Moore va_list arg_list; 109cc84e262SBob Moore 110cc84e262SBob Moore ACPI_MSG_REDIRECT_BEGIN; 111cc84e262SBob Moore acpi_os_printf(ACPI_MSG_ERROR); 112cc84e262SBob Moore 113cc84e262SBob Moore va_start(arg_list, format); 114cc84e262SBob Moore acpi_os_vprintf(format, arg_list); 115cc84e262SBob Moore ACPI_MSG_SUFFIX; 116cc84e262SBob Moore va_end(arg_list); 117cc84e262SBob Moore 118cc84e262SBob Moore ACPI_MSG_REDIRECT_END; 119cc84e262SBob Moore } 120cc84e262SBob Moore 121cc84e262SBob Moore ACPI_EXPORT_SYMBOL(acpi_error) 122cc84e262SBob Moore 123cc84e262SBob Moore /******************************************************************************* 124cc84e262SBob Moore * 125cc84e262SBob Moore * FUNCTION: acpi_exception 126cc84e262SBob Moore * 127cc84e262SBob Moore * PARAMETERS: module_name - Caller's module name (for error output) 128cc84e262SBob Moore * line_number - Caller's line number (for error output) 129*ba494beeSBob Moore * status - Status to be formatted 130*ba494beeSBob Moore * format - Printf format string + additional args 131cc84e262SBob Moore * 132cc84e262SBob Moore * RETURN: None 133cc84e262SBob Moore * 134cc84e262SBob Moore * DESCRIPTION: Print "ACPI Exception" message with module/line/version info 135cc84e262SBob Moore * and decoded acpi_status. 136cc84e262SBob Moore * 137cc84e262SBob Moore ******************************************************************************/ 138cc84e262SBob Moore void ACPI_INTERNAL_VAR_XFACE 139cc84e262SBob Moore acpi_exception(const char *module_name, 140cc84e262SBob Moore u32 line_number, acpi_status status, const char *format, ...) 141cc84e262SBob Moore { 142cc84e262SBob Moore va_list arg_list; 143cc84e262SBob Moore 144cc84e262SBob Moore ACPI_MSG_REDIRECT_BEGIN; 145cc84e262SBob Moore acpi_os_printf(ACPI_MSG_EXCEPTION "%s, ", 146cc84e262SBob Moore acpi_format_exception(status)); 147cc84e262SBob Moore 148cc84e262SBob Moore va_start(arg_list, format); 149cc84e262SBob Moore acpi_os_vprintf(format, arg_list); 150cc84e262SBob Moore ACPI_MSG_SUFFIX; 151cc84e262SBob Moore va_end(arg_list); 152cc84e262SBob Moore 153cc84e262SBob Moore ACPI_MSG_REDIRECT_END; 154cc84e262SBob Moore } 155cc84e262SBob Moore 156cc84e262SBob Moore ACPI_EXPORT_SYMBOL(acpi_exception) 157cc84e262SBob Moore 158cc84e262SBob Moore /******************************************************************************* 159cc84e262SBob Moore * 160cc84e262SBob Moore * FUNCTION: acpi_warning 161cc84e262SBob Moore * 162cc84e262SBob Moore * PARAMETERS: module_name - Caller's module name (for error output) 163cc84e262SBob Moore * line_number - Caller's line number (for error output) 164*ba494beeSBob Moore * format - Printf format string + additional args 165cc84e262SBob Moore * 166cc84e262SBob Moore * RETURN: None 167cc84e262SBob Moore * 168cc84e262SBob Moore * DESCRIPTION: Print "ACPI Warning" message with module/line/version info 169cc84e262SBob Moore * 170cc84e262SBob Moore ******************************************************************************/ 171cc84e262SBob Moore void ACPI_INTERNAL_VAR_XFACE 172cc84e262SBob Moore acpi_warning(const char *module_name, u32 line_number, const char *format, ...) 173cc84e262SBob Moore { 174cc84e262SBob Moore va_list arg_list; 175cc84e262SBob Moore 176cc84e262SBob Moore ACPI_MSG_REDIRECT_BEGIN; 177cc84e262SBob Moore acpi_os_printf(ACPI_MSG_WARNING); 178cc84e262SBob Moore 179cc84e262SBob Moore va_start(arg_list, format); 180cc84e262SBob Moore acpi_os_vprintf(format, arg_list); 181cc84e262SBob Moore ACPI_MSG_SUFFIX; 182cc84e262SBob Moore va_end(arg_list); 183cc84e262SBob Moore 184cc84e262SBob Moore ACPI_MSG_REDIRECT_END; 185cc84e262SBob Moore } 186cc84e262SBob Moore 187cc84e262SBob Moore ACPI_EXPORT_SYMBOL(acpi_warning) 188cc84e262SBob Moore 189cc84e262SBob Moore /******************************************************************************* 190cc84e262SBob Moore * 191cc84e262SBob Moore * FUNCTION: acpi_info 192cc84e262SBob Moore * 193cc84e262SBob Moore * PARAMETERS: module_name - Caller's module name (for error output) 194cc84e262SBob Moore * line_number - Caller's line number (for error output) 195*ba494beeSBob Moore * format - Printf format string + additional args 196cc84e262SBob Moore * 197cc84e262SBob Moore * RETURN: None 198cc84e262SBob Moore * 199cc84e262SBob Moore * DESCRIPTION: Print generic "ACPI:" information message. There is no 200cc84e262SBob Moore * module/line/version info in order to keep the message simple. 201cc84e262SBob Moore * 202cc84e262SBob Moore * TBD: module_name and line_number args are not needed, should be removed. 203cc84e262SBob Moore * 204cc84e262SBob Moore ******************************************************************************/ 205cc84e262SBob Moore void ACPI_INTERNAL_VAR_XFACE 206cc84e262SBob Moore acpi_info(const char *module_name, u32 line_number, const char *format, ...) 207cc84e262SBob Moore { 208cc84e262SBob Moore va_list arg_list; 209cc84e262SBob Moore 210cc84e262SBob Moore ACPI_MSG_REDIRECT_BEGIN; 211cc84e262SBob Moore acpi_os_printf(ACPI_MSG_INFO); 212cc84e262SBob Moore 213cc84e262SBob Moore va_start(arg_list, format); 214cc84e262SBob Moore acpi_os_vprintf(format, arg_list); 215cc84e262SBob Moore acpi_os_printf("\n"); 216cc84e262SBob Moore va_end(arg_list); 217cc84e262SBob Moore 218cc84e262SBob Moore ACPI_MSG_REDIRECT_END; 219cc84e262SBob Moore } 220cc84e262SBob Moore 221cc84e262SBob Moore ACPI_EXPORT_SYMBOL(acpi_info) 222cc84e262SBob Moore 22362cdd141SBob Moore /******************************************************************************* 22462cdd141SBob Moore * 22562cdd141SBob Moore * FUNCTION: acpi_bios_error 22662cdd141SBob Moore * 22762cdd141SBob Moore * PARAMETERS: module_name - Caller's module name (for error output) 22862cdd141SBob Moore * line_number - Caller's line number (for error output) 22962cdd141SBob Moore * format - Printf format string + additional args 23062cdd141SBob Moore * 23162cdd141SBob Moore * RETURN: None 23262cdd141SBob Moore * 23362cdd141SBob Moore * DESCRIPTION: Print "ACPI Firmware Error" message with module/line/version 23462cdd141SBob Moore * info 23562cdd141SBob Moore * 23662cdd141SBob Moore ******************************************************************************/ 23762cdd141SBob Moore void ACPI_INTERNAL_VAR_XFACE 23862cdd141SBob Moore acpi_bios_error(const char *module_name, 23962cdd141SBob Moore u32 line_number, const char *format, ...) 24062cdd141SBob Moore { 24162cdd141SBob Moore va_list arg_list; 24262cdd141SBob Moore 24362cdd141SBob Moore ACPI_MSG_REDIRECT_BEGIN; 24462cdd141SBob Moore acpi_os_printf(ACPI_MSG_BIOS_ERROR); 24562cdd141SBob Moore 24662cdd141SBob Moore va_start(arg_list, format); 24762cdd141SBob Moore acpi_os_vprintf(format, arg_list); 24862cdd141SBob Moore ACPI_MSG_SUFFIX; 24962cdd141SBob Moore va_end(arg_list); 25062cdd141SBob Moore 25162cdd141SBob Moore ACPI_MSG_REDIRECT_END; 25262cdd141SBob Moore } 25362cdd141SBob Moore 25462cdd141SBob Moore ACPI_EXPORT_SYMBOL(acpi_bios_error) 25562cdd141SBob Moore 25662cdd141SBob Moore /******************************************************************************* 25762cdd141SBob Moore * 25862cdd141SBob Moore * FUNCTION: acpi_bios_warning 25962cdd141SBob Moore * 26062cdd141SBob Moore * PARAMETERS: module_name - Caller's module name (for error output) 26162cdd141SBob Moore * line_number - Caller's line number (for error output) 26262cdd141SBob Moore * format - Printf format string + additional args 26362cdd141SBob Moore * 26462cdd141SBob Moore * RETURN: None 26562cdd141SBob Moore * 26662cdd141SBob Moore * DESCRIPTION: Print "ACPI Firmware Warning" message with module/line/version 26762cdd141SBob Moore * info 26862cdd141SBob Moore * 26962cdd141SBob Moore ******************************************************************************/ 27062cdd141SBob Moore void ACPI_INTERNAL_VAR_XFACE 27162cdd141SBob Moore acpi_bios_warning(const char *module_name, 27262cdd141SBob Moore u32 line_number, const char *format, ...) 27362cdd141SBob Moore { 27462cdd141SBob Moore va_list arg_list; 27562cdd141SBob Moore 27662cdd141SBob Moore ACPI_MSG_REDIRECT_BEGIN; 27762cdd141SBob Moore acpi_os_printf(ACPI_MSG_BIOS_WARNING); 27862cdd141SBob Moore 27962cdd141SBob Moore va_start(arg_list, format); 28062cdd141SBob Moore acpi_os_vprintf(format, arg_list); 28162cdd141SBob Moore ACPI_MSG_SUFFIX; 28262cdd141SBob Moore va_end(arg_list); 28362cdd141SBob Moore 28462cdd141SBob Moore ACPI_MSG_REDIRECT_END; 28562cdd141SBob Moore } 28662cdd141SBob Moore 28762cdd141SBob Moore ACPI_EXPORT_SYMBOL(acpi_bios_warning) 28862cdd141SBob Moore 289cc84e262SBob Moore /* 290cc84e262SBob Moore * The remainder of this module contains internal error functions that may 291cc84e262SBob Moore * be configured out. 292cc84e262SBob Moore */ 29375434a2aSBob Moore #if !defined (ACPI_NO_ERROR_MESSAGES) && !defined (ACPI_BIN_APP) 294cc84e262SBob Moore /******************************************************************************* 295cc84e262SBob Moore * 296cc84e262SBob Moore * FUNCTION: acpi_ut_predefined_warning 297cc84e262SBob Moore * 298cc84e262SBob Moore * PARAMETERS: module_name - Caller's module name (for error output) 299cc84e262SBob Moore * line_number - Caller's line number (for error output) 300cc84e262SBob Moore * Pathname - Full pathname to the node 301cc84e262SBob Moore * node_flags - From Namespace node for the method/object 302cc84e262SBob Moore * Format - Printf format string + additional args 303cc84e262SBob Moore * 304cc84e262SBob Moore * RETURN: None 305cc84e262SBob Moore * 306cc84e262SBob Moore * DESCRIPTION: Warnings for the predefined validation module. Messages are 307cc84e262SBob Moore * only emitted the first time a problem with a particular 308cc84e262SBob Moore * method/object is detected. This prevents a flood of error 309cc84e262SBob Moore * messages for methods that are repeatedly evaluated. 310cc84e262SBob Moore * 311cc84e262SBob Moore ******************************************************************************/ 312cc84e262SBob Moore void ACPI_INTERNAL_VAR_XFACE 313cc84e262SBob Moore acpi_ut_predefined_warning(const char *module_name, 314cc84e262SBob Moore u32 line_number, 315cc84e262SBob Moore char *pathname, 316cc84e262SBob Moore u8 node_flags, const char *format, ...) 317cc84e262SBob Moore { 318cc84e262SBob Moore va_list arg_list; 319cc84e262SBob Moore 320cc84e262SBob Moore /* 321cc84e262SBob Moore * Warning messages for this method/object will be disabled after the 322cc84e262SBob Moore * first time a validation fails or an object is successfully repaired. 323cc84e262SBob Moore */ 324cc84e262SBob Moore if (node_flags & ANOBJ_EVALUATED) { 325cc84e262SBob Moore return; 326cc84e262SBob Moore } 327cc84e262SBob Moore 328cc84e262SBob Moore acpi_os_printf(ACPI_MSG_WARNING "For %s: ", pathname); 329cc84e262SBob Moore 330cc84e262SBob Moore va_start(arg_list, format); 331cc84e262SBob Moore acpi_os_vprintf(format, arg_list); 332cc84e262SBob Moore ACPI_MSG_SUFFIX; 333cc84e262SBob Moore va_end(arg_list); 334cc84e262SBob Moore } 335cc84e262SBob Moore 336cc84e262SBob Moore /******************************************************************************* 337cc84e262SBob Moore * 338cc84e262SBob Moore * FUNCTION: acpi_ut_predefined_info 339cc84e262SBob Moore * 340cc84e262SBob Moore * PARAMETERS: module_name - Caller's module name (for error output) 341cc84e262SBob Moore * line_number - Caller's line number (for error output) 342*ba494beeSBob Moore * pathname - Full pathname to the node 343cc84e262SBob Moore * node_flags - From Namespace node for the method/object 344*ba494beeSBob Moore * format - Printf format string + additional args 345cc84e262SBob Moore * 346cc84e262SBob Moore * RETURN: None 347cc84e262SBob Moore * 348cc84e262SBob Moore * DESCRIPTION: Info messages for the predefined validation module. Messages 349cc84e262SBob Moore * are only emitted the first time a problem with a particular 350cc84e262SBob Moore * method/object is detected. This prevents a flood of 351cc84e262SBob Moore * messages for methods that are repeatedly evaluated. 352cc84e262SBob Moore * 353cc84e262SBob Moore ******************************************************************************/ 354cc84e262SBob Moore 355cc84e262SBob Moore void ACPI_INTERNAL_VAR_XFACE 356cc84e262SBob Moore acpi_ut_predefined_info(const char *module_name, 357cc84e262SBob Moore u32 line_number, 358cc84e262SBob Moore char *pathname, u8 node_flags, const char *format, ...) 359cc84e262SBob Moore { 360cc84e262SBob Moore va_list arg_list; 361cc84e262SBob Moore 362cc84e262SBob Moore /* 363cc84e262SBob Moore * Warning messages for this method/object will be disabled after the 364cc84e262SBob Moore * first time a validation fails or an object is successfully repaired. 365cc84e262SBob Moore */ 366cc84e262SBob Moore if (node_flags & ANOBJ_EVALUATED) { 367cc84e262SBob Moore return; 368cc84e262SBob Moore } 369cc84e262SBob Moore 370cc84e262SBob Moore acpi_os_printf(ACPI_MSG_INFO "For %s: ", pathname); 371cc84e262SBob Moore 372cc84e262SBob Moore va_start(arg_list, format); 373cc84e262SBob Moore acpi_os_vprintf(format, arg_list); 374cc84e262SBob Moore ACPI_MSG_SUFFIX; 375cc84e262SBob Moore va_end(arg_list); 376cc84e262SBob Moore } 377cc84e262SBob Moore 378cc84e262SBob Moore /******************************************************************************* 379cc84e262SBob Moore * 380cc84e262SBob Moore * FUNCTION: acpi_ut_namespace_error 381cc84e262SBob Moore * 382cc84e262SBob Moore * PARAMETERS: module_name - Caller's module name (for error output) 383cc84e262SBob Moore * line_number - Caller's line number (for error output) 384cc84e262SBob Moore * internal_name - Name or path of the namespace node 385cc84e262SBob Moore * lookup_status - Exception code from NS lookup 386cc84e262SBob Moore * 387cc84e262SBob Moore * RETURN: None 388cc84e262SBob Moore * 389cc84e262SBob Moore * DESCRIPTION: Print error message with the full pathname for the NS node. 390cc84e262SBob Moore * 391cc84e262SBob Moore ******************************************************************************/ 392cc84e262SBob Moore 393cc84e262SBob Moore void 394cc84e262SBob Moore acpi_ut_namespace_error(const char *module_name, 395cc84e262SBob Moore u32 line_number, 396cc84e262SBob Moore const char *internal_name, acpi_status lookup_status) 397cc84e262SBob Moore { 398cc84e262SBob Moore acpi_status status; 399cc84e262SBob Moore u32 bad_name; 400cc84e262SBob Moore char *name = NULL; 401cc84e262SBob Moore 402cc84e262SBob Moore ACPI_MSG_REDIRECT_BEGIN; 403cc84e262SBob Moore acpi_os_printf(ACPI_MSG_ERROR); 404cc84e262SBob Moore 405cc84e262SBob Moore if (lookup_status == AE_BAD_CHARACTER) { 406cc84e262SBob Moore 407cc84e262SBob Moore /* There is a non-ascii character in the name */ 408cc84e262SBob Moore 409cc84e262SBob Moore ACPI_MOVE_32_TO_32(&bad_name, 410cc84e262SBob Moore ACPI_CAST_PTR(u32, internal_name)); 411cc84e262SBob Moore acpi_os_printf("[0x%4.4X] (NON-ASCII)", bad_name); 412cc84e262SBob Moore } else { 413cc84e262SBob Moore /* Convert path to external format */ 414cc84e262SBob Moore 415cc84e262SBob Moore status = acpi_ns_externalize_name(ACPI_UINT32_MAX, 416cc84e262SBob Moore internal_name, NULL, &name); 417cc84e262SBob Moore 418cc84e262SBob Moore /* Print target name */ 419cc84e262SBob Moore 420cc84e262SBob Moore if (ACPI_SUCCESS(status)) { 421cc84e262SBob Moore acpi_os_printf("[%s]", name); 422cc84e262SBob Moore } else { 423cc84e262SBob Moore acpi_os_printf("[COULD NOT EXTERNALIZE NAME]"); 424cc84e262SBob Moore } 425cc84e262SBob Moore 426cc84e262SBob Moore if (name) { 427cc84e262SBob Moore ACPI_FREE(name); 428cc84e262SBob Moore } 429cc84e262SBob Moore } 430cc84e262SBob Moore 431cc84e262SBob Moore acpi_os_printf(" Namespace lookup failure, %s", 432cc84e262SBob Moore acpi_format_exception(lookup_status)); 433cc84e262SBob Moore 434cc84e262SBob Moore ACPI_MSG_SUFFIX; 435cc84e262SBob Moore ACPI_MSG_REDIRECT_END; 436cc84e262SBob Moore } 437cc84e262SBob Moore 438cc84e262SBob Moore /******************************************************************************* 439cc84e262SBob Moore * 440cc84e262SBob Moore * FUNCTION: acpi_ut_method_error 441cc84e262SBob Moore * 442cc84e262SBob Moore * PARAMETERS: module_name - Caller's module name (for error output) 443cc84e262SBob Moore * line_number - Caller's line number (for error output) 444*ba494beeSBob Moore * message - Error message to use on failure 445cc84e262SBob Moore * prefix_node - Prefix relative to the path 446*ba494beeSBob Moore * path - Path to the node (optional) 447cc84e262SBob Moore * method_status - Execution status 448cc84e262SBob Moore * 449cc84e262SBob Moore * RETURN: None 450cc84e262SBob Moore * 451cc84e262SBob Moore * DESCRIPTION: Print error message with the full pathname for the method. 452cc84e262SBob Moore * 453cc84e262SBob Moore ******************************************************************************/ 454cc84e262SBob Moore 455cc84e262SBob Moore void 456cc84e262SBob Moore acpi_ut_method_error(const char *module_name, 457cc84e262SBob Moore u32 line_number, 458cc84e262SBob Moore const char *message, 459cc84e262SBob Moore struct acpi_namespace_node *prefix_node, 460cc84e262SBob Moore const char *path, acpi_status method_status) 461cc84e262SBob Moore { 462cc84e262SBob Moore acpi_status status; 463cc84e262SBob Moore struct acpi_namespace_node *node = prefix_node; 464cc84e262SBob Moore 465cc84e262SBob Moore ACPI_MSG_REDIRECT_BEGIN; 466cc84e262SBob Moore acpi_os_printf(ACPI_MSG_ERROR); 467cc84e262SBob Moore 468cc84e262SBob Moore if (path) { 469cc84e262SBob Moore status = 470cc84e262SBob Moore acpi_ns_get_node(prefix_node, path, ACPI_NS_NO_UPSEARCH, 471cc84e262SBob Moore &node); 472cc84e262SBob Moore if (ACPI_FAILURE(status)) { 473cc84e262SBob Moore acpi_os_printf("[Could not get node by pathname]"); 474cc84e262SBob Moore } 475cc84e262SBob Moore } 476cc84e262SBob Moore 477cc84e262SBob Moore acpi_ns_print_node_pathname(node, message); 478cc84e262SBob Moore acpi_os_printf(", %s", acpi_format_exception(method_status)); 479cc84e262SBob Moore 480cc84e262SBob Moore ACPI_MSG_SUFFIX; 481cc84e262SBob Moore ACPI_MSG_REDIRECT_END; 482cc84e262SBob Moore } 483cc84e262SBob Moore 484cc84e262SBob Moore #endif /* ACPI_NO_ERROR_MESSAGES */ 485