utdebug.c revision 50df4d8b0f6e1971b930f3158c9ee0e4263e636d
11da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/****************************************************************************** 21da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 31da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * Module Name: utdebug - Debug print routines 41da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 51da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds *****************************************************************************/ 61da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 71da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* 875a44ce00b312f57264f42a0a985d17cd9994b98Len Brown * Copyright (C) 2000 - 2008, 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 441da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#include <acpi/acpi.h> 4550df4d8b0f6e1971b930f3158c9ee0e4263e636dBob Moore#include <acpi/accommon.h> 461da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 471da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define _COMPONENT ACPI_UTILITIES 484be44fcd3bf648b782f4460fd06dfae6c42ded4bLen BrownACPI_MODULE_NAME("utdebug") 491da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifdef ACPI_DEBUG_OUTPUT 50ab8aa06a5c0b75974fb1949365cbb20a15cedf14Len Brownstatic acpi_thread_id acpi_gbl_prev_thread_id; 514be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brownstatic char *acpi_gbl_fn_entry_str = "----Entry"; 524be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brownstatic char *acpi_gbl_fn_exit_str = "----Exit-"; 531da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 540c9938cc75057c0fca1af55a55dcfc2842436695Robert Moore/* Local prototypes */ 550c9938cc75057c0fca1af55a55dcfc2842436695Robert Moore 564be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brownstatic const char *acpi_ut_trim_function_name(const char *function_name); 571da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 5844f6c01242da4e162f28d8e1216a8c7a91174605Robert Moore/******************************************************************************* 591da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 601da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * FUNCTION: acpi_ut_init_stack_ptr_trace 611da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 621da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * PARAMETERS: None 631da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 641da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * RETURN: None 651da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 6644f6c01242da4e162f28d8e1216a8c7a91174605Robert Moore * DESCRIPTION: Save the current CPU stack pointer at subsystem startup 671da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 6844f6c01242da4e162f28d8e1216a8c7a91174605Robert Moore ******************************************************************************/ 691da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 704be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brownvoid acpi_ut_init_stack_ptr_trace(void) 711da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds{ 721d18c05825c3f2b8933a7fc7f7528881e98deb04Bob Moore acpi_size current_sp; 731da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 741d18c05825c3f2b8933a7fc7f7528881e98deb04Bob Moore acpi_gbl_entry_stack_pointer = ¤t_sp; 751da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds} 761da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 7744f6c01242da4e162f28d8e1216a8c7a91174605Robert Moore/******************************************************************************* 781da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 791da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * FUNCTION: acpi_ut_track_stack_ptr 801da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 811da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * PARAMETERS: None 821da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 831da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * RETURN: None 841da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 8544f6c01242da4e162f28d8e1216a8c7a91174605Robert Moore * DESCRIPTION: Save the current CPU stack pointer 861da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 8744f6c01242da4e162f28d8e1216a8c7a91174605Robert Moore ******************************************************************************/ 881da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 894be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brownvoid acpi_ut_track_stack_ptr(void) 901da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds{ 914be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown acpi_size current_sp; 921da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 931d18c05825c3f2b8933a7fc7f7528881e98deb04Bob Moore if (¤t_sp < acpi_gbl_lowest_stack_pointer) { 941d18c05825c3f2b8933a7fc7f7528881e98deb04Bob Moore acpi_gbl_lowest_stack_pointer = ¤t_sp; 951da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds } 961da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 971da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds if (acpi_gbl_nesting_level > acpi_gbl_deepest_nesting) { 981da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds acpi_gbl_deepest_nesting = acpi_gbl_nesting_level; 991da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds } 1001da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds} 1011da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 10244f6c01242da4e162f28d8e1216a8c7a91174605Robert Moore/******************************************************************************* 1031da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 1040c9938cc75057c0fca1af55a55dcfc2842436695Robert Moore * FUNCTION: acpi_ut_trim_function_name 1050c9938cc75057c0fca1af55a55dcfc2842436695Robert Moore * 1060c9938cc75057c0fca1af55a55dcfc2842436695Robert Moore * PARAMETERS: function_name - Ascii string containing a procedure name 1070c9938cc75057c0fca1af55a55dcfc2842436695Robert Moore * 1080c9938cc75057c0fca1af55a55dcfc2842436695Robert Moore * RETURN: Updated pointer to the function name 1090c9938cc75057c0fca1af55a55dcfc2842436695Robert Moore * 1100c9938cc75057c0fca1af55a55dcfc2842436695Robert Moore * DESCRIPTION: Remove the "Acpi" prefix from the function name, if present. 11196b2dd1f1fdb9a131b7f2e79e5c7b2e4282cfcbfHarvey Harrison * This allows compiler macros such as __func__ to be used 1120c9938cc75057c0fca1af55a55dcfc2842436695Robert Moore * with no change to the debug output. 1130c9938cc75057c0fca1af55a55dcfc2842436695Robert Moore * 1140c9938cc75057c0fca1af55a55dcfc2842436695Robert Moore ******************************************************************************/ 1150c9938cc75057c0fca1af55a55dcfc2842436695Robert Moore 1164be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brownstatic const char *acpi_ut_trim_function_name(const char *function_name) 1170c9938cc75057c0fca1af55a55dcfc2842436695Robert Moore{ 1180c9938cc75057c0fca1af55a55dcfc2842436695Robert Moore 1190c9938cc75057c0fca1af55a55dcfc2842436695Robert Moore /* All Function names are longer than 4 chars, check is safe */ 1200c9938cc75057c0fca1af55a55dcfc2842436695Robert Moore 121a18ecf413ca9846becb760f7f990c2c62c15965eBob Moore if (*(ACPI_CAST_PTR(u32, function_name)) == ACPI_PREFIX_MIXED) { 12252fc0b026e99b5d5d585095148d997d5634bbc25Bob Moore 1230c9938cc75057c0fca1af55a55dcfc2842436695Robert Moore /* This is the case where the original source has not been modified */ 1240c9938cc75057c0fca1af55a55dcfc2842436695Robert Moore 1250c9938cc75057c0fca1af55a55dcfc2842436695Robert Moore return (function_name + 4); 1260c9938cc75057c0fca1af55a55dcfc2842436695Robert Moore } 1270c9938cc75057c0fca1af55a55dcfc2842436695Robert Moore 128a18ecf413ca9846becb760f7f990c2c62c15965eBob Moore if (*(ACPI_CAST_PTR(u32, function_name)) == ACPI_PREFIX_LOWER) { 12952fc0b026e99b5d5d585095148d997d5634bbc25Bob Moore 1300c9938cc75057c0fca1af55a55dcfc2842436695Robert Moore /* This is the case where the source has been 'linuxized' */ 1310c9938cc75057c0fca1af55a55dcfc2842436695Robert Moore 1320c9938cc75057c0fca1af55a55dcfc2842436695Robert Moore return (function_name + 5); 1330c9938cc75057c0fca1af55a55dcfc2842436695Robert Moore } 1340c9938cc75057c0fca1af55a55dcfc2842436695Robert Moore 1350c9938cc75057c0fca1af55a55dcfc2842436695Robert Moore return (function_name); 1360c9938cc75057c0fca1af55a55dcfc2842436695Robert Moore} 1370c9938cc75057c0fca1af55a55dcfc2842436695Robert Moore 1380c9938cc75057c0fca1af55a55dcfc2842436695Robert Moore/******************************************************************************* 1390c9938cc75057c0fca1af55a55dcfc2842436695Robert Moore * 14050df4d8b0f6e1971b930f3158c9ee0e4263e636dBob Moore * FUNCTION: acpi_debug_print 1411da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 14244f6c01242da4e162f28d8e1216a8c7a91174605Robert Moore * PARAMETERS: requested_debug_level - Requested debug print level 1431da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * line_number - Caller's line number (for error output) 144f9f4601f331aa1226d7a798a01950efbb388f07fRobert Moore * function_name - Caller's procedure name 145f9f4601f331aa1226d7a798a01950efbb388f07fRobert Moore * module_name - Caller's module name 146f9f4601f331aa1226d7a798a01950efbb388f07fRobert Moore * component_id - Caller's component ID 1471da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * Format - Printf format field 1481da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * ... - Optional printf arguments 1491da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 1501da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * RETURN: None 1511da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 1521da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * DESCRIPTION: Print error message with prefix consisting of the module name, 1531da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * line number, and component ID. 1541da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 15544f6c01242da4e162f28d8e1216a8c7a91174605Robert Moore ******************************************************************************/ 1561da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1574be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brownvoid ACPI_INTERNAL_VAR_XFACE 15850df4d8b0f6e1971b930f3158c9ee0e4263e636dBob Mooreacpi_debug_print(u32 requested_debug_level, 15950df4d8b0f6e1971b930f3158c9ee0e4263e636dBob Moore u32 line_number, 16050df4d8b0f6e1971b930f3158c9ee0e4263e636dBob Moore const char *function_name, 16150df4d8b0f6e1971b930f3158c9ee0e4263e636dBob Moore const char *module_name, 16250df4d8b0f6e1971b930f3158c9ee0e4263e636dBob Moore u32 component_id, const char *format, ...) 1631da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds{ 1648313524a0d466f451a62709aaedf988d8257b21cBob Moore acpi_thread_id thread_id; 1654be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown va_list args; 1661da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1671da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds /* 1681da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * Stay silent if the debug level or component ID is disabled 1691da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds */ 1701da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds if (!(requested_debug_level & acpi_dbg_level) || 1714be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown !(component_id & acpi_dbg_layer)) { 1721da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds return; 1731da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds } 1741da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1751da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds /* 1761da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * Thread tracking and context switch notification 1771da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds */ 1784be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown thread_id = acpi_os_get_thread_id(); 1791da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds if (thread_id != acpi_gbl_prev_thread_id) { 1801da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds if (ACPI_LV_THREADS & acpi_dbg_level) { 1814be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown acpi_os_printf 182b0b7eaaf0c7aefd118d3ff8640fbed75a9fad9a1Alexey Starikovskiy ("\n**** Context Switch from TID %lX to TID %lX ****\n\n", 183fd3509436fde38d4c854bf5a6b83d2c779904f8eLen Brown (unsigned long)acpi_gbl_prev_thread_id, 184fd3509436fde38d4c854bf5a6b83d2c779904f8eLen Brown (unsigned long)thread_id); 1851da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds } 1861da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1871da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds acpi_gbl_prev_thread_id = thread_id; 1881da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds } 1891da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1901da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds /* 1911da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * Display the module name, current line number, thread ID (if requested), 1921da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * current procedure nesting level, and the current procedure name 1931da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds */ 1944be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown acpi_os_printf("%8s-%04ld ", module_name, line_number); 1951da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1961da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds if (ACPI_LV_THREADS & acpi_dbg_level) { 197b0b7eaaf0c7aefd118d3ff8640fbed75a9fad9a1Alexey Starikovskiy acpi_os_printf("[%04lX] ", (unsigned long)thread_id); 1981da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds } 1991da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 2004be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown acpi_os_printf("[%02ld] %-22.22s: ", 2014be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown acpi_gbl_nesting_level, 2024be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown acpi_ut_trim_function_name(function_name)); 2031da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 2044be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown va_start(args, format); 2054be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown acpi_os_vprintf(format, args); 206507f046c4dd17e9c94b5130ba184f8da90504685Bob Moore va_end(args); 2071da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds} 2081da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 20950df4d8b0f6e1971b930f3158c9ee0e4263e636dBob MooreACPI_EXPORT_SYMBOL(acpi_debug_print) 2101da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 21144f6c01242da4e162f28d8e1216a8c7a91174605Robert Moore/******************************************************************************* 2121da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 21350df4d8b0f6e1971b930f3158c9ee0e4263e636dBob Moore * FUNCTION: acpi_debug_print_raw 2141da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 2151da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * PARAMETERS: requested_debug_level - Requested debug print level 2161da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * line_number - Caller's line number 217f9f4601f331aa1226d7a798a01950efbb388f07fRobert Moore * function_name - Caller's procedure name 218f9f4601f331aa1226d7a798a01950efbb388f07fRobert Moore * module_name - Caller's module name 219f9f4601f331aa1226d7a798a01950efbb388f07fRobert Moore * component_id - Caller's component ID 2201da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * Format - Printf format field 2211da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * ... - Optional printf arguments 2221da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 2231da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * RETURN: None 2241da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 2251da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * DESCRIPTION: Print message with no headers. Has same interface as 2261da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * debug_print so that the same macros can be used. 2271da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 22844f6c01242da4e162f28d8e1216a8c7a91174605Robert Moore ******************************************************************************/ 2294be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brownvoid ACPI_INTERNAL_VAR_XFACE 23050df4d8b0f6e1971b930f3158c9ee0e4263e636dBob Mooreacpi_debug_print_raw(u32 requested_debug_level, 23150df4d8b0f6e1971b930f3158c9ee0e4263e636dBob Moore u32 line_number, 23250df4d8b0f6e1971b930f3158c9ee0e4263e636dBob Moore const char *function_name, 23350df4d8b0f6e1971b930f3158c9ee0e4263e636dBob Moore const char *module_name, 23450df4d8b0f6e1971b930f3158c9ee0e4263e636dBob Moore u32 component_id, const char *format, ...) 2351da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds{ 2364be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown va_list args; 2371da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 2381da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds if (!(requested_debug_level & acpi_dbg_level) || 2394be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown !(component_id & acpi_dbg_layer)) { 2401da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds return; 2411da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds } 2421da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 2434be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown va_start(args, format); 2444be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown acpi_os_vprintf(format, args); 245507f046c4dd17e9c94b5130ba184f8da90504685Bob Moore va_end(args); 2461da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds} 2471da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 24850df4d8b0f6e1971b930f3158c9ee0e4263e636dBob MooreACPI_EXPORT_SYMBOL(acpi_debug_print_raw) 2491da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 25044f6c01242da4e162f28d8e1216a8c7a91174605Robert Moore/******************************************************************************* 2511da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 2521da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * FUNCTION: acpi_ut_trace 2531da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 2541da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * PARAMETERS: line_number - Caller's line number 255f9f4601f331aa1226d7a798a01950efbb388f07fRobert Moore * function_name - Caller's procedure name 256f9f4601f331aa1226d7a798a01950efbb388f07fRobert Moore * module_name - Caller's module name 257f9f4601f331aa1226d7a798a01950efbb388f07fRobert Moore * component_id - Caller's component ID 2581da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 2591da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * RETURN: None 2601da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 2611da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * DESCRIPTION: Function entry trace. Prints only if TRACE_FUNCTIONS bit is 2621da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * set in debug_level 2631da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 26444f6c01242da4e162f28d8e1216a8c7a91174605Robert Moore ******************************************************************************/ 2651da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsvoid 2664be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brownacpi_ut_trace(u32 line_number, 2674b8ed631679070c183c8ae7519d2bdb9df124ae4Bob Moore const char *function_name, 2684b8ed631679070c183c8ae7519d2bdb9df124ae4Bob Moore const char *module_name, u32 component_id) 2691da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds{ 2701da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 2711da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds acpi_gbl_nesting_level++; 2724be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown acpi_ut_track_stack_ptr(); 2731da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 27450df4d8b0f6e1971b930f3158c9ee0e4263e636dBob Moore acpi_debug_print(ACPI_LV_FUNCTIONS, 27550df4d8b0f6e1971b930f3158c9ee0e4263e636dBob Moore line_number, function_name, module_name, component_id, 27650df4d8b0f6e1971b930f3158c9ee0e4263e636dBob Moore "%s\n", acpi_gbl_fn_entry_str); 2771da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds} 2781da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 2798313524a0d466f451a62709aaedf988d8257b21cBob MooreACPI_EXPORT_SYMBOL(acpi_ut_trace) 2801da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 28144f6c01242da4e162f28d8e1216a8c7a91174605Robert Moore/******************************************************************************* 2821da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 2831da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * FUNCTION: acpi_ut_trace_ptr 2841da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 2851da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * PARAMETERS: line_number - Caller's line number 286f9f4601f331aa1226d7a798a01950efbb388f07fRobert Moore * function_name - Caller's procedure name 287f9f4601f331aa1226d7a798a01950efbb388f07fRobert Moore * module_name - Caller's module name 288f9f4601f331aa1226d7a798a01950efbb388f07fRobert Moore * component_id - Caller's component ID 2891da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * Pointer - Pointer to display 2901da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 2911da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * RETURN: None 2921da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 2931da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * DESCRIPTION: Function entry trace. Prints only if TRACE_FUNCTIONS bit is 2941da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * set in debug_level 2951da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 29644f6c01242da4e162f28d8e1216a8c7a91174605Robert Moore ******************************************************************************/ 2971da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsvoid 2984be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brownacpi_ut_trace_ptr(u32 line_number, 2994be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown const char *function_name, 3004b8ed631679070c183c8ae7519d2bdb9df124ae4Bob Moore const char *module_name, u32 component_id, void *pointer) 3011da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds{ 3021da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds acpi_gbl_nesting_level++; 3034be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown acpi_ut_track_stack_ptr(); 3041da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 30550df4d8b0f6e1971b930f3158c9ee0e4263e636dBob Moore acpi_debug_print(ACPI_LV_FUNCTIONS, 30650df4d8b0f6e1971b930f3158c9ee0e4263e636dBob Moore line_number, function_name, module_name, component_id, 30750df4d8b0f6e1971b930f3158c9ee0e4263e636dBob Moore "%s %p\n", acpi_gbl_fn_entry_str, pointer); 3081da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds} 3091da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 31044f6c01242da4e162f28d8e1216a8c7a91174605Robert Moore/******************************************************************************* 3111da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 3121da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * FUNCTION: acpi_ut_trace_str 3131da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 3141da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * PARAMETERS: line_number - Caller's line number 315f9f4601f331aa1226d7a798a01950efbb388f07fRobert Moore * function_name - Caller's procedure name 316f9f4601f331aa1226d7a798a01950efbb388f07fRobert Moore * module_name - Caller's module name 317f9f4601f331aa1226d7a798a01950efbb388f07fRobert Moore * component_id - Caller's component ID 3181da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * String - Additional string to display 3191da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 3201da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * RETURN: None 3211da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 3221da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * DESCRIPTION: Function entry trace. Prints only if TRACE_FUNCTIONS bit is 3231da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * set in debug_level 3241da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 32544f6c01242da4e162f28d8e1216a8c7a91174605Robert Moore ******************************************************************************/ 3261da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 3271da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsvoid 3284be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brownacpi_ut_trace_str(u32 line_number, 3294be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown const char *function_name, 3304b8ed631679070c183c8ae7519d2bdb9df124ae4Bob Moore const char *module_name, u32 component_id, char *string) 3311da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds{ 3321da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 3331da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds acpi_gbl_nesting_level++; 3344be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown acpi_ut_track_stack_ptr(); 3351da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 33650df4d8b0f6e1971b930f3158c9ee0e4263e636dBob Moore acpi_debug_print(ACPI_LV_FUNCTIONS, 33750df4d8b0f6e1971b930f3158c9ee0e4263e636dBob Moore line_number, function_name, module_name, component_id, 33850df4d8b0f6e1971b930f3158c9ee0e4263e636dBob Moore "%s %s\n", acpi_gbl_fn_entry_str, string); 3391da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds} 3401da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 34144f6c01242da4e162f28d8e1216a8c7a91174605Robert Moore/******************************************************************************* 3421da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 3431da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * FUNCTION: acpi_ut_trace_u32 3441da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 3451da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * PARAMETERS: line_number - Caller's line number 346f9f4601f331aa1226d7a798a01950efbb388f07fRobert Moore * function_name - Caller's procedure name 347f9f4601f331aa1226d7a798a01950efbb388f07fRobert Moore * module_name - Caller's module name 348f9f4601f331aa1226d7a798a01950efbb388f07fRobert Moore * component_id - Caller's component ID 3491da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * Integer - Integer to display 3501da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 3511da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * RETURN: None 3521da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 3531da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * DESCRIPTION: Function entry trace. Prints only if TRACE_FUNCTIONS bit is 3541da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * set in debug_level 3551da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 35644f6c01242da4e162f28d8e1216a8c7a91174605Robert Moore ******************************************************************************/ 3571da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 3581da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsvoid 3594be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brownacpi_ut_trace_u32(u32 line_number, 3604be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown const char *function_name, 3614b8ed631679070c183c8ae7519d2bdb9df124ae4Bob Moore const char *module_name, u32 component_id, u32 integer) 3621da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds{ 3631da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 3641da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds acpi_gbl_nesting_level++; 3654be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown acpi_ut_track_stack_ptr(); 3661da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 36750df4d8b0f6e1971b930f3158c9ee0e4263e636dBob Moore acpi_debug_print(ACPI_LV_FUNCTIONS, 36850df4d8b0f6e1971b930f3158c9ee0e4263e636dBob Moore line_number, function_name, module_name, component_id, 36950df4d8b0f6e1971b930f3158c9ee0e4263e636dBob Moore "%s %08X\n", acpi_gbl_fn_entry_str, integer); 3701da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds} 3711da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 37244f6c01242da4e162f28d8e1216a8c7a91174605Robert Moore/******************************************************************************* 3731da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 3741da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * FUNCTION: acpi_ut_exit 3751da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 3761da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * PARAMETERS: line_number - Caller's line number 377f9f4601f331aa1226d7a798a01950efbb388f07fRobert Moore * function_name - Caller's procedure name 378f9f4601f331aa1226d7a798a01950efbb388f07fRobert Moore * module_name - Caller's module name 379f9f4601f331aa1226d7a798a01950efbb388f07fRobert Moore * component_id - Caller's component ID 3801da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 3811da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * RETURN: None 3821da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 3831da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * DESCRIPTION: Function exit trace. Prints only if TRACE_FUNCTIONS bit is 3841da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * set in debug_level 3851da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 38644f6c01242da4e162f28d8e1216a8c7a91174605Robert Moore ******************************************************************************/ 3871da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 3881da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsvoid 3894be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brownacpi_ut_exit(u32 line_number, 3904b8ed631679070c183c8ae7519d2bdb9df124ae4Bob Moore const char *function_name, 3914b8ed631679070c183c8ae7519d2bdb9df124ae4Bob Moore const char *module_name, u32 component_id) 3921da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds{ 3931da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 39450df4d8b0f6e1971b930f3158c9ee0e4263e636dBob Moore acpi_debug_print(ACPI_LV_FUNCTIONS, 39550df4d8b0f6e1971b930f3158c9ee0e4263e636dBob Moore line_number, function_name, module_name, component_id, 39650df4d8b0f6e1971b930f3158c9ee0e4263e636dBob Moore "%s\n", acpi_gbl_fn_exit_str); 3971da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 3981da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds acpi_gbl_nesting_level--; 3991da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds} 4001da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 4018313524a0d466f451a62709aaedf988d8257b21cBob MooreACPI_EXPORT_SYMBOL(acpi_ut_exit) 4021da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 40344f6c01242da4e162f28d8e1216a8c7a91174605Robert Moore/******************************************************************************* 4041da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 4051da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * FUNCTION: acpi_ut_status_exit 4061da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 4071da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * PARAMETERS: line_number - Caller's line number 408f9f4601f331aa1226d7a798a01950efbb388f07fRobert Moore * function_name - Caller's procedure name 409f9f4601f331aa1226d7a798a01950efbb388f07fRobert Moore * module_name - Caller's module name 410f9f4601f331aa1226d7a798a01950efbb388f07fRobert Moore * component_id - Caller's component ID 4111da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * Status - Exit status code 4121da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 4131da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * RETURN: None 4141da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 4151da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * DESCRIPTION: Function exit trace. Prints only if TRACE_FUNCTIONS bit is 4161da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * set in debug_level. Prints exit status also. 4171da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 41844f6c01242da4e162f28d8e1216a8c7a91174605Robert Moore ******************************************************************************/ 4191da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsvoid 4204be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brownacpi_ut_status_exit(u32 line_number, 4214be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown const char *function_name, 4224b8ed631679070c183c8ae7519d2bdb9df124ae4Bob Moore const char *module_name, 4234b8ed631679070c183c8ae7519d2bdb9df124ae4Bob Moore u32 component_id, acpi_status status) 4241da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds{ 4251da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 4264be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown if (ACPI_SUCCESS(status)) { 42750df4d8b0f6e1971b930f3158c9ee0e4263e636dBob Moore acpi_debug_print(ACPI_LV_FUNCTIONS, 42850df4d8b0f6e1971b930f3158c9ee0e4263e636dBob Moore line_number, function_name, module_name, 42950df4d8b0f6e1971b930f3158c9ee0e4263e636dBob Moore component_id, "%s %s\n", acpi_gbl_fn_exit_str, 43050df4d8b0f6e1971b930f3158c9ee0e4263e636dBob Moore acpi_format_exception(status)); 4314be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown } else { 43250df4d8b0f6e1971b930f3158c9ee0e4263e636dBob Moore acpi_debug_print(ACPI_LV_FUNCTIONS, 43350df4d8b0f6e1971b930f3158c9ee0e4263e636dBob Moore line_number, function_name, module_name, 43450df4d8b0f6e1971b930f3158c9ee0e4263e636dBob Moore component_id, "%s ****Exception****: %s\n", 43550df4d8b0f6e1971b930f3158c9ee0e4263e636dBob Moore acpi_gbl_fn_exit_str, 43650df4d8b0f6e1971b930f3158c9ee0e4263e636dBob Moore acpi_format_exception(status)); 4371da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds } 4381da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 4391da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds acpi_gbl_nesting_level--; 4401da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds} 4411da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 4428313524a0d466f451a62709aaedf988d8257b21cBob MooreACPI_EXPORT_SYMBOL(acpi_ut_status_exit) 4431da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 44444f6c01242da4e162f28d8e1216a8c7a91174605Robert Moore/******************************************************************************* 4451da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 4461da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * FUNCTION: acpi_ut_value_exit 4471da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 4481da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * PARAMETERS: line_number - Caller's line number 449f9f4601f331aa1226d7a798a01950efbb388f07fRobert Moore * function_name - Caller's procedure name 450f9f4601f331aa1226d7a798a01950efbb388f07fRobert Moore * module_name - Caller's module name 451f9f4601f331aa1226d7a798a01950efbb388f07fRobert Moore * component_id - Caller's component ID 4521da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * Value - Value to be printed with exit msg 4531da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 4541da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * RETURN: None 4551da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 4561da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * DESCRIPTION: Function exit trace. Prints only if TRACE_FUNCTIONS bit is 4571da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * set in debug_level. Prints exit value also. 4581da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 45944f6c01242da4e162f28d8e1216a8c7a91174605Robert Moore ******************************************************************************/ 4601da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsvoid 4614be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brownacpi_ut_value_exit(u32 line_number, 4624be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown const char *function_name, 4634b8ed631679070c183c8ae7519d2bdb9df124ae4Bob Moore const char *module_name, 4644b8ed631679070c183c8ae7519d2bdb9df124ae4Bob Moore u32 component_id, acpi_integer value) 4651da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds{ 4661da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 46750df4d8b0f6e1971b930f3158c9ee0e4263e636dBob Moore acpi_debug_print(ACPI_LV_FUNCTIONS, 46850df4d8b0f6e1971b930f3158c9ee0e4263e636dBob Moore line_number, function_name, module_name, component_id, 46950df4d8b0f6e1971b930f3158c9ee0e4263e636dBob Moore "%s %8.8X%8.8X\n", acpi_gbl_fn_exit_str, 47050df4d8b0f6e1971b930f3158c9ee0e4263e636dBob Moore ACPI_FORMAT_UINT64(value)); 4711da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 4721da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds acpi_gbl_nesting_level--; 4731da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds} 4741da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 4758313524a0d466f451a62709aaedf988d8257b21cBob MooreACPI_EXPORT_SYMBOL(acpi_ut_value_exit) 4761da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 47744f6c01242da4e162f28d8e1216a8c7a91174605Robert Moore/******************************************************************************* 4781da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 4791da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * FUNCTION: acpi_ut_ptr_exit 4801da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 4811da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * PARAMETERS: line_number - Caller's line number 482f9f4601f331aa1226d7a798a01950efbb388f07fRobert Moore * function_name - Caller's procedure name 483f9f4601f331aa1226d7a798a01950efbb388f07fRobert Moore * module_name - Caller's module name 484f9f4601f331aa1226d7a798a01950efbb388f07fRobert Moore * component_id - Caller's component ID 48544f6c01242da4e162f28d8e1216a8c7a91174605Robert Moore * Ptr - Pointer to display 4861da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 4871da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * RETURN: None 4881da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 4891da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * DESCRIPTION: Function exit trace. Prints only if TRACE_FUNCTIONS bit is 4901da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * set in debug_level. Prints exit value also. 4911da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 49244f6c01242da4e162f28d8e1216a8c7a91174605Robert Moore ******************************************************************************/ 4931da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsvoid 4944be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brownacpi_ut_ptr_exit(u32 line_number, 4954be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown const char *function_name, 4964b8ed631679070c183c8ae7519d2bdb9df124ae4Bob Moore const char *module_name, u32 component_id, u8 *ptr) 4971da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds{ 4981da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 49950df4d8b0f6e1971b930f3158c9ee0e4263e636dBob Moore acpi_debug_print(ACPI_LV_FUNCTIONS, 50050df4d8b0f6e1971b930f3158c9ee0e4263e636dBob Moore line_number, function_name, module_name, component_id, 50150df4d8b0f6e1971b930f3158c9ee0e4263e636dBob Moore "%s %p\n", acpi_gbl_fn_exit_str, ptr); 5021da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 5031da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds acpi_gbl_nesting_level--; 5041da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds} 5051da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 5061da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif 5071da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 50844f6c01242da4e162f28d8e1216a8c7a91174605Robert Moore/******************************************************************************* 5091da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 5101da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * FUNCTION: acpi_ut_dump_buffer 5111da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 5121da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * PARAMETERS: Buffer - Buffer to dump 5131da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * Count - Amount to dump, in bytes 5141da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * Display - BYTE, WORD, DWORD, or QWORD display 5151da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * component_iD - Caller's component ID 5161da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 5171da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * RETURN: None 5181da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 5191da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * DESCRIPTION: Generic dump buffer in both hex and ascii. 5201da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 52144f6c01242da4e162f28d8e1216a8c7a91174605Robert Moore ******************************************************************************/ 5221da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 523793c2388cae3fd023b3b5166354931752d42353cBob Moorevoid acpi_ut_dump_buffer2(u8 * buffer, u32 count, u32 display) 5241da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds{ 52567a119f990063f5662574f6d6414fe9bc5ece86aBob Moore u32 i = 0; 52667a119f990063f5662574f6d6414fe9bc5ece86aBob Moore u32 j; 5274be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown u32 temp32; 5284be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown u8 buf_char; 5291da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 5305eb691805f7ec5960fe9d5d7fc57a7fc3097bbd0Bob Moore if (!buffer) { 5315eb691805f7ec5960fe9d5d7fc57a7fc3097bbd0Bob Moore acpi_os_printf("Null Buffer Pointer in DumpBuffer!\n"); 5325eb691805f7ec5960fe9d5d7fc57a7fc3097bbd0Bob Moore return; 5335eb691805f7ec5960fe9d5d7fc57a7fc3097bbd0Bob Moore } 5345eb691805f7ec5960fe9d5d7fc57a7fc3097bbd0Bob Moore 5351da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds if ((count < 4) || (count & 0x01)) { 5361da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds display = DB_BYTE_DISPLAY; 5371da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds } 5381da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 53944f6c01242da4e162f28d8e1216a8c7a91174605Robert Moore /* Nasty little dump buffer routine! */ 5401da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 5411da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds while (i < count) { 54252fc0b026e99b5d5d585095148d997d5634bbc25Bob Moore 5431da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds /* Print current offset */ 5441da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 54567a119f990063f5662574f6d6414fe9bc5ece86aBob Moore acpi_os_printf("%6.4X: ", i); 5461da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 5471da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds /* Print 16 hex chars */ 5481da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 5491da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds for (j = 0; j < 16;) { 5501da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds if (i + j >= count) { 55152fc0b026e99b5d5d585095148d997d5634bbc25Bob Moore 55244f6c01242da4e162f28d8e1216a8c7a91174605Robert Moore /* Dump fill spaces */ 5531da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 5544be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown acpi_os_printf("%*s", ((display * 2) + 1), " "); 55567a119f990063f5662574f6d6414fe9bc5ece86aBob Moore j += display; 55644f6c01242da4e162f28d8e1216a8c7a91174605Robert Moore continue; 55744f6c01242da4e162f28d8e1216a8c7a91174605Robert Moore } 5581da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 5591da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds switch (display) { 560793c2388cae3fd023b3b5166354931752d42353cBob Moore case DB_BYTE_DISPLAY: 5614be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown default: /* Default is BYTE display */ 5621da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 56367a119f990063f5662574f6d6414fe9bc5ece86aBob Moore acpi_os_printf("%02X ", 56467a119f990063f5662574f6d6414fe9bc5ece86aBob Moore buffer[(acpi_size) i + j]); 5651da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds break; 5661da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 5671da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds case DB_WORD_DISPLAY: 5681da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 56967a119f990063f5662574f6d6414fe9bc5ece86aBob Moore ACPI_MOVE_16_TO_32(&temp32, 57067a119f990063f5662574f6d6414fe9bc5ece86aBob Moore &buffer[(acpi_size) i + j]); 5714be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown acpi_os_printf("%04X ", temp32); 5721da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds break; 5731da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 5741da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds case DB_DWORD_DISPLAY: 5751da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 57667a119f990063f5662574f6d6414fe9bc5ece86aBob Moore ACPI_MOVE_32_TO_32(&temp32, 57767a119f990063f5662574f6d6414fe9bc5ece86aBob Moore &buffer[(acpi_size) i + j]); 5784be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown acpi_os_printf("%08X ", temp32); 5791da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds break; 5801da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 5811da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds case DB_QWORD_DISPLAY: 5821da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 58367a119f990063f5662574f6d6414fe9bc5ece86aBob Moore ACPI_MOVE_32_TO_32(&temp32, 58467a119f990063f5662574f6d6414fe9bc5ece86aBob Moore &buffer[(acpi_size) i + j]); 5854be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown acpi_os_printf("%08X", temp32); 5861da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 58767a119f990063f5662574f6d6414fe9bc5ece86aBob Moore ACPI_MOVE_32_TO_32(&temp32, 58867a119f990063f5662574f6d6414fe9bc5ece86aBob Moore &buffer[(acpi_size) i + j + 58967a119f990063f5662574f6d6414fe9bc5ece86aBob Moore 4]); 5904be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown acpi_os_printf("%08X ", temp32); 5911da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds break; 5921da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds } 59344f6c01242da4e162f28d8e1216a8c7a91174605Robert Moore 59467a119f990063f5662574f6d6414fe9bc5ece86aBob Moore j += display; 5951da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds } 5961da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 5971da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds /* 5980c9938cc75057c0fca1af55a55dcfc2842436695Robert Moore * Print the ASCII equivalent characters but watch out for the bad 5990c9938cc75057c0fca1af55a55dcfc2842436695Robert Moore * unprintable ones (printable chars are 0x20 through 0x7E) 6001da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds */ 6014be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown acpi_os_printf(" "); 6021da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds for (j = 0; j < 16; j++) { 6031da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds if (i + j >= count) { 6044be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown acpi_os_printf("\n"); 6051da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds return; 6061da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds } 6071da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 60867a119f990063f5662574f6d6414fe9bc5ece86aBob Moore buf_char = buffer[(acpi_size) i + j]; 6094be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown if (ACPI_IS_PRINT(buf_char)) { 6104be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown acpi_os_printf("%c", buf_char); 6114be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown } else { 6124be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown acpi_os_printf("."); 6131da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds } 6141da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds } 6151da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 6161da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds /* Done with that line. */ 6171da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 6184be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown acpi_os_printf("\n"); 6191da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds i += 16; 6201da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds } 6211da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 6221da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds return; 6231da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds} 624793c2388cae3fd023b3b5166354931752d42353cBob Moore 625793c2388cae3fd023b3b5166354931752d42353cBob Moore/******************************************************************************* 626793c2388cae3fd023b3b5166354931752d42353cBob Moore * 627793c2388cae3fd023b3b5166354931752d42353cBob Moore * FUNCTION: acpi_ut_dump_buffer 628793c2388cae3fd023b3b5166354931752d42353cBob Moore * 629793c2388cae3fd023b3b5166354931752d42353cBob Moore * PARAMETERS: Buffer - Buffer to dump 630793c2388cae3fd023b3b5166354931752d42353cBob Moore * Count - Amount to dump, in bytes 631793c2388cae3fd023b3b5166354931752d42353cBob Moore * Display - BYTE, WORD, DWORD, or QWORD display 632793c2388cae3fd023b3b5166354931752d42353cBob Moore * component_iD - Caller's component ID 633793c2388cae3fd023b3b5166354931752d42353cBob Moore * 634793c2388cae3fd023b3b5166354931752d42353cBob Moore * RETURN: None 635793c2388cae3fd023b3b5166354931752d42353cBob Moore * 636793c2388cae3fd023b3b5166354931752d42353cBob Moore * DESCRIPTION: Generic dump buffer in both hex and ascii. 637793c2388cae3fd023b3b5166354931752d42353cBob Moore * 638793c2388cae3fd023b3b5166354931752d42353cBob Moore ******************************************************************************/ 639793c2388cae3fd023b3b5166354931752d42353cBob Moore 640793c2388cae3fd023b3b5166354931752d42353cBob Moorevoid acpi_ut_dump_buffer(u8 * buffer, u32 count, u32 display, u32 component_id) 641793c2388cae3fd023b3b5166354931752d42353cBob Moore{ 642793c2388cae3fd023b3b5166354931752d42353cBob Moore 643793c2388cae3fd023b3b5166354931752d42353cBob Moore /* Only dump the buffer if tracing is enabled */ 644793c2388cae3fd023b3b5166354931752d42353cBob Moore 645793c2388cae3fd023b3b5166354931752d42353cBob Moore if (!((ACPI_LV_TABLES & acpi_dbg_level) && 646793c2388cae3fd023b3b5166354931752d42353cBob Moore (component_id & acpi_dbg_layer))) { 647793c2388cae3fd023b3b5166354931752d42353cBob Moore return; 648793c2388cae3fd023b3b5166354931752d42353cBob Moore } 649793c2388cae3fd023b3b5166354931752d42353cBob Moore 650793c2388cae3fd023b3b5166354931752d42353cBob Moore acpi_ut_dump_buffer2(buffer, count, display); 651793c2388cae3fd023b3b5166354931752d42353cBob Moore} 652