utdebug.c revision 73a3090a2160fb01317f5a44af6ee5a064a29625
11da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/****************************************************************************** 21da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 31da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * Module Name: utdebug - Debug print routines 41da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 51da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds *****************************************************************************/ 61da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 71da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* 877848130e53b06c22fe37a7b6acbb82bb3e9bfbaBob Moore * Copyright (C) 2000 - 2012, Intel Corp. 91da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * All rights reserved. 101da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 111da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * Redistribution and use in source and binary forms, with or without 121da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * modification, are permitted provided that the following conditions 131da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * are met: 141da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 1. Redistributions of source code must retain the above copyright 151da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * notice, this list of conditions, and the following disclaimer, 161da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * without modification. 171da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 2. Redistributions in binary form must reproduce at minimum a disclaimer 181da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * substantially similar to the "NO WARRANTY" disclaimer below 191da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * ("Disclaimer") and any redistribution must be conditioned upon 201da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * including a substantially similar Disclaimer requirement for further 211da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * binary redistribution. 221da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 3. Neither the names of the above-listed copyright holders nor the names 231da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * of any contributors may be used to endorse or promote products derived 241da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * from this software without specific prior written permission. 251da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 261da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * Alternatively, this software may be distributed under the terms of the 271da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * GNU General Public License ("GPL") version 2 as published by the Free 281da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * Software Foundation. 291da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 301da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * NO WARRANTY 311da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 321da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 331da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR 341da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 351da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 361da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 371da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 381da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 391da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 401da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 411da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * POSSIBILITY OF SUCH DAMAGES. 421da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds */ 431da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 44214f2c90b970e098e75cf719c0c5b0f1fe69b716Paul Gortmaker#include <linux/export.h> 451da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#include <acpi/acpi.h> 46e2f7a7772880458edff1b1cc5a988947229fac26Len Brown#include "accommon.h" 471da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 481da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define _COMPONENT ACPI_UTILITIES 494be44fcd3bf648b782f4460fd06dfae6c42ded4bLen BrownACPI_MODULE_NAME("utdebug") 506d33b6be17dd6a0934396704f969ceb7f3206347Lv Zheng 511da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifdef ACPI_DEBUG_OUTPUT 526d33b6be17dd6a0934396704f969ceb7f3206347Lv Zhengstatic acpi_thread_id acpi_gbl_prev_thread_id = (acpi_thread_id) 0xFFFFFFFF; 534be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brownstatic char *acpi_gbl_fn_entry_str = "----Entry"; 544be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brownstatic char *acpi_gbl_fn_exit_str = "----Exit-"; 551da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 560c9938cc75057c0fca1af55a55dcfc2842436695Robert Moore/* Local prototypes */ 570c9938cc75057c0fca1af55a55dcfc2842436695Robert Moore 584be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brownstatic const char *acpi_ut_trim_function_name(const char *function_name); 591da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 6044f6c01242da4e162f28d8e1216a8c7a91174605Robert Moore/******************************************************************************* 611da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 621da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * FUNCTION: acpi_ut_init_stack_ptr_trace 631da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 641da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * PARAMETERS: None 651da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 661da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * RETURN: None 671da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 6844f6c01242da4e162f28d8e1216a8c7a91174605Robert Moore * DESCRIPTION: Save the current CPU stack pointer at subsystem startup 691da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 7044f6c01242da4e162f28d8e1216a8c7a91174605Robert Moore ******************************************************************************/ 711da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 724be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brownvoid acpi_ut_init_stack_ptr_trace(void) 731da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds{ 741d18c05825c3f2b8933a7fc7f7528881e98deb04Bob Moore acpi_size current_sp; 751da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 761d18c05825c3f2b8933a7fc7f7528881e98deb04Bob Moore acpi_gbl_entry_stack_pointer = ¤t_sp; 771da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds} 781da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 7944f6c01242da4e162f28d8e1216a8c7a91174605Robert Moore/******************************************************************************* 801da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 811da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * FUNCTION: acpi_ut_track_stack_ptr 821da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 831da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * PARAMETERS: None 841da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 851da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * RETURN: None 861da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 8744f6c01242da4e162f28d8e1216a8c7a91174605Robert Moore * DESCRIPTION: Save the current CPU stack pointer 881da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 8944f6c01242da4e162f28d8e1216a8c7a91174605Robert Moore ******************************************************************************/ 901da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 914be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brownvoid acpi_ut_track_stack_ptr(void) 921da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds{ 934be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown acpi_size current_sp; 941da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 951d18c05825c3f2b8933a7fc7f7528881e98deb04Bob Moore if (¤t_sp < acpi_gbl_lowest_stack_pointer) { 961d18c05825c3f2b8933a7fc7f7528881e98deb04Bob Moore acpi_gbl_lowest_stack_pointer = ¤t_sp; 971da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds } 981da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 991da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds if (acpi_gbl_nesting_level > acpi_gbl_deepest_nesting) { 1001da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds acpi_gbl_deepest_nesting = acpi_gbl_nesting_level; 1011da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds } 1021da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds} 1031da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 10444f6c01242da4e162f28d8e1216a8c7a91174605Robert Moore/******************************************************************************* 1051da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 1060c9938cc75057c0fca1af55a55dcfc2842436695Robert Moore * FUNCTION: acpi_ut_trim_function_name 1070c9938cc75057c0fca1af55a55dcfc2842436695Robert Moore * 1080c9938cc75057c0fca1af55a55dcfc2842436695Robert Moore * PARAMETERS: function_name - Ascii string containing a procedure name 1090c9938cc75057c0fca1af55a55dcfc2842436695Robert Moore * 1100c9938cc75057c0fca1af55a55dcfc2842436695Robert Moore * RETURN: Updated pointer to the function name 1110c9938cc75057c0fca1af55a55dcfc2842436695Robert Moore * 1120c9938cc75057c0fca1af55a55dcfc2842436695Robert Moore * DESCRIPTION: Remove the "Acpi" prefix from the function name, if present. 1136d33b6be17dd6a0934396704f969ceb7f3206347Lv Zheng * This allows compiler macros such as __FUNCTION__ to be used 1140c9938cc75057c0fca1af55a55dcfc2842436695Robert Moore * with no change to the debug output. 1150c9938cc75057c0fca1af55a55dcfc2842436695Robert Moore * 1160c9938cc75057c0fca1af55a55dcfc2842436695Robert Moore ******************************************************************************/ 1170c9938cc75057c0fca1af55a55dcfc2842436695Robert Moore 1184be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brownstatic const char *acpi_ut_trim_function_name(const char *function_name) 1190c9938cc75057c0fca1af55a55dcfc2842436695Robert Moore{ 1200c9938cc75057c0fca1af55a55dcfc2842436695Robert Moore 1210c9938cc75057c0fca1af55a55dcfc2842436695Robert Moore /* All Function names are longer than 4 chars, check is safe */ 1220c9938cc75057c0fca1af55a55dcfc2842436695Robert Moore 123a18ecf413ca9846becb760f7f990c2c62c15965eBob Moore if (*(ACPI_CAST_PTR(u32, function_name)) == ACPI_PREFIX_MIXED) { 12452fc0b026e99b5d5d585095148d997d5634bbc25Bob Moore 1250c9938cc75057c0fca1af55a55dcfc2842436695Robert Moore /* This is the case where the original source has not been modified */ 1260c9938cc75057c0fca1af55a55dcfc2842436695Robert Moore 1270c9938cc75057c0fca1af55a55dcfc2842436695Robert Moore return (function_name + 4); 1280c9938cc75057c0fca1af55a55dcfc2842436695Robert Moore } 1290c9938cc75057c0fca1af55a55dcfc2842436695Robert Moore 130a18ecf413ca9846becb760f7f990c2c62c15965eBob Moore if (*(ACPI_CAST_PTR(u32, function_name)) == ACPI_PREFIX_LOWER) { 13152fc0b026e99b5d5d585095148d997d5634bbc25Bob Moore 1320c9938cc75057c0fca1af55a55dcfc2842436695Robert Moore /* This is the case where the source has been 'linuxized' */ 1330c9938cc75057c0fca1af55a55dcfc2842436695Robert Moore 1340c9938cc75057c0fca1af55a55dcfc2842436695Robert Moore return (function_name + 5); 1350c9938cc75057c0fca1af55a55dcfc2842436695Robert Moore } 1360c9938cc75057c0fca1af55a55dcfc2842436695Robert Moore 1370c9938cc75057c0fca1af55a55dcfc2842436695Robert Moore return (function_name); 1380c9938cc75057c0fca1af55a55dcfc2842436695Robert Moore} 1390c9938cc75057c0fca1af55a55dcfc2842436695Robert Moore 1400c9938cc75057c0fca1af55a55dcfc2842436695Robert Moore/******************************************************************************* 1410c9938cc75057c0fca1af55a55dcfc2842436695Robert Moore * 14250df4d8b0f6e1971b930f3158c9ee0e4263e636dBob Moore * FUNCTION: acpi_debug_print 1431da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 14444f6c01242da4e162f28d8e1216a8c7a91174605Robert Moore * PARAMETERS: requested_debug_level - Requested debug print level 1451da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * line_number - Caller's line number (for error output) 146f9f4601f331aa1226d7a798a01950efbb388f07fRobert Moore * function_name - Caller's procedure name 147f9f4601f331aa1226d7a798a01950efbb388f07fRobert Moore * module_name - Caller's module name 148f9f4601f331aa1226d7a798a01950efbb388f07fRobert Moore * component_id - Caller's component ID 149ba494beeaa69bc0fb01eb89464ad5d57d26e3901Bob Moore * format - Printf format field 1501da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * ... - Optional printf arguments 1511da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 1521da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * RETURN: None 1531da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 1541da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * DESCRIPTION: Print error message with prefix consisting of the module name, 1551da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * line number, and component ID. 1561da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 15744f6c01242da4e162f28d8e1216a8c7a91174605Robert Moore ******************************************************************************/ 1581da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1594be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brownvoid ACPI_INTERNAL_VAR_XFACE 16050df4d8b0f6e1971b930f3158c9ee0e4263e636dBob Mooreacpi_debug_print(u32 requested_debug_level, 16150df4d8b0f6e1971b930f3158c9ee0e4263e636dBob Moore u32 line_number, 16250df4d8b0f6e1971b930f3158c9ee0e4263e636dBob Moore const char *function_name, 16350df4d8b0f6e1971b930f3158c9ee0e4263e636dBob Moore const char *module_name, 16450df4d8b0f6e1971b930f3158c9ee0e4263e636dBob Moore u32 component_id, const char *format, ...) 1651da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds{ 1668313524a0d466f451a62709aaedf988d8257b21cBob Moore acpi_thread_id thread_id; 1674be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown va_list args; 1681da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1691da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds /* 1701da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * Stay silent if the debug level or component ID is disabled 1711da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds */ 1721da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds if (!(requested_debug_level & acpi_dbg_level) || 1734be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown !(component_id & acpi_dbg_layer)) { 1741da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds return; 1751da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds } 1761da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1771da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds /* 1781da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * Thread tracking and context switch notification 1791da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds */ 1804be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown thread_id = acpi_os_get_thread_id(); 1811da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds if (thread_id != acpi_gbl_prev_thread_id) { 1821da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds if (ACPI_LV_THREADS & acpi_dbg_level) { 1834be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown acpi_os_printf 18428eb3fcf8762a3b52f4fef5af29dce50d23c7151Lin Ming ("\n**** Context Switch from TID %u to TID %u ****\n\n", 18528eb3fcf8762a3b52f4fef5af29dce50d23c7151Lin Ming (u32)acpi_gbl_prev_thread_id, (u32)thread_id); 1861da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds } 1871da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1881da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds acpi_gbl_prev_thread_id = thread_id; 1891da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds } 1901da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1911da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds /* 1921da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * Display the module name, current line number, thread ID (if requested), 1931da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * current procedure nesting level, and the current procedure name 1941da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds */ 1954be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown acpi_os_printf("%8s-%04ld ", module_name, line_number); 1961da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1971da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds if (ACPI_LV_THREADS & acpi_dbg_level) { 19828eb3fcf8762a3b52f4fef5af29dce50d23c7151Lin Ming acpi_os_printf("[%u] ", (u32)thread_id); 1991da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds } 2001da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 2014be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown acpi_os_printf("[%02ld] %-22.22s: ", 2024be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown acpi_gbl_nesting_level, 2034be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown acpi_ut_trim_function_name(function_name)); 2041da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 2054be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown va_start(args, format); 2064be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown acpi_os_vprintf(format, args); 207507f046c4dd17e9c94b5130ba184f8da90504685Bob Moore va_end(args); 2081da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds} 2091da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 21050df4d8b0f6e1971b930f3158c9ee0e4263e636dBob MooreACPI_EXPORT_SYMBOL(acpi_debug_print) 2111da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 21244f6c01242da4e162f28d8e1216a8c7a91174605Robert Moore/******************************************************************************* 2131da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 21450df4d8b0f6e1971b930f3158c9ee0e4263e636dBob Moore * FUNCTION: acpi_debug_print_raw 2151da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 2161da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * PARAMETERS: requested_debug_level - Requested debug print level 2171da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * line_number - Caller's line number 218f9f4601f331aa1226d7a798a01950efbb388f07fRobert Moore * function_name - Caller's procedure name 219f9f4601f331aa1226d7a798a01950efbb388f07fRobert Moore * module_name - Caller's module name 220f9f4601f331aa1226d7a798a01950efbb388f07fRobert Moore * component_id - Caller's component ID 221ba494beeaa69bc0fb01eb89464ad5d57d26e3901Bob Moore * format - Printf format field 2221da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * ... - Optional printf arguments 2231da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 2241da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * RETURN: None 2251da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 22673a3090a2160fb01317f5a44af6ee5a064a29625Bob Moore * DESCRIPTION: Print message with no headers. Has same interface as 2271da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * debug_print so that the same macros can be used. 2281da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 22944f6c01242da4e162f28d8e1216a8c7a91174605Robert Moore ******************************************************************************/ 2304be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brownvoid ACPI_INTERNAL_VAR_XFACE 23150df4d8b0f6e1971b930f3158c9ee0e4263e636dBob Mooreacpi_debug_print_raw(u32 requested_debug_level, 23250df4d8b0f6e1971b930f3158c9ee0e4263e636dBob Moore u32 line_number, 23350df4d8b0f6e1971b930f3158c9ee0e4263e636dBob Moore const char *function_name, 23450df4d8b0f6e1971b930f3158c9ee0e4263e636dBob Moore const char *module_name, 23550df4d8b0f6e1971b930f3158c9ee0e4263e636dBob Moore u32 component_id, const char *format, ...) 2361da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds{ 2374be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown va_list args; 2381da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 2391da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds if (!(requested_debug_level & acpi_dbg_level) || 2404be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown !(component_id & acpi_dbg_layer)) { 2411da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds return; 2421da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds } 2431da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 2444be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown va_start(args, format); 2454be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown acpi_os_vprintf(format, args); 246507f046c4dd17e9c94b5130ba184f8da90504685Bob Moore va_end(args); 2471da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds} 2481da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 24950df4d8b0f6e1971b930f3158c9ee0e4263e636dBob MooreACPI_EXPORT_SYMBOL(acpi_debug_print_raw) 2501da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 25144f6c01242da4e162f28d8e1216a8c7a91174605Robert Moore/******************************************************************************* 2521da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 2531da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * FUNCTION: acpi_ut_trace 2541da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 2551da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * PARAMETERS: line_number - Caller's line number 256f9f4601f331aa1226d7a798a01950efbb388f07fRobert Moore * function_name - Caller's procedure name 257f9f4601f331aa1226d7a798a01950efbb388f07fRobert Moore * module_name - Caller's module name 258f9f4601f331aa1226d7a798a01950efbb388f07fRobert Moore * component_id - Caller's component ID 2591da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 2601da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * RETURN: None 2611da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 26273a3090a2160fb01317f5a44af6ee5a064a29625Bob Moore * DESCRIPTION: Function entry trace. Prints only if TRACE_FUNCTIONS bit is 2631da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * set in debug_level 2641da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 26544f6c01242da4e162f28d8e1216a8c7a91174605Robert Moore ******************************************************************************/ 2661da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsvoid 2674be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brownacpi_ut_trace(u32 line_number, 2684b8ed631679070c183c8ae7519d2bdb9df124ae4Bob Moore const char *function_name, 2694b8ed631679070c183c8ae7519d2bdb9df124ae4Bob Moore const char *module_name, u32 component_id) 2701da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds{ 2711da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 2721da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds acpi_gbl_nesting_level++; 2734be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown acpi_ut_track_stack_ptr(); 2741da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 27550df4d8b0f6e1971b930f3158c9ee0e4263e636dBob Moore acpi_debug_print(ACPI_LV_FUNCTIONS, 27650df4d8b0f6e1971b930f3158c9ee0e4263e636dBob Moore line_number, function_name, module_name, component_id, 27750df4d8b0f6e1971b930f3158c9ee0e4263e636dBob Moore "%s\n", acpi_gbl_fn_entry_str); 2781da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds} 2791da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 2808313524a0d466f451a62709aaedf988d8257b21cBob MooreACPI_EXPORT_SYMBOL(acpi_ut_trace) 2811da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 28244f6c01242da4e162f28d8e1216a8c7a91174605Robert Moore/******************************************************************************* 2831da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 2841da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * FUNCTION: acpi_ut_trace_ptr 2851da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 2861da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * PARAMETERS: line_number - Caller's line number 287f9f4601f331aa1226d7a798a01950efbb388f07fRobert Moore * function_name - Caller's procedure name 288f9f4601f331aa1226d7a798a01950efbb388f07fRobert Moore * module_name - Caller's module name 289f9f4601f331aa1226d7a798a01950efbb388f07fRobert Moore * component_id - Caller's component ID 290ba494beeaa69bc0fb01eb89464ad5d57d26e3901Bob Moore * pointer - Pointer to display 2911da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 2921da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * RETURN: None 2931da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 29473a3090a2160fb01317f5a44af6ee5a064a29625Bob Moore * DESCRIPTION: Function entry trace. Prints only if TRACE_FUNCTIONS bit is 2951da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * set in debug_level 2961da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 29744f6c01242da4e162f28d8e1216a8c7a91174605Robert Moore ******************************************************************************/ 2981da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsvoid 2994be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brownacpi_ut_trace_ptr(u32 line_number, 3004be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown const char *function_name, 3014b8ed631679070c183c8ae7519d2bdb9df124ae4Bob Moore const char *module_name, u32 component_id, void *pointer) 3021da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds{ 30368aafc35161dcc9d365a32c2f9f077aedc61754dBob Moore 3041da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds acpi_gbl_nesting_level++; 3054be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown acpi_ut_track_stack_ptr(); 3061da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 30750df4d8b0f6e1971b930f3158c9ee0e4263e636dBob Moore acpi_debug_print(ACPI_LV_FUNCTIONS, 30850df4d8b0f6e1971b930f3158c9ee0e4263e636dBob Moore line_number, function_name, module_name, component_id, 30950df4d8b0f6e1971b930f3158c9ee0e4263e636dBob Moore "%s %p\n", acpi_gbl_fn_entry_str, pointer); 3101da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds} 3111da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 31244f6c01242da4e162f28d8e1216a8c7a91174605Robert Moore/******************************************************************************* 3131da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 3141da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * FUNCTION: acpi_ut_trace_str 3151da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 3161da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * PARAMETERS: line_number - Caller's line number 317f9f4601f331aa1226d7a798a01950efbb388f07fRobert Moore * function_name - Caller's procedure name 318f9f4601f331aa1226d7a798a01950efbb388f07fRobert Moore * module_name - Caller's module name 319f9f4601f331aa1226d7a798a01950efbb388f07fRobert Moore * component_id - Caller's component ID 320ba494beeaa69bc0fb01eb89464ad5d57d26e3901Bob Moore * string - Additional string to display 3211da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 3221da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * RETURN: None 3231da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 32473a3090a2160fb01317f5a44af6ee5a064a29625Bob Moore * DESCRIPTION: Function entry trace. Prints only if TRACE_FUNCTIONS bit is 3251da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * set in debug_level 3261da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 32744f6c01242da4e162f28d8e1216a8c7a91174605Robert Moore ******************************************************************************/ 3281da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 3291da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsvoid 3304be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brownacpi_ut_trace_str(u32 line_number, 3314be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown const char *function_name, 3324b8ed631679070c183c8ae7519d2bdb9df124ae4Bob Moore const char *module_name, u32 component_id, char *string) 3331da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds{ 3341da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 3351da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds acpi_gbl_nesting_level++; 3364be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown acpi_ut_track_stack_ptr(); 3371da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 33850df4d8b0f6e1971b930f3158c9ee0e4263e636dBob Moore acpi_debug_print(ACPI_LV_FUNCTIONS, 33950df4d8b0f6e1971b930f3158c9ee0e4263e636dBob Moore line_number, function_name, module_name, component_id, 34050df4d8b0f6e1971b930f3158c9ee0e4263e636dBob Moore "%s %s\n", acpi_gbl_fn_entry_str, string); 3411da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds} 3421da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 34344f6c01242da4e162f28d8e1216a8c7a91174605Robert Moore/******************************************************************************* 3441da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 3451da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * FUNCTION: acpi_ut_trace_u32 3461da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 3471da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * PARAMETERS: line_number - Caller's line number 348f9f4601f331aa1226d7a798a01950efbb388f07fRobert Moore * function_name - Caller's procedure name 349f9f4601f331aa1226d7a798a01950efbb388f07fRobert Moore * module_name - Caller's module name 350f9f4601f331aa1226d7a798a01950efbb388f07fRobert Moore * component_id - Caller's component ID 351ba494beeaa69bc0fb01eb89464ad5d57d26e3901Bob Moore * integer - Integer to display 3521da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 3531da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * RETURN: None 3541da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 35573a3090a2160fb01317f5a44af6ee5a064a29625Bob Moore * DESCRIPTION: Function entry trace. Prints only if TRACE_FUNCTIONS bit is 3561da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * set in debug_level 3571da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 35844f6c01242da4e162f28d8e1216a8c7a91174605Robert Moore ******************************************************************************/ 3591da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 3601da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsvoid 3614be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brownacpi_ut_trace_u32(u32 line_number, 3624be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown const char *function_name, 3634b8ed631679070c183c8ae7519d2bdb9df124ae4Bob Moore const char *module_name, u32 component_id, u32 integer) 3641da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds{ 3651da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 3661da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds acpi_gbl_nesting_level++; 3674be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown acpi_ut_track_stack_ptr(); 3681da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 36950df4d8b0f6e1971b930f3158c9ee0e4263e636dBob Moore acpi_debug_print(ACPI_LV_FUNCTIONS, 37050df4d8b0f6e1971b930f3158c9ee0e4263e636dBob Moore line_number, function_name, module_name, component_id, 37150df4d8b0f6e1971b930f3158c9ee0e4263e636dBob Moore "%s %08X\n", acpi_gbl_fn_entry_str, integer); 3721da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds} 3731da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 37444f6c01242da4e162f28d8e1216a8c7a91174605Robert Moore/******************************************************************************* 3751da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 3761da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * FUNCTION: acpi_ut_exit 3771da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 3781da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * PARAMETERS: line_number - Caller's line number 379f9f4601f331aa1226d7a798a01950efbb388f07fRobert Moore * function_name - Caller's procedure name 380f9f4601f331aa1226d7a798a01950efbb388f07fRobert Moore * module_name - Caller's module name 381f9f4601f331aa1226d7a798a01950efbb388f07fRobert Moore * component_id - Caller's component ID 3821da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 3831da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * RETURN: None 3841da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 38573a3090a2160fb01317f5a44af6ee5a064a29625Bob Moore * DESCRIPTION: Function exit trace. Prints only if TRACE_FUNCTIONS bit is 3861da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * set in debug_level 3871da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 38844f6c01242da4e162f28d8e1216a8c7a91174605Robert Moore ******************************************************************************/ 3891da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 3901da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsvoid 3914be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brownacpi_ut_exit(u32 line_number, 3924b8ed631679070c183c8ae7519d2bdb9df124ae4Bob Moore const char *function_name, 3934b8ed631679070c183c8ae7519d2bdb9df124ae4Bob Moore const char *module_name, u32 component_id) 3941da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds{ 3951da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 39650df4d8b0f6e1971b930f3158c9ee0e4263e636dBob Moore acpi_debug_print(ACPI_LV_FUNCTIONS, 39750df4d8b0f6e1971b930f3158c9ee0e4263e636dBob Moore line_number, function_name, module_name, component_id, 39850df4d8b0f6e1971b930f3158c9ee0e4263e636dBob Moore "%s\n", acpi_gbl_fn_exit_str); 3991da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 4001da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds acpi_gbl_nesting_level--; 4011da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds} 4021da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 4038313524a0d466f451a62709aaedf988d8257b21cBob MooreACPI_EXPORT_SYMBOL(acpi_ut_exit) 4041da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 40544f6c01242da4e162f28d8e1216a8c7a91174605Robert Moore/******************************************************************************* 4061da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 4071da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * FUNCTION: acpi_ut_status_exit 4081da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 4091da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * PARAMETERS: line_number - Caller's line number 410f9f4601f331aa1226d7a798a01950efbb388f07fRobert Moore * function_name - Caller's procedure name 411f9f4601f331aa1226d7a798a01950efbb388f07fRobert Moore * module_name - Caller's module name 412f9f4601f331aa1226d7a798a01950efbb388f07fRobert Moore * component_id - Caller's component ID 413ba494beeaa69bc0fb01eb89464ad5d57d26e3901Bob Moore * status - Exit status code 4141da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 4151da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * RETURN: None 4161da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 41773a3090a2160fb01317f5a44af6ee5a064a29625Bob Moore * DESCRIPTION: Function exit trace. Prints only if TRACE_FUNCTIONS bit is 4181da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * set in debug_level. Prints exit status also. 4191da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 42044f6c01242da4e162f28d8e1216a8c7a91174605Robert Moore ******************************************************************************/ 4211da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsvoid 4224be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brownacpi_ut_status_exit(u32 line_number, 4234be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown const char *function_name, 4244b8ed631679070c183c8ae7519d2bdb9df124ae4Bob Moore const char *module_name, 4254b8ed631679070c183c8ae7519d2bdb9df124ae4Bob Moore u32 component_id, acpi_status status) 4261da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds{ 4271da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 4284be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown if (ACPI_SUCCESS(status)) { 42950df4d8b0f6e1971b930f3158c9ee0e4263e636dBob Moore acpi_debug_print(ACPI_LV_FUNCTIONS, 43050df4d8b0f6e1971b930f3158c9ee0e4263e636dBob Moore line_number, function_name, module_name, 43150df4d8b0f6e1971b930f3158c9ee0e4263e636dBob Moore component_id, "%s %s\n", acpi_gbl_fn_exit_str, 43250df4d8b0f6e1971b930f3158c9ee0e4263e636dBob Moore acpi_format_exception(status)); 4334be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown } else { 43450df4d8b0f6e1971b930f3158c9ee0e4263e636dBob Moore acpi_debug_print(ACPI_LV_FUNCTIONS, 43550df4d8b0f6e1971b930f3158c9ee0e4263e636dBob Moore line_number, function_name, module_name, 43650df4d8b0f6e1971b930f3158c9ee0e4263e636dBob Moore component_id, "%s ****Exception****: %s\n", 43750df4d8b0f6e1971b930f3158c9ee0e4263e636dBob Moore acpi_gbl_fn_exit_str, 43850df4d8b0f6e1971b930f3158c9ee0e4263e636dBob Moore acpi_format_exception(status)); 4391da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds } 4401da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 4411da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds acpi_gbl_nesting_level--; 4421da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds} 4431da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 4448313524a0d466f451a62709aaedf988d8257b21cBob MooreACPI_EXPORT_SYMBOL(acpi_ut_status_exit) 4451da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 44644f6c01242da4e162f28d8e1216a8c7a91174605Robert Moore/******************************************************************************* 4471da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 4481da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * FUNCTION: acpi_ut_value_exit 4491da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 4501da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * PARAMETERS: line_number - Caller's line number 451f9f4601f331aa1226d7a798a01950efbb388f07fRobert Moore * function_name - Caller's procedure name 452f9f4601f331aa1226d7a798a01950efbb388f07fRobert Moore * module_name - Caller's module name 453f9f4601f331aa1226d7a798a01950efbb388f07fRobert Moore * component_id - Caller's component ID 454ba494beeaa69bc0fb01eb89464ad5d57d26e3901Bob Moore * value - Value to be printed with exit msg 4551da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 4561da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * RETURN: None 4571da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 45873a3090a2160fb01317f5a44af6ee5a064a29625Bob Moore * DESCRIPTION: Function exit trace. Prints only if TRACE_FUNCTIONS bit is 4591da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * set in debug_level. Prints exit value also. 4601da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 46144f6c01242da4e162f28d8e1216a8c7a91174605Robert Moore ******************************************************************************/ 4621da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsvoid 4634be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brownacpi_ut_value_exit(u32 line_number, 4644be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown const char *function_name, 4655df7e6cb42da36c7d878239bebc81907b15f3943Bob Moore const char *module_name, u32 component_id, u64 value) 4661da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds{ 4671da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 46850df4d8b0f6e1971b930f3158c9ee0e4263e636dBob Moore acpi_debug_print(ACPI_LV_FUNCTIONS, 46950df4d8b0f6e1971b930f3158c9ee0e4263e636dBob Moore line_number, function_name, module_name, component_id, 47050df4d8b0f6e1971b930f3158c9ee0e4263e636dBob Moore "%s %8.8X%8.8X\n", acpi_gbl_fn_exit_str, 47150df4d8b0f6e1971b930f3158c9ee0e4263e636dBob Moore ACPI_FORMAT_UINT64(value)); 4721da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 4731da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds acpi_gbl_nesting_level--; 4741da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds} 4751da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 4768313524a0d466f451a62709aaedf988d8257b21cBob MooreACPI_EXPORT_SYMBOL(acpi_ut_value_exit) 4771da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 47844f6c01242da4e162f28d8e1216a8c7a91174605Robert Moore/******************************************************************************* 4791da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 4801da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * FUNCTION: acpi_ut_ptr_exit 4811da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 4821da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * PARAMETERS: line_number - Caller's line number 483f9f4601f331aa1226d7a798a01950efbb388f07fRobert Moore * function_name - Caller's procedure name 484f9f4601f331aa1226d7a798a01950efbb388f07fRobert Moore * module_name - Caller's module name 485f9f4601f331aa1226d7a798a01950efbb388f07fRobert Moore * component_id - Caller's component ID 486ba494beeaa69bc0fb01eb89464ad5d57d26e3901Bob Moore * ptr - Pointer to display 4871da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 4881da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * RETURN: None 4891da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 49073a3090a2160fb01317f5a44af6ee5a064a29625Bob Moore * DESCRIPTION: Function exit trace. Prints only if TRACE_FUNCTIONS bit is 4911da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * set in debug_level. Prints exit value also. 4921da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 49344f6c01242da4e162f28d8e1216a8c7a91174605Robert Moore ******************************************************************************/ 4941da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsvoid 4954be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brownacpi_ut_ptr_exit(u32 line_number, 4964be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown const char *function_name, 4974b8ed631679070c183c8ae7519d2bdb9df124ae4Bob Moore const char *module_name, u32 component_id, u8 *ptr) 4981da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds{ 4991da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 50050df4d8b0f6e1971b930f3158c9ee0e4263e636dBob Moore acpi_debug_print(ACPI_LV_FUNCTIONS, 50150df4d8b0f6e1971b930f3158c9ee0e4263e636dBob Moore line_number, function_name, module_name, component_id, 50250df4d8b0f6e1971b930f3158c9ee0e4263e636dBob Moore "%s %p\n", acpi_gbl_fn_exit_str, ptr); 5031da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 5041da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds acpi_gbl_nesting_level--; 5051da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds} 5061da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 5071da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif 5081da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 50944f6c01242da4e162f28d8e1216a8c7a91174605Robert Moore/******************************************************************************* 5101da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 5111da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * FUNCTION: acpi_ut_dump_buffer 5121da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 513ba494beeaa69bc0fb01eb89464ad5d57d26e3901Bob Moore * PARAMETERS: buffer - Buffer to dump 514ba494beeaa69bc0fb01eb89464ad5d57d26e3901Bob Moore * count - Amount to dump, in bytes 515ba494beeaa69bc0fb01eb89464ad5d57d26e3901Bob Moore * display - BYTE, WORD, DWORD, or QWORD display 516ba494beeaa69bc0fb01eb89464ad5d57d26e3901Bob Moore * component_ID - Caller's component ID 5171da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 5181da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * RETURN: None 5191da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 5201da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * DESCRIPTION: Generic dump buffer in both hex and ascii. 5211da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 52244f6c01242da4e162f28d8e1216a8c7a91174605Robert Moore ******************************************************************************/ 5231da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 5246d33b6be17dd6a0934396704f969ceb7f3206347Lv Zhengvoid acpi_ut_dump_buffer2(u8 *buffer, u32 count, u32 display) 5251da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds{ 52667a119f990063f5662574f6d6414fe9bc5ece86aBob Moore u32 i = 0; 52767a119f990063f5662574f6d6414fe9bc5ece86aBob Moore u32 j; 5284be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown u32 temp32; 5294be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown u8 buf_char; 5301da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 5315eb691805f7ec5960fe9d5d7fc57a7fc3097bbd0Bob Moore if (!buffer) { 5325eb691805f7ec5960fe9d5d7fc57a7fc3097bbd0Bob Moore acpi_os_printf("Null Buffer Pointer in DumpBuffer!\n"); 5335eb691805f7ec5960fe9d5d7fc57a7fc3097bbd0Bob Moore return; 5345eb691805f7ec5960fe9d5d7fc57a7fc3097bbd0Bob Moore } 5355eb691805f7ec5960fe9d5d7fc57a7fc3097bbd0Bob Moore 5361da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds if ((count < 4) || (count & 0x01)) { 5371da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds display = DB_BYTE_DISPLAY; 5381da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds } 5391da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 54044f6c01242da4e162f28d8e1216a8c7a91174605Robert Moore /* Nasty little dump buffer routine! */ 5411da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 5421da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds while (i < count) { 54352fc0b026e99b5d5d585095148d997d5634bbc25Bob Moore 5441da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds /* Print current offset */ 5451da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 54667a119f990063f5662574f6d6414fe9bc5ece86aBob Moore acpi_os_printf("%6.4X: ", i); 5471da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 5481da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds /* Print 16 hex chars */ 5491da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 5501da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds for (j = 0; j < 16;) { 5511da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds if (i + j >= count) { 55252fc0b026e99b5d5d585095148d997d5634bbc25Bob Moore 55344f6c01242da4e162f28d8e1216a8c7a91174605Robert Moore /* Dump fill spaces */ 5541da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 5554be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown acpi_os_printf("%*s", ((display * 2) + 1), " "); 55667a119f990063f5662574f6d6414fe9bc5ece86aBob Moore j += display; 55744f6c01242da4e162f28d8e1216a8c7a91174605Robert Moore continue; 55844f6c01242da4e162f28d8e1216a8c7a91174605Robert Moore } 5591da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 5601da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds switch (display) { 561793c2388cae3fd023b3b5166354931752d42353cBob Moore case DB_BYTE_DISPLAY: 5624be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown default: /* Default is BYTE display */ 5631da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 56467a119f990063f5662574f6d6414fe9bc5ece86aBob Moore acpi_os_printf("%02X ", 56567a119f990063f5662574f6d6414fe9bc5ece86aBob Moore buffer[(acpi_size) i + j]); 5661da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds break; 5671da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 5681da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds case DB_WORD_DISPLAY: 5691da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 57067a119f990063f5662574f6d6414fe9bc5ece86aBob Moore ACPI_MOVE_16_TO_32(&temp32, 57167a119f990063f5662574f6d6414fe9bc5ece86aBob Moore &buffer[(acpi_size) i + j]); 5724be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown acpi_os_printf("%04X ", temp32); 5731da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds break; 5741da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 5751da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds case DB_DWORD_DISPLAY: 5761da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 57767a119f990063f5662574f6d6414fe9bc5ece86aBob Moore ACPI_MOVE_32_TO_32(&temp32, 57867a119f990063f5662574f6d6414fe9bc5ece86aBob Moore &buffer[(acpi_size) i + j]); 5794be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown acpi_os_printf("%08X ", temp32); 5801da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds break; 5811da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 5821da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds case DB_QWORD_DISPLAY: 5831da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 58467a119f990063f5662574f6d6414fe9bc5ece86aBob Moore ACPI_MOVE_32_TO_32(&temp32, 58567a119f990063f5662574f6d6414fe9bc5ece86aBob Moore &buffer[(acpi_size) i + j]); 5864be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown acpi_os_printf("%08X", temp32); 5871da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 58867a119f990063f5662574f6d6414fe9bc5ece86aBob Moore ACPI_MOVE_32_TO_32(&temp32, 58967a119f990063f5662574f6d6414fe9bc5ece86aBob Moore &buffer[(acpi_size) i + j + 59067a119f990063f5662574f6d6414fe9bc5ece86aBob Moore 4]); 5914be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown acpi_os_printf("%08X ", temp32); 5921da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds break; 5931da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds } 59444f6c01242da4e162f28d8e1216a8c7a91174605Robert Moore 59567a119f990063f5662574f6d6414fe9bc5ece86aBob Moore j += display; 5961da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds } 5971da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 5981da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds /* 5990c9938cc75057c0fca1af55a55dcfc2842436695Robert Moore * Print the ASCII equivalent characters but watch out for the bad 6000c9938cc75057c0fca1af55a55dcfc2842436695Robert Moore * unprintable ones (printable chars are 0x20 through 0x7E) 6011da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds */ 6024be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown acpi_os_printf(" "); 6031da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds for (j = 0; j < 16; j++) { 6041da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds if (i + j >= count) { 6054be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown acpi_os_printf("\n"); 6061da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds return; 6071da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds } 6081da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 60967a119f990063f5662574f6d6414fe9bc5ece86aBob Moore buf_char = buffer[(acpi_size) i + j]; 6104be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown if (ACPI_IS_PRINT(buf_char)) { 6114be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown acpi_os_printf("%c", buf_char); 6124be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown } else { 6134be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown acpi_os_printf("."); 6141da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds } 6151da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds } 6161da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 6171da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds /* Done with that line. */ 6181da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 6194be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown acpi_os_printf("\n"); 6201da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds i += 16; 6211da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds } 6221da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 6231da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds return; 6241da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds} 625793c2388cae3fd023b3b5166354931752d42353cBob Moore 626793c2388cae3fd023b3b5166354931752d42353cBob Moore/******************************************************************************* 627793c2388cae3fd023b3b5166354931752d42353cBob Moore * 628793c2388cae3fd023b3b5166354931752d42353cBob Moore * FUNCTION: acpi_ut_dump_buffer 629793c2388cae3fd023b3b5166354931752d42353cBob Moore * 630ba494beeaa69bc0fb01eb89464ad5d57d26e3901Bob Moore * PARAMETERS: buffer - Buffer to dump 631ba494beeaa69bc0fb01eb89464ad5d57d26e3901Bob Moore * count - Amount to dump, in bytes 632ba494beeaa69bc0fb01eb89464ad5d57d26e3901Bob Moore * display - BYTE, WORD, DWORD, or QWORD display 633ba494beeaa69bc0fb01eb89464ad5d57d26e3901Bob Moore * component_ID - Caller's component ID 634793c2388cae3fd023b3b5166354931752d42353cBob Moore * 635793c2388cae3fd023b3b5166354931752d42353cBob Moore * RETURN: None 636793c2388cae3fd023b3b5166354931752d42353cBob Moore * 637793c2388cae3fd023b3b5166354931752d42353cBob Moore * DESCRIPTION: Generic dump buffer in both hex and ascii. 638793c2388cae3fd023b3b5166354931752d42353cBob Moore * 639793c2388cae3fd023b3b5166354931752d42353cBob Moore ******************************************************************************/ 640793c2388cae3fd023b3b5166354931752d42353cBob Moore 6416d33b6be17dd6a0934396704f969ceb7f3206347Lv Zhengvoid acpi_ut_dump_buffer(u8 *buffer, u32 count, u32 display, u32 component_id) 642793c2388cae3fd023b3b5166354931752d42353cBob Moore{ 643793c2388cae3fd023b3b5166354931752d42353cBob Moore 644793c2388cae3fd023b3b5166354931752d42353cBob Moore /* Only dump the buffer if tracing is enabled */ 645793c2388cae3fd023b3b5166354931752d42353cBob Moore 646793c2388cae3fd023b3b5166354931752d42353cBob Moore if (!((ACPI_LV_TABLES & acpi_dbg_level) && 647793c2388cae3fd023b3b5166354931752d42353cBob Moore (component_id & acpi_dbg_layer))) { 648793c2388cae3fd023b3b5166354931752d42353cBob Moore return; 649793c2388cae3fd023b3b5166354931752d42353cBob Moore } 650793c2388cae3fd023b3b5166354931752d42353cBob Moore 651793c2388cae3fd023b3b5166354931752d42353cBob Moore acpi_ut_dump_buffer2(buffer, count, display); 652793c2388cae3fd023b3b5166354931752d42353cBob Moore} 653