aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/acpi/utilities/utdebug.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/acpi/utilities/utdebug.c')
-rw-r--r--drivers/acpi/utilities/utdebug.c228
1 files changed, 144 insertions, 84 deletions
diff --git a/drivers/acpi/utilities/utdebug.c b/drivers/acpi/utilities/utdebug.c
index 794c7df3f2ad..c27cbb7f5c54 100644
--- a/drivers/acpi/utilities/utdebug.c
+++ b/drivers/acpi/utilities/utdebug.c
@@ -55,6 +55,12 @@ static u32 acpi_gbl_prev_thread_id = 0xFFFFFFFF;
55static char *acpi_gbl_fn_entry_str = "----Entry"; 55static char *acpi_gbl_fn_entry_str = "----Entry";
56static char *acpi_gbl_fn_exit_str = "----Exit-"; 56static char *acpi_gbl_fn_exit_str = "----Exit-";
57 57
58/* Local prototypes */
59
60static const char *
61acpi_ut_trim_function_name (
62 const char *function_name);
63
58 64
59/******************************************************************************* 65/*******************************************************************************
60 * 66 *
@@ -72,7 +78,7 @@ void
72acpi_ut_init_stack_ptr_trace ( 78acpi_ut_init_stack_ptr_trace (
73 void) 79 void)
74{ 80{
75 u32 current_sp; 81 u32 current_sp;
76 82
77 83
78 acpi_gbl_entry_stack_pointer = ACPI_PTR_DIFF (&current_sp, NULL); 84 acpi_gbl_entry_stack_pointer = ACPI_PTR_DIFF (&current_sp, NULL);
@@ -95,7 +101,7 @@ void
95acpi_ut_track_stack_ptr ( 101acpi_ut_track_stack_ptr (
96 void) 102 void)
97{ 103{
98 acpi_size current_sp; 104 acpi_size current_sp;
99 105
100 106
101 current_sp = ACPI_PTR_DIFF (&current_sp, NULL); 107 current_sp = ACPI_PTR_DIFF (&current_sp, NULL);
@@ -112,14 +118,50 @@ acpi_ut_track_stack_ptr (
112 118
113/******************************************************************************* 119/*******************************************************************************
114 * 120 *
121 * FUNCTION: acpi_ut_trim_function_name
122 *
123 * PARAMETERS: function_name - Ascii string containing a procedure name
124 *
125 * RETURN: Updated pointer to the function name
126 *
127 * DESCRIPTION: Remove the "Acpi" prefix from the function name, if present.
128 * This allows compiler macros such as __FUNCTION__ to be used
129 * with no change to the debug output.
130 *
131 ******************************************************************************/
132
133static const char *
134acpi_ut_trim_function_name (
135 const char *function_name)
136{
137
138 /* All Function names are longer than 4 chars, check is safe */
139
140 if (*(ACPI_CAST_PTR (u32, function_name)) == ACPI_FUNCTION_PREFIX1) {
141 /* This is the case where the original source has not been modified */
142
143 return (function_name + 4);
144 }
145
146 if (*(ACPI_CAST_PTR (u32, function_name)) == ACPI_FUNCTION_PREFIX2) {
147 /* This is the case where the source has been 'linuxized' */
148
149 return (function_name + 5);
150 }
151
152 return (function_name);
153}
154
155
156/*******************************************************************************
157 *
115 * FUNCTION: acpi_ut_debug_print 158 * FUNCTION: acpi_ut_debug_print
116 * 159 *
117 * PARAMETERS: requested_debug_level - Requested debug print level 160 * PARAMETERS: requested_debug_level - Requested debug print level
118 * line_number - Caller's line number (for error output) 161 * line_number - Caller's line number (for error output)
119 * dbg_info - Contains: 162 * function_name - Caller's procedure name
120 * proc_name - Caller's procedure name 163 * module_name - Caller's module name
121 * module_name - Caller's module name 164 * component_id - Caller's component ID
122 * component_id - Caller's component ID
123 * Format - Printf format field 165 * Format - Printf format field
124 * ... - Optional printf arguments 166 * ... - Optional printf arguments
125 * 167 *
@@ -134,7 +176,9 @@ void ACPI_INTERNAL_VAR_XFACE
134acpi_ut_debug_print ( 176acpi_ut_debug_print (
135 u32 requested_debug_level, 177 u32 requested_debug_level,
136 u32 line_number, 178 u32 line_number,
137 struct acpi_debug_print_info *dbg_info, 179 const char *function_name,
180 char *module_name,
181 u32 component_id,
138 char *format, 182 char *format,
139 ...) 183 ...)
140{ 184{
@@ -146,7 +190,7 @@ acpi_ut_debug_print (
146 * Stay silent if the debug level or component ID is disabled 190 * Stay silent if the debug level or component ID is disabled
147 */ 191 */
148 if (!(requested_debug_level & acpi_dbg_level) || 192 if (!(requested_debug_level & acpi_dbg_level) ||
149 !(dbg_info->component_id & acpi_dbg_layer)) { 193 !(component_id & acpi_dbg_layer)) {
150 return; 194 return;
151 } 195 }
152 196
@@ -169,14 +213,14 @@ acpi_ut_debug_print (
169 * Display the module name, current line number, thread ID (if requested), 213 * Display the module name, current line number, thread ID (if requested),
170 * current procedure nesting level, and the current procedure name 214 * current procedure nesting level, and the current procedure name
171 */ 215 */
172 acpi_os_printf ("%8s-%04ld ", dbg_info->module_name, line_number); 216 acpi_os_printf ("%8s-%04ld ", module_name, line_number);
173 217
174 if (ACPI_LV_THREADS & acpi_dbg_level) { 218 if (ACPI_LV_THREADS & acpi_dbg_level) {
175 acpi_os_printf ("[%04lX] ", thread_id); 219 acpi_os_printf ("[%04lX] ", thread_id);
176 } 220 }
177 221
178 acpi_os_printf ("[%02ld] %-22.22s: ", 222 acpi_os_printf ("[%02ld] %-22.22s: ",
179 acpi_gbl_nesting_level, dbg_info->proc_name); 223 acpi_gbl_nesting_level, acpi_ut_trim_function_name (function_name));
180 224
181 va_start (args, format); 225 va_start (args, format);
182 acpi_os_vprintf (format, args); 226 acpi_os_vprintf (format, args);
@@ -190,10 +234,9 @@ EXPORT_SYMBOL(acpi_ut_debug_print);
190 * 234 *
191 * PARAMETERS: requested_debug_level - Requested debug print level 235 * PARAMETERS: requested_debug_level - Requested debug print level
192 * line_number - Caller's line number 236 * line_number - Caller's line number
193 * dbg_info - Contains: 237 * function_name - Caller's procedure name
194 * proc_name - Caller's procedure name 238 * module_name - Caller's module name
195 * module_name - Caller's module name 239 * component_id - Caller's component ID
196 * component_id - Caller's component ID
197 * Format - Printf format field 240 * Format - Printf format field
198 * ... - Optional printf arguments 241 * ... - Optional printf arguments
199 * 242 *
@@ -208,7 +251,9 @@ void ACPI_INTERNAL_VAR_XFACE
208acpi_ut_debug_print_raw ( 251acpi_ut_debug_print_raw (
209 u32 requested_debug_level, 252 u32 requested_debug_level,
210 u32 line_number, 253 u32 line_number,
211 struct acpi_debug_print_info *dbg_info, 254 const char *function_name,
255 char *module_name,
256 u32 component_id,
212 char *format, 257 char *format,
213 ...) 258 ...)
214{ 259{
@@ -216,7 +261,7 @@ acpi_ut_debug_print_raw (
216 261
217 262
218 if (!(requested_debug_level & acpi_dbg_level) || 263 if (!(requested_debug_level & acpi_dbg_level) ||
219 !(dbg_info->component_id & acpi_dbg_layer)) { 264 !(component_id & acpi_dbg_layer)) {
220 return; 265 return;
221 } 266 }
222 267
@@ -231,10 +276,9 @@ EXPORT_SYMBOL(acpi_ut_debug_print_raw);
231 * FUNCTION: acpi_ut_trace 276 * FUNCTION: acpi_ut_trace
232 * 277 *
233 * PARAMETERS: line_number - Caller's line number 278 * PARAMETERS: line_number - Caller's line number
234 * dbg_info - Contains: 279 * function_name - Caller's procedure name
235 * proc_name - Caller's procedure name 280 * module_name - Caller's module name
236 * module_name - Caller's module name 281 * component_id - Caller's component ID
237 * component_id - Caller's component ID
238 * 282 *
239 * RETURN: None 283 * RETURN: None
240 * 284 *
@@ -246,14 +290,17 @@ EXPORT_SYMBOL(acpi_ut_debug_print_raw);
246void 290void
247acpi_ut_trace ( 291acpi_ut_trace (
248 u32 line_number, 292 u32 line_number,
249 struct acpi_debug_print_info *dbg_info) 293 const char *function_name,
294 char *module_name,
295 u32 component_id)
250{ 296{
251 297
252 acpi_gbl_nesting_level++; 298 acpi_gbl_nesting_level++;
253 acpi_ut_track_stack_ptr (); 299 acpi_ut_track_stack_ptr ();
254 300
255 acpi_ut_debug_print (ACPI_LV_FUNCTIONS, line_number, dbg_info, 301 acpi_ut_debug_print (ACPI_LV_FUNCTIONS,
256 "%s\n", acpi_gbl_fn_entry_str); 302 line_number, function_name, module_name, component_id,
303 "%s\n", acpi_gbl_fn_entry_str);
257} 304}
258EXPORT_SYMBOL(acpi_ut_trace); 305EXPORT_SYMBOL(acpi_ut_trace);
259 306
@@ -263,10 +310,9 @@ EXPORT_SYMBOL(acpi_ut_trace);
263 * FUNCTION: acpi_ut_trace_ptr 310 * FUNCTION: acpi_ut_trace_ptr
264 * 311 *
265 * PARAMETERS: line_number - Caller's line number 312 * PARAMETERS: line_number - Caller's line number
266 * dbg_info - Contains: 313 * function_name - Caller's procedure name
267 * proc_name - Caller's procedure name 314 * module_name - Caller's module name
268 * module_name - Caller's module name 315 * component_id - Caller's component ID
269 * component_id - Caller's component ID
270 * Pointer - Pointer to display 316 * Pointer - Pointer to display
271 * 317 *
272 * RETURN: None 318 * RETURN: None
@@ -279,14 +325,17 @@ EXPORT_SYMBOL(acpi_ut_trace);
279void 325void
280acpi_ut_trace_ptr ( 326acpi_ut_trace_ptr (
281 u32 line_number, 327 u32 line_number,
282 struct acpi_debug_print_info *dbg_info, 328 const char *function_name,
329 char *module_name,
330 u32 component_id,
283 void *pointer) 331 void *pointer)
284{ 332{
285 acpi_gbl_nesting_level++; 333 acpi_gbl_nesting_level++;
286 acpi_ut_track_stack_ptr (); 334 acpi_ut_track_stack_ptr ();
287 335
288 acpi_ut_debug_print (ACPI_LV_FUNCTIONS, line_number, dbg_info, 336 acpi_ut_debug_print (ACPI_LV_FUNCTIONS,
289 "%s %p\n", acpi_gbl_fn_entry_str, pointer); 337 line_number, function_name, module_name, component_id,
338 "%s %p\n", acpi_gbl_fn_entry_str, pointer);
290} 339}
291 340
292 341
@@ -295,10 +344,9 @@ acpi_ut_trace_ptr (
295 * FUNCTION: acpi_ut_trace_str 344 * FUNCTION: acpi_ut_trace_str
296 * 345 *
297 * PARAMETERS: line_number - Caller's line number 346 * PARAMETERS: line_number - Caller's line number
298 * dbg_info - Contains: 347 * function_name - Caller's procedure name
299 * proc_name - Caller's procedure name 348 * module_name - Caller's module name
300 * module_name - Caller's module name 349 * component_id - Caller's component ID
301 * component_id - Caller's component ID
302 * String - Additional string to display 350 * String - Additional string to display
303 * 351 *
304 * RETURN: None 352 * RETURN: None
@@ -311,15 +359,18 @@ acpi_ut_trace_ptr (
311void 359void
312acpi_ut_trace_str ( 360acpi_ut_trace_str (
313 u32 line_number, 361 u32 line_number,
314 struct acpi_debug_print_info *dbg_info, 362 const char *function_name,
363 char *module_name,
364 u32 component_id,
315 char *string) 365 char *string)
316{ 366{
317 367
318 acpi_gbl_nesting_level++; 368 acpi_gbl_nesting_level++;
319 acpi_ut_track_stack_ptr (); 369 acpi_ut_track_stack_ptr ();
320 370
321 acpi_ut_debug_print (ACPI_LV_FUNCTIONS, line_number, dbg_info, 371 acpi_ut_debug_print (ACPI_LV_FUNCTIONS,
322 "%s %s\n", acpi_gbl_fn_entry_str, string); 372 line_number, function_name, module_name, component_id,
373 "%s %s\n", acpi_gbl_fn_entry_str, string);
323} 374}
324 375
325 376
@@ -328,10 +379,9 @@ acpi_ut_trace_str (
328 * FUNCTION: acpi_ut_trace_u32 379 * FUNCTION: acpi_ut_trace_u32
329 * 380 *
330 * PARAMETERS: line_number - Caller's line number 381 * PARAMETERS: line_number - Caller's line number
331 * dbg_info - Contains: 382 * function_name - Caller's procedure name
332 * proc_name - Caller's procedure name 383 * module_name - Caller's module name
333 * module_name - Caller's module name 384 * component_id - Caller's component ID
334 * component_id - Caller's component ID
335 * Integer - Integer to display 385 * Integer - Integer to display
336 * 386 *
337 * RETURN: None 387 * RETURN: None
@@ -344,15 +394,18 @@ acpi_ut_trace_str (
344void 394void
345acpi_ut_trace_u32 ( 395acpi_ut_trace_u32 (
346 u32 line_number, 396 u32 line_number,
347 struct acpi_debug_print_info *dbg_info, 397 const char *function_name,
398 char *module_name,
399 u32 component_id,
348 u32 integer) 400 u32 integer)
349{ 401{
350 402
351 acpi_gbl_nesting_level++; 403 acpi_gbl_nesting_level++;
352 acpi_ut_track_stack_ptr (); 404 acpi_ut_track_stack_ptr ();
353 405
354 acpi_ut_debug_print (ACPI_LV_FUNCTIONS, line_number, dbg_info, 406 acpi_ut_debug_print (ACPI_LV_FUNCTIONS,
355 "%s %08X\n", acpi_gbl_fn_entry_str, integer); 407 line_number, function_name, module_name, component_id,
408 "%s %08X\n", acpi_gbl_fn_entry_str, integer);
356} 409}
357 410
358 411
@@ -361,10 +414,9 @@ acpi_ut_trace_u32 (
361 * FUNCTION: acpi_ut_exit 414 * FUNCTION: acpi_ut_exit
362 * 415 *
363 * PARAMETERS: line_number - Caller's line number 416 * PARAMETERS: line_number - Caller's line number
364 * dbg_info - Contains: 417 * function_name - Caller's procedure name
365 * proc_name - Caller's procedure name 418 * module_name - Caller's module name
366 * module_name - Caller's module name 419 * component_id - Caller's component ID
367 * component_id - Caller's component ID
368 * 420 *
369 * RETURN: None 421 * RETURN: None
370 * 422 *
@@ -376,11 +428,14 @@ acpi_ut_trace_u32 (
376void 428void
377acpi_ut_exit ( 429acpi_ut_exit (
378 u32 line_number, 430 u32 line_number,
379 struct acpi_debug_print_info *dbg_info) 431 const char *function_name,
432 char *module_name,
433 u32 component_id)
380{ 434{
381 435
382 acpi_ut_debug_print (ACPI_LV_FUNCTIONS, line_number, dbg_info, 436 acpi_ut_debug_print (ACPI_LV_FUNCTIONS,
383 "%s\n", acpi_gbl_fn_exit_str); 437 line_number, function_name, module_name, component_id,
438 "%s\n", acpi_gbl_fn_exit_str);
384 439
385 acpi_gbl_nesting_level--; 440 acpi_gbl_nesting_level--;
386} 441}
@@ -392,10 +447,9 @@ EXPORT_SYMBOL(acpi_ut_exit);
392 * FUNCTION: acpi_ut_status_exit 447 * FUNCTION: acpi_ut_status_exit
393 * 448 *
394 * PARAMETERS: line_number - Caller's line number 449 * PARAMETERS: line_number - Caller's line number
395 * dbg_info - Contains: 450 * function_name - Caller's procedure name
396 * proc_name - Caller's procedure name 451 * module_name - Caller's module name
397 * module_name - Caller's module name 452 * component_id - Caller's component ID
398 * component_id - Caller's component ID
399 * Status - Exit status code 453 * Status - Exit status code
400 * 454 *
401 * RETURN: None 455 * RETURN: None
@@ -408,19 +462,23 @@ EXPORT_SYMBOL(acpi_ut_exit);
408void 462void
409acpi_ut_status_exit ( 463acpi_ut_status_exit (
410 u32 line_number, 464 u32 line_number,
411 struct acpi_debug_print_info *dbg_info, 465 const char *function_name,
466 char *module_name,
467 u32 component_id,
412 acpi_status status) 468 acpi_status status)
413{ 469{
414 470
415 if (ACPI_SUCCESS (status)) { 471 if (ACPI_SUCCESS (status)) {
416 acpi_ut_debug_print (ACPI_LV_FUNCTIONS, line_number, dbg_info, 472 acpi_ut_debug_print (ACPI_LV_FUNCTIONS,
417 "%s %s\n", acpi_gbl_fn_exit_str, 473 line_number, function_name, module_name, component_id,
418 acpi_format_exception (status)); 474 "%s %s\n", acpi_gbl_fn_exit_str,
475 acpi_format_exception (status));
419 } 476 }
420 else { 477 else {
421 acpi_ut_debug_print (ACPI_LV_FUNCTIONS, line_number, dbg_info, 478 acpi_ut_debug_print (ACPI_LV_FUNCTIONS,
422 "%s ****Exception****: %s\n", acpi_gbl_fn_exit_str, 479 line_number, function_name, module_name, component_id,
423 acpi_format_exception (status)); 480 "%s ****Exception****: %s\n", acpi_gbl_fn_exit_str,
481 acpi_format_exception (status));
424 } 482 }
425 483
426 acpi_gbl_nesting_level--; 484 acpi_gbl_nesting_level--;
@@ -433,10 +491,9 @@ EXPORT_SYMBOL(acpi_ut_status_exit);
433 * FUNCTION: acpi_ut_value_exit 491 * FUNCTION: acpi_ut_value_exit
434 * 492 *
435 * PARAMETERS: line_number - Caller's line number 493 * PARAMETERS: line_number - Caller's line number
436 * dbg_info - Contains: 494 * function_name - Caller's procedure name
437 * proc_name - Caller's procedure name 495 * module_name - Caller's module name
438 * module_name - Caller's module name 496 * component_id - Caller's component ID
439 * component_id - Caller's component ID
440 * Value - Value to be printed with exit msg 497 * Value - Value to be printed with exit msg
441 * 498 *
442 * RETURN: None 499 * RETURN: None
@@ -449,13 +506,16 @@ EXPORT_SYMBOL(acpi_ut_status_exit);
449void 506void
450acpi_ut_value_exit ( 507acpi_ut_value_exit (
451 u32 line_number, 508 u32 line_number,
452 struct acpi_debug_print_info *dbg_info, 509 const char *function_name,
510 char *module_name,
511 u32 component_id,
453 acpi_integer value) 512 acpi_integer value)
454{ 513{
455 514
456 acpi_ut_debug_print (ACPI_LV_FUNCTIONS, line_number, dbg_info, 515 acpi_ut_debug_print (ACPI_LV_FUNCTIONS,
457 "%s %8.8X%8.8X\n", acpi_gbl_fn_exit_str, 516 line_number, function_name, module_name, component_id,
458 ACPI_FORMAT_UINT64 (value)); 517 "%s %8.8X%8.8X\n", acpi_gbl_fn_exit_str,
518 ACPI_FORMAT_UINT64 (value));
459 519
460 acpi_gbl_nesting_level--; 520 acpi_gbl_nesting_level--;
461} 521}
@@ -467,10 +527,9 @@ EXPORT_SYMBOL(acpi_ut_value_exit);
467 * FUNCTION: acpi_ut_ptr_exit 527 * FUNCTION: acpi_ut_ptr_exit
468 * 528 *
469 * PARAMETERS: line_number - Caller's line number 529 * PARAMETERS: line_number - Caller's line number
470 * dbg_info - Contains: 530 * function_name - Caller's procedure name
471 * proc_name - Caller's procedure name 531 * module_name - Caller's module name
472 * module_name - Caller's module name 532 * component_id - Caller's component ID
473 * component_id - Caller's component ID
474 * Ptr - Pointer to display 533 * Ptr - Pointer to display
475 * 534 *
476 * RETURN: None 535 * RETURN: None
@@ -483,12 +542,15 @@ EXPORT_SYMBOL(acpi_ut_value_exit);
483void 542void
484acpi_ut_ptr_exit ( 543acpi_ut_ptr_exit (
485 u32 line_number, 544 u32 line_number,
486 struct acpi_debug_print_info *dbg_info, 545 const char *function_name,
546 char *module_name,
547 u32 component_id,
487 u8 *ptr) 548 u8 *ptr)
488{ 549{
489 550
490 acpi_ut_debug_print (ACPI_LV_FUNCTIONS, line_number, dbg_info, 551 acpi_ut_debug_print (ACPI_LV_FUNCTIONS,
491 "%s %p\n", acpi_gbl_fn_exit_str, ptr); 552 line_number, function_name, module_name, component_id,
553 "%s %p\n", acpi_gbl_fn_exit_str, ptr);
492 554
493 acpi_gbl_nesting_level--; 555 acpi_gbl_nesting_level--;
494} 556}
@@ -549,7 +611,7 @@ acpi_ut_dump_buffer (
549 /* Dump fill spaces */ 611 /* Dump fill spaces */
550 612
551 acpi_os_printf ("%*s", ((display * 2) + 1), " "); 613 acpi_os_printf ("%*s", ((display * 2) + 1), " ");
552 j += display; 614 j += (acpi_native_uint) display;
553 continue; 615 continue;
554 } 616 }
555 617
@@ -584,12 +646,12 @@ acpi_ut_dump_buffer (
584 break; 646 break;
585 } 647 }
586 648
587 j += display; 649 j += (acpi_native_uint) display;
588 } 650 }
589 651
590 /* 652 /*
591 * Print the ASCII equivalent characters 653 * Print the ASCII equivalent characters but watch out for the bad
592 * But watch out for the bad unprintable ones... 654 * unprintable ones (printable chars are 0x20 through 0x7E)
593 */ 655 */
594 acpi_os_printf (" "); 656 acpi_os_printf (" ");
595 for (j = 0; j < 16; j++) { 657 for (j = 0; j < 16; j++) {
@@ -599,9 +661,7 @@ acpi_ut_dump_buffer (
599 } 661 }
600 662
601 buf_char = buffer[i + j]; 663 buf_char = buffer[i + j];
602 if ((buf_char > 0x1F && buf_char < 0x2E) || 664 if (ACPI_IS_PRINT (buf_char)) {
603 (buf_char > 0x2F && buf_char < 0x61) ||
604 (buf_char > 0x60 && buf_char < 0x7F)) {
605 acpi_os_printf ("%c", buf_char); 665 acpi_os_printf ("%c", buf_char);
606 } 666 }
607 else { 667 else {