1*cc84e262SBob Moore /******************************************************************************* 2*cc84e262SBob Moore * 3*cc84e262SBob Moore * Module Name: utxferror - Various error/warning output functions 4*cc84e262SBob Moore * 5*cc84e262SBob Moore ******************************************************************************/ 6*cc84e262SBob Moore 7*cc84e262SBob Moore /* 8*cc84e262SBob Moore * Copyright (C) 2000 - 2010, Intel Corp. 9*cc84e262SBob Moore * All rights reserved. 10*cc84e262SBob Moore * 11*cc84e262SBob Moore * Redistribution and use in source and binary forms, with or without 12*cc84e262SBob Moore * modification, are permitted provided that the following conditions 13*cc84e262SBob Moore * are met: 14*cc84e262SBob Moore * 1. Redistributions of source code must retain the above copyright 15*cc84e262SBob Moore * notice, this list of conditions, and the following disclaimer, 16*cc84e262SBob Moore * without modification. 17*cc84e262SBob Moore * 2. Redistributions in binary form must reproduce at minimum a disclaimer 18*cc84e262SBob Moore * substantially similar to the "NO WARRANTY" disclaimer below 19*cc84e262SBob Moore * ("Disclaimer") and any redistribution must be conditioned upon 20*cc84e262SBob Moore * including a substantially similar Disclaimer requirement for further 21*cc84e262SBob Moore * binary redistribution. 22*cc84e262SBob Moore * 3. Neither the names of the above-listed copyright holders nor the names 23*cc84e262SBob Moore * of any contributors may be used to endorse or promote products derived 24*cc84e262SBob Moore * from this software without specific prior written permission. 25*cc84e262SBob Moore * 26*cc84e262SBob Moore * Alternatively, this software may be distributed under the terms of the 27*cc84e262SBob Moore * GNU General Public License ("GPL") version 2 as published by the Free 28*cc84e262SBob Moore * Software Foundation. 29*cc84e262SBob Moore * 30*cc84e262SBob Moore * NO WARRANTY 31*cc84e262SBob Moore * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 32*cc84e262SBob Moore * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 33*cc84e262SBob Moore * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR 34*cc84e262SBob Moore * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 35*cc84e262SBob Moore * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 36*cc84e262SBob Moore * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 37*cc84e262SBob Moore * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 38*cc84e262SBob Moore * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 39*cc84e262SBob Moore * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 40*cc84e262SBob Moore * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 41*cc84e262SBob Moore * POSSIBILITY OF SUCH DAMAGES. 42*cc84e262SBob Moore */ 43*cc84e262SBob Moore 44*cc84e262SBob Moore #include <acpi/acpi.h> 45*cc84e262SBob Moore #include "accommon.h" 46*cc84e262SBob Moore #include "acnamesp.h" 47*cc84e262SBob Moore 48*cc84e262SBob Moore #define _COMPONENT ACPI_UTILITIES 49*cc84e262SBob Moore ACPI_MODULE_NAME("utxferror") 50*cc84e262SBob Moore 51*cc84e262SBob Moore /* 52*cc84e262SBob Moore * This module is used for the in-kernel ACPICA as well as the ACPICA 53*cc84e262SBob Moore * tools/applications. 54*cc84e262SBob Moore * 55*cc84e262SBob Moore * For the i_aSL compiler case, the output is redirected to stderr so that 56*cc84e262SBob Moore * any of the various ACPI errors and warnings do not appear in the output 57*cc84e262SBob Moore * files, for either the compiler or disassembler portions of the tool. 58*cc84e262SBob Moore */ 59*cc84e262SBob Moore #ifdef ACPI_ASL_COMPILER 60*cc84e262SBob Moore #include <stdio.h> 61*cc84e262SBob Moore extern FILE *acpi_gbl_output_file; 62*cc84e262SBob Moore 63*cc84e262SBob Moore #define ACPI_MSG_REDIRECT_BEGIN \ 64*cc84e262SBob Moore FILE *output_file = acpi_gbl_output_file; \ 65*cc84e262SBob Moore acpi_os_redirect_output (stderr); 66*cc84e262SBob Moore 67*cc84e262SBob Moore #define ACPI_MSG_REDIRECT_END \ 68*cc84e262SBob Moore acpi_os_redirect_output (output_file); 69*cc84e262SBob Moore 70*cc84e262SBob Moore #else 71*cc84e262SBob Moore /* 72*cc84e262SBob Moore * non-i_aSL case - no redirection, nothing to do 73*cc84e262SBob Moore */ 74*cc84e262SBob Moore #define ACPI_MSG_REDIRECT_BEGIN 75*cc84e262SBob Moore #define ACPI_MSG_REDIRECT_END 76*cc84e262SBob Moore #endif 77*cc84e262SBob Moore /* 78*cc84e262SBob Moore * Common message prefixes 79*cc84e262SBob Moore */ 80*cc84e262SBob Moore #define ACPI_MSG_ERROR "ACPI Error: " 81*cc84e262SBob Moore #define ACPI_MSG_EXCEPTION "ACPI Exception: " 82*cc84e262SBob Moore #define ACPI_MSG_WARNING "ACPI Warning: " 83*cc84e262SBob Moore #define ACPI_MSG_INFO "ACPI: " 84*cc84e262SBob Moore /* 85*cc84e262SBob Moore * Common message suffix 86*cc84e262SBob Moore */ 87*cc84e262SBob Moore #define ACPI_MSG_SUFFIX \ 88*cc84e262SBob Moore acpi_os_printf (" (%8.8X/%s-%u)\n", ACPI_CA_VERSION, module_name, line_number) 89*cc84e262SBob Moore /******************************************************************************* 90*cc84e262SBob Moore * 91*cc84e262SBob Moore * FUNCTION: acpi_error 92*cc84e262SBob Moore * 93*cc84e262SBob Moore * PARAMETERS: module_name - Caller's module name (for error output) 94*cc84e262SBob Moore * line_number - Caller's line number (for error output) 95*cc84e262SBob Moore * Format - Printf format string + additional args 96*cc84e262SBob Moore * 97*cc84e262SBob Moore * RETURN: None 98*cc84e262SBob Moore * 99*cc84e262SBob Moore * DESCRIPTION: Print "ACPI Error" message with module/line/version info 100*cc84e262SBob Moore * 101*cc84e262SBob Moore ******************************************************************************/ 102*cc84e262SBob Moore void ACPI_INTERNAL_VAR_XFACE 103*cc84e262SBob Moore acpi_error(const char *module_name, u32 line_number, const char *format, ...) 104*cc84e262SBob Moore { 105*cc84e262SBob Moore va_list arg_list; 106*cc84e262SBob Moore 107*cc84e262SBob Moore ACPI_MSG_REDIRECT_BEGIN; 108*cc84e262SBob Moore acpi_os_printf(ACPI_MSG_ERROR); 109*cc84e262SBob Moore 110*cc84e262SBob Moore va_start(arg_list, format); 111*cc84e262SBob Moore acpi_os_vprintf(format, arg_list); 112*cc84e262SBob Moore ACPI_MSG_SUFFIX; 113*cc84e262SBob Moore va_end(arg_list); 114*cc84e262SBob Moore 115*cc84e262SBob Moore ACPI_MSG_REDIRECT_END; 116*cc84e262SBob Moore } 117*cc84e262SBob Moore 118*cc84e262SBob Moore ACPI_EXPORT_SYMBOL(acpi_error) 119*cc84e262SBob Moore 120*cc84e262SBob Moore /******************************************************************************* 121*cc84e262SBob Moore * 122*cc84e262SBob Moore * FUNCTION: acpi_exception 123*cc84e262SBob Moore * 124*cc84e262SBob Moore * PARAMETERS: module_name - Caller's module name (for error output) 125*cc84e262SBob Moore * line_number - Caller's line number (for error output) 126*cc84e262SBob Moore * Status - Status to be formatted 127*cc84e262SBob Moore * Format - Printf format string + additional args 128*cc84e262SBob Moore * 129*cc84e262SBob Moore * RETURN: None 130*cc84e262SBob Moore * 131*cc84e262SBob Moore * DESCRIPTION: Print "ACPI Exception" message with module/line/version info 132*cc84e262SBob Moore * and decoded acpi_status. 133*cc84e262SBob Moore * 134*cc84e262SBob Moore ******************************************************************************/ 135*cc84e262SBob Moore void ACPI_INTERNAL_VAR_XFACE 136*cc84e262SBob Moore acpi_exception(const char *module_name, 137*cc84e262SBob Moore u32 line_number, acpi_status status, const char *format, ...) 138*cc84e262SBob Moore { 139*cc84e262SBob Moore va_list arg_list; 140*cc84e262SBob Moore 141*cc84e262SBob Moore ACPI_MSG_REDIRECT_BEGIN; 142*cc84e262SBob Moore acpi_os_printf(ACPI_MSG_EXCEPTION "%s, ", 143*cc84e262SBob Moore acpi_format_exception(status)); 144*cc84e262SBob Moore 145*cc84e262SBob Moore va_start(arg_list, format); 146*cc84e262SBob Moore acpi_os_vprintf(format, arg_list); 147*cc84e262SBob Moore ACPI_MSG_SUFFIX; 148*cc84e262SBob Moore va_end(arg_list); 149*cc84e262SBob Moore 150*cc84e262SBob Moore ACPI_MSG_REDIRECT_END; 151*cc84e262SBob Moore } 152*cc84e262SBob Moore 153*cc84e262SBob Moore ACPI_EXPORT_SYMBOL(acpi_exception) 154*cc84e262SBob Moore 155*cc84e262SBob Moore /******************************************************************************* 156*cc84e262SBob Moore * 157*cc84e262SBob Moore * FUNCTION: acpi_warning 158*cc84e262SBob Moore * 159*cc84e262SBob Moore * PARAMETERS: module_name - Caller's module name (for error output) 160*cc84e262SBob Moore * line_number - Caller's line number (for error output) 161*cc84e262SBob Moore * Format - Printf format string + additional args 162*cc84e262SBob Moore * 163*cc84e262SBob Moore * RETURN: None 164*cc84e262SBob Moore * 165*cc84e262SBob Moore * DESCRIPTION: Print "ACPI Warning" message with module/line/version info 166*cc84e262SBob Moore * 167*cc84e262SBob Moore ******************************************************************************/ 168*cc84e262SBob Moore void ACPI_INTERNAL_VAR_XFACE 169*cc84e262SBob Moore acpi_warning(const char *module_name, u32 line_number, const char *format, ...) 170*cc84e262SBob Moore { 171*cc84e262SBob Moore va_list arg_list; 172*cc84e262SBob Moore 173*cc84e262SBob Moore ACPI_MSG_REDIRECT_BEGIN; 174*cc84e262SBob Moore acpi_os_printf(ACPI_MSG_WARNING); 175*cc84e262SBob Moore 176*cc84e262SBob Moore va_start(arg_list, format); 177*cc84e262SBob Moore acpi_os_vprintf(format, arg_list); 178*cc84e262SBob Moore ACPI_MSG_SUFFIX; 179*cc84e262SBob Moore va_end(arg_list); 180*cc84e262SBob Moore 181*cc84e262SBob Moore ACPI_MSG_REDIRECT_END; 182*cc84e262SBob Moore } 183*cc84e262SBob Moore 184*cc84e262SBob Moore ACPI_EXPORT_SYMBOL(acpi_warning) 185*cc84e262SBob Moore 186*cc84e262SBob Moore /******************************************************************************* 187*cc84e262SBob Moore * 188*cc84e262SBob Moore * FUNCTION: acpi_info 189*cc84e262SBob Moore * 190*cc84e262SBob Moore * PARAMETERS: module_name - Caller's module name (for error output) 191*cc84e262SBob Moore * line_number - Caller's line number (for error output) 192*cc84e262SBob Moore * Format - Printf format string + additional args 193*cc84e262SBob Moore * 194*cc84e262SBob Moore * RETURN: None 195*cc84e262SBob Moore * 196*cc84e262SBob Moore * DESCRIPTION: Print generic "ACPI:" information message. There is no 197*cc84e262SBob Moore * module/line/version info in order to keep the message simple. 198*cc84e262SBob Moore * 199*cc84e262SBob Moore * TBD: module_name and line_number args are not needed, should be removed. 200*cc84e262SBob Moore * 201*cc84e262SBob Moore ******************************************************************************/ 202*cc84e262SBob Moore void ACPI_INTERNAL_VAR_XFACE 203*cc84e262SBob Moore acpi_info(const char *module_name, u32 line_number, const char *format, ...) 204*cc84e262SBob Moore { 205*cc84e262SBob Moore va_list arg_list; 206*cc84e262SBob Moore 207*cc84e262SBob Moore ACPI_MSG_REDIRECT_BEGIN; 208*cc84e262SBob Moore acpi_os_printf(ACPI_MSG_INFO); 209*cc84e262SBob Moore 210*cc84e262SBob Moore va_start(arg_list, format); 211*cc84e262SBob Moore acpi_os_vprintf(format, arg_list); 212*cc84e262SBob Moore acpi_os_printf("\n"); 213*cc84e262SBob Moore va_end(arg_list); 214*cc84e262SBob Moore 215*cc84e262SBob Moore ACPI_MSG_REDIRECT_END; 216*cc84e262SBob Moore } 217*cc84e262SBob Moore 218*cc84e262SBob Moore ACPI_EXPORT_SYMBOL(acpi_info) 219*cc84e262SBob Moore 220*cc84e262SBob Moore /* 221*cc84e262SBob Moore * The remainder of this module contains internal error functions that may 222*cc84e262SBob Moore * be configured out. 223*cc84e262SBob Moore */ 224*cc84e262SBob Moore #ifndef ACPI_NO_ERROR_MESSAGES 225*cc84e262SBob Moore /******************************************************************************* 226*cc84e262SBob Moore * 227*cc84e262SBob Moore * FUNCTION: acpi_ut_predefined_warning 228*cc84e262SBob Moore * 229*cc84e262SBob Moore * PARAMETERS: module_name - Caller's module name (for error output) 230*cc84e262SBob Moore * line_number - Caller's line number (for error output) 231*cc84e262SBob Moore * Pathname - Full pathname to the node 232*cc84e262SBob Moore * node_flags - From Namespace node for the method/object 233*cc84e262SBob Moore * Format - Printf format string + additional args 234*cc84e262SBob Moore * 235*cc84e262SBob Moore * RETURN: None 236*cc84e262SBob Moore * 237*cc84e262SBob Moore * DESCRIPTION: Warnings for the predefined validation module. Messages are 238*cc84e262SBob Moore * only emitted the first time a problem with a particular 239*cc84e262SBob Moore * method/object is detected. This prevents a flood of error 240*cc84e262SBob Moore * messages for methods that are repeatedly evaluated. 241*cc84e262SBob Moore * 242*cc84e262SBob Moore ******************************************************************************/ 243*cc84e262SBob Moore void ACPI_INTERNAL_VAR_XFACE 244*cc84e262SBob Moore acpi_ut_predefined_warning(const char *module_name, 245*cc84e262SBob Moore u32 line_number, 246*cc84e262SBob Moore char *pathname, 247*cc84e262SBob Moore u8 node_flags, const char *format, ...) 248*cc84e262SBob Moore { 249*cc84e262SBob Moore va_list arg_list; 250*cc84e262SBob Moore 251*cc84e262SBob Moore /* 252*cc84e262SBob Moore * Warning messages for this method/object will be disabled after the 253*cc84e262SBob Moore * first time a validation fails or an object is successfully repaired. 254*cc84e262SBob Moore */ 255*cc84e262SBob Moore if (node_flags & ANOBJ_EVALUATED) { 256*cc84e262SBob Moore return; 257*cc84e262SBob Moore } 258*cc84e262SBob Moore 259*cc84e262SBob Moore acpi_os_printf(ACPI_MSG_WARNING "For %s: ", pathname); 260*cc84e262SBob Moore 261*cc84e262SBob Moore va_start(arg_list, format); 262*cc84e262SBob Moore acpi_os_vprintf(format, arg_list); 263*cc84e262SBob Moore ACPI_MSG_SUFFIX; 264*cc84e262SBob Moore va_end(arg_list); 265*cc84e262SBob Moore } 266*cc84e262SBob Moore 267*cc84e262SBob Moore /******************************************************************************* 268*cc84e262SBob Moore * 269*cc84e262SBob Moore * FUNCTION: acpi_ut_predefined_info 270*cc84e262SBob Moore * 271*cc84e262SBob Moore * PARAMETERS: module_name - Caller's module name (for error output) 272*cc84e262SBob Moore * line_number - Caller's line number (for error output) 273*cc84e262SBob Moore * Pathname - Full pathname to the node 274*cc84e262SBob Moore * node_flags - From Namespace node for the method/object 275*cc84e262SBob Moore * Format - Printf format string + additional args 276*cc84e262SBob Moore * 277*cc84e262SBob Moore * RETURN: None 278*cc84e262SBob Moore * 279*cc84e262SBob Moore * DESCRIPTION: Info messages for the predefined validation module. Messages 280*cc84e262SBob Moore * are only emitted the first time a problem with a particular 281*cc84e262SBob Moore * method/object is detected. This prevents a flood of 282*cc84e262SBob Moore * messages for methods that are repeatedly evaluated. 283*cc84e262SBob Moore * 284*cc84e262SBob Moore ******************************************************************************/ 285*cc84e262SBob Moore 286*cc84e262SBob Moore void ACPI_INTERNAL_VAR_XFACE 287*cc84e262SBob Moore acpi_ut_predefined_info(const char *module_name, 288*cc84e262SBob Moore u32 line_number, 289*cc84e262SBob Moore char *pathname, u8 node_flags, const char *format, ...) 290*cc84e262SBob Moore { 291*cc84e262SBob Moore va_list arg_list; 292*cc84e262SBob Moore 293*cc84e262SBob Moore /* 294*cc84e262SBob Moore * Warning messages for this method/object will be disabled after the 295*cc84e262SBob Moore * first time a validation fails or an object is successfully repaired. 296*cc84e262SBob Moore */ 297*cc84e262SBob Moore if (node_flags & ANOBJ_EVALUATED) { 298*cc84e262SBob Moore return; 299*cc84e262SBob Moore } 300*cc84e262SBob Moore 301*cc84e262SBob Moore acpi_os_printf(ACPI_MSG_INFO "For %s: ", pathname); 302*cc84e262SBob Moore 303*cc84e262SBob Moore va_start(arg_list, format); 304*cc84e262SBob Moore acpi_os_vprintf(format, arg_list); 305*cc84e262SBob Moore ACPI_MSG_SUFFIX; 306*cc84e262SBob Moore va_end(arg_list); 307*cc84e262SBob Moore } 308*cc84e262SBob Moore 309*cc84e262SBob Moore /******************************************************************************* 310*cc84e262SBob Moore * 311*cc84e262SBob Moore * FUNCTION: acpi_ut_namespace_error 312*cc84e262SBob Moore * 313*cc84e262SBob Moore * PARAMETERS: module_name - Caller's module name (for error output) 314*cc84e262SBob Moore * line_number - Caller's line number (for error output) 315*cc84e262SBob Moore * internal_name - Name or path of the namespace node 316*cc84e262SBob Moore * lookup_status - Exception code from NS lookup 317*cc84e262SBob Moore * 318*cc84e262SBob Moore * RETURN: None 319*cc84e262SBob Moore * 320*cc84e262SBob Moore * DESCRIPTION: Print error message with the full pathname for the NS node. 321*cc84e262SBob Moore * 322*cc84e262SBob Moore ******************************************************************************/ 323*cc84e262SBob Moore 324*cc84e262SBob Moore void 325*cc84e262SBob Moore acpi_ut_namespace_error(const char *module_name, 326*cc84e262SBob Moore u32 line_number, 327*cc84e262SBob Moore const char *internal_name, acpi_status lookup_status) 328*cc84e262SBob Moore { 329*cc84e262SBob Moore acpi_status status; 330*cc84e262SBob Moore u32 bad_name; 331*cc84e262SBob Moore char *name = NULL; 332*cc84e262SBob Moore 333*cc84e262SBob Moore ACPI_MSG_REDIRECT_BEGIN; 334*cc84e262SBob Moore acpi_os_printf(ACPI_MSG_ERROR); 335*cc84e262SBob Moore 336*cc84e262SBob Moore if (lookup_status == AE_BAD_CHARACTER) { 337*cc84e262SBob Moore 338*cc84e262SBob Moore /* There is a non-ascii character in the name */ 339*cc84e262SBob Moore 340*cc84e262SBob Moore ACPI_MOVE_32_TO_32(&bad_name, 341*cc84e262SBob Moore ACPI_CAST_PTR(u32, internal_name)); 342*cc84e262SBob Moore acpi_os_printf("[0x%4.4X] (NON-ASCII)", bad_name); 343*cc84e262SBob Moore } else { 344*cc84e262SBob Moore /* Convert path to external format */ 345*cc84e262SBob Moore 346*cc84e262SBob Moore status = acpi_ns_externalize_name(ACPI_UINT32_MAX, 347*cc84e262SBob Moore internal_name, NULL, &name); 348*cc84e262SBob Moore 349*cc84e262SBob Moore /* Print target name */ 350*cc84e262SBob Moore 351*cc84e262SBob Moore if (ACPI_SUCCESS(status)) { 352*cc84e262SBob Moore acpi_os_printf("[%s]", name); 353*cc84e262SBob Moore } else { 354*cc84e262SBob Moore acpi_os_printf("[COULD NOT EXTERNALIZE NAME]"); 355*cc84e262SBob Moore } 356*cc84e262SBob Moore 357*cc84e262SBob Moore if (name) { 358*cc84e262SBob Moore ACPI_FREE(name); 359*cc84e262SBob Moore } 360*cc84e262SBob Moore } 361*cc84e262SBob Moore 362*cc84e262SBob Moore acpi_os_printf(" Namespace lookup failure, %s", 363*cc84e262SBob Moore acpi_format_exception(lookup_status)); 364*cc84e262SBob Moore 365*cc84e262SBob Moore ACPI_MSG_SUFFIX; 366*cc84e262SBob Moore ACPI_MSG_REDIRECT_END; 367*cc84e262SBob Moore } 368*cc84e262SBob Moore 369*cc84e262SBob Moore /******************************************************************************* 370*cc84e262SBob Moore * 371*cc84e262SBob Moore * FUNCTION: acpi_ut_method_error 372*cc84e262SBob Moore * 373*cc84e262SBob Moore * PARAMETERS: module_name - Caller's module name (for error output) 374*cc84e262SBob Moore * line_number - Caller's line number (for error output) 375*cc84e262SBob Moore * Message - Error message to use on failure 376*cc84e262SBob Moore * prefix_node - Prefix relative to the path 377*cc84e262SBob Moore * Path - Path to the node (optional) 378*cc84e262SBob Moore * method_status - Execution status 379*cc84e262SBob Moore * 380*cc84e262SBob Moore * RETURN: None 381*cc84e262SBob Moore * 382*cc84e262SBob Moore * DESCRIPTION: Print error message with the full pathname for the method. 383*cc84e262SBob Moore * 384*cc84e262SBob Moore ******************************************************************************/ 385*cc84e262SBob Moore 386*cc84e262SBob Moore void 387*cc84e262SBob Moore acpi_ut_method_error(const char *module_name, 388*cc84e262SBob Moore u32 line_number, 389*cc84e262SBob Moore const char *message, 390*cc84e262SBob Moore struct acpi_namespace_node *prefix_node, 391*cc84e262SBob Moore const char *path, acpi_status method_status) 392*cc84e262SBob Moore { 393*cc84e262SBob Moore acpi_status status; 394*cc84e262SBob Moore struct acpi_namespace_node *node = prefix_node; 395*cc84e262SBob Moore 396*cc84e262SBob Moore ACPI_MSG_REDIRECT_BEGIN; 397*cc84e262SBob Moore acpi_os_printf(ACPI_MSG_ERROR); 398*cc84e262SBob Moore 399*cc84e262SBob Moore if (path) { 400*cc84e262SBob Moore status = 401*cc84e262SBob Moore acpi_ns_get_node(prefix_node, path, ACPI_NS_NO_UPSEARCH, 402*cc84e262SBob Moore &node); 403*cc84e262SBob Moore if (ACPI_FAILURE(status)) { 404*cc84e262SBob Moore acpi_os_printf("[Could not get node by pathname]"); 405*cc84e262SBob Moore } 406*cc84e262SBob Moore } 407*cc84e262SBob Moore 408*cc84e262SBob Moore acpi_ns_print_node_pathname(node, message); 409*cc84e262SBob Moore acpi_os_printf(", %s", acpi_format_exception(method_status)); 410*cc84e262SBob Moore 411*cc84e262SBob Moore ACPI_MSG_SUFFIX; 412*cc84e262SBob Moore ACPI_MSG_REDIRECT_END; 413*cc84e262SBob Moore } 414*cc84e262SBob Moore 415*cc84e262SBob Moore #endif /* ACPI_NO_ERROR_MESSAGES */ 416