195857638SErik Schmauss // SPDX-License-Identifier: BSD-3-Clause OR GPL-2.0
299575102SLv Zheng /*******************************************************************************
399575102SLv Zheng *
499575102SLv Zheng * Module Name: dbobject - ACPI object decode and display
599575102SLv Zheng *
699575102SLv Zheng ******************************************************************************/
799575102SLv Zheng
899575102SLv Zheng #include <acpi/acpi.h>
999575102SLv Zheng #include "accommon.h"
1099575102SLv Zheng #include "acnamesp.h"
1199575102SLv Zheng #include "acdebug.h"
1299575102SLv Zheng
1399575102SLv Zheng #define _COMPONENT ACPI_CA_DEBUGGER
1499575102SLv Zheng ACPI_MODULE_NAME("dbobject")
1599575102SLv Zheng
1699575102SLv Zheng /* Local prototypes */
1799575102SLv Zheng static void acpi_db_decode_node(struct acpi_namespace_node *node);
1899575102SLv Zheng
1999575102SLv Zheng /*******************************************************************************
2099575102SLv Zheng *
2199575102SLv Zheng * FUNCTION: acpi_db_dump_method_info
2299575102SLv Zheng *
2399575102SLv Zheng * PARAMETERS: status - Method execution status
2499575102SLv Zheng * walk_state - Current state of the parse tree walk
2599575102SLv Zheng *
2699575102SLv Zheng * RETURN: None
2799575102SLv Zheng *
2899575102SLv Zheng * DESCRIPTION: Called when a method has been aborted because of an error.
2999575102SLv Zheng * Dumps the method execution stack, and the method locals/args,
3099575102SLv Zheng * and disassembles the AML opcode that failed.
3199575102SLv Zheng *
3299575102SLv Zheng ******************************************************************************/
3399575102SLv Zheng
3499575102SLv Zheng void
acpi_db_dump_method_info(acpi_status status,struct acpi_walk_state * walk_state)3599575102SLv Zheng acpi_db_dump_method_info(acpi_status status, struct acpi_walk_state *walk_state)
3699575102SLv Zheng {
3799575102SLv Zheng struct acpi_thread_state *thread;
383877b2ccSBob Moore struct acpi_namespace_node *node;
393877b2ccSBob Moore
403877b2ccSBob Moore node = walk_state->method_node;
413877b2ccSBob Moore
423877b2ccSBob Moore /* There are no locals or arguments for the module-level code case */
433877b2ccSBob Moore
443877b2ccSBob Moore if (node == acpi_gbl_root_node) {
453877b2ccSBob Moore return;
463877b2ccSBob Moore }
4799575102SLv Zheng
4899575102SLv Zheng /* Ignore control codes, they are not errors */
4999575102SLv Zheng
50*25d866c4SMaximilian Luz if (ACPI_CNTL_EXCEPTION(status)) {
5199575102SLv Zheng return;
5299575102SLv Zheng }
5399575102SLv Zheng
5499575102SLv Zheng /* We may be executing a deferred opcode */
5599575102SLv Zheng
5699575102SLv Zheng if (walk_state->deferred_node) {
5799575102SLv Zheng acpi_os_printf("Executing subtree for Buffer/Package/Region\n");
5899575102SLv Zheng return;
5999575102SLv Zheng }
6099575102SLv Zheng
6199575102SLv Zheng /*
6299575102SLv Zheng * If there is no Thread, we are not actually executing a method.
6399575102SLv Zheng * This can happen when the iASL compiler calls the interpreter
6499575102SLv Zheng * to perform constant folding.
6599575102SLv Zheng */
6699575102SLv Zheng thread = walk_state->thread;
6799575102SLv Zheng if (!thread) {
6899575102SLv Zheng return;
6999575102SLv Zheng }
7099575102SLv Zheng
7199575102SLv Zheng /* Display the method locals and arguments */
7299575102SLv Zheng
7399575102SLv Zheng acpi_os_printf("\n");
7499575102SLv Zheng acpi_db_decode_locals(walk_state);
7599575102SLv Zheng acpi_os_printf("\n");
7699575102SLv Zheng acpi_db_decode_arguments(walk_state);
7799575102SLv Zheng acpi_os_printf("\n");
7899575102SLv Zheng }
7999575102SLv Zheng
8099575102SLv Zheng /*******************************************************************************
8199575102SLv Zheng *
8299575102SLv Zheng * FUNCTION: acpi_db_decode_internal_object
8399575102SLv Zheng *
8499575102SLv Zheng * PARAMETERS: obj_desc - Object to be displayed
8599575102SLv Zheng *
8699575102SLv Zheng * RETURN: None
8799575102SLv Zheng *
8899575102SLv Zheng * DESCRIPTION: Short display of an internal object. Numbers/Strings/Buffers.
8999575102SLv Zheng *
9099575102SLv Zheng ******************************************************************************/
9199575102SLv Zheng
acpi_db_decode_internal_object(union acpi_operand_object * obj_desc)9299575102SLv Zheng void acpi_db_decode_internal_object(union acpi_operand_object *obj_desc)
9399575102SLv Zheng {
9499575102SLv Zheng u32 i;
9599575102SLv Zheng
9699575102SLv Zheng if (!obj_desc) {
9799575102SLv Zheng acpi_os_printf(" Uninitialized");
9899575102SLv Zheng return;
9999575102SLv Zheng }
10099575102SLv Zheng
10199575102SLv Zheng if (ACPI_GET_DESCRIPTOR_TYPE(obj_desc) != ACPI_DESC_TYPE_OPERAND) {
10299575102SLv Zheng acpi_os_printf(" %p [%s]", obj_desc,
10399575102SLv Zheng acpi_ut_get_descriptor_name(obj_desc));
10499575102SLv Zheng return;
10599575102SLv Zheng }
10699575102SLv Zheng
10799575102SLv Zheng acpi_os_printf(" %s", acpi_ut_get_object_type_name(obj_desc));
10899575102SLv Zheng
10999575102SLv Zheng switch (obj_desc->common.type) {
11099575102SLv Zheng case ACPI_TYPE_INTEGER:
11199575102SLv Zheng
11299575102SLv Zheng acpi_os_printf(" %8.8X%8.8X",
11399575102SLv Zheng ACPI_FORMAT_UINT64(obj_desc->integer.value));
11499575102SLv Zheng break;
11599575102SLv Zheng
11699575102SLv Zheng case ACPI_TYPE_STRING:
11799575102SLv Zheng
11860d836fcSBob Moore acpi_os_printf("(%u) \"%.60s",
11999575102SLv Zheng obj_desc->string.length,
12099575102SLv Zheng obj_desc->string.pointer);
12199575102SLv Zheng
12260d836fcSBob Moore if (obj_desc->string.length > 60) {
12399575102SLv Zheng acpi_os_printf("...");
12499575102SLv Zheng } else {
12599575102SLv Zheng acpi_os_printf("\"");
12699575102SLv Zheng }
12799575102SLv Zheng break;
12899575102SLv Zheng
12999575102SLv Zheng case ACPI_TYPE_BUFFER:
13099575102SLv Zheng
13199575102SLv Zheng acpi_os_printf("(%u)", obj_desc->buffer.length);
13299575102SLv Zheng for (i = 0; (i < 8) && (i < obj_desc->buffer.length); i++) {
13399575102SLv Zheng acpi_os_printf(" %2.2X", obj_desc->buffer.pointer[i]);
13499575102SLv Zheng }
13599575102SLv Zheng break;
13699575102SLv Zheng
13799575102SLv Zheng default:
13899575102SLv Zheng
13999575102SLv Zheng acpi_os_printf(" %p", obj_desc);
14099575102SLv Zheng break;
14199575102SLv Zheng }
14299575102SLv Zheng }
14399575102SLv Zheng
14499575102SLv Zheng /*******************************************************************************
14599575102SLv Zheng *
14699575102SLv Zheng * FUNCTION: acpi_db_decode_node
14799575102SLv Zheng *
14899575102SLv Zheng * PARAMETERS: node - Object to be displayed
14999575102SLv Zheng *
15099575102SLv Zheng * RETURN: None
15199575102SLv Zheng *
15299575102SLv Zheng * DESCRIPTION: Short display of a namespace node
15399575102SLv Zheng *
15499575102SLv Zheng ******************************************************************************/
15599575102SLv Zheng
acpi_db_decode_node(struct acpi_namespace_node * node)15699575102SLv Zheng static void acpi_db_decode_node(struct acpi_namespace_node *node)
15799575102SLv Zheng {
15899575102SLv Zheng
15999575102SLv Zheng acpi_os_printf("<Node> Name %4.4s",
16099575102SLv Zheng acpi_ut_get_node_name(node));
16199575102SLv Zheng
16299575102SLv Zheng if (node->flags & ANOBJ_METHOD_ARG) {
16399575102SLv Zheng acpi_os_printf(" [Method Arg]");
16499575102SLv Zheng }
16599575102SLv Zheng if (node->flags & ANOBJ_METHOD_LOCAL) {
16699575102SLv Zheng acpi_os_printf(" [Method Local]");
16799575102SLv Zheng }
16899575102SLv Zheng
16999575102SLv Zheng switch (node->type) {
17099575102SLv Zheng
17199575102SLv Zheng /* These types have no attached object */
17299575102SLv Zheng
17399575102SLv Zheng case ACPI_TYPE_DEVICE:
17499575102SLv Zheng
17599575102SLv Zheng acpi_os_printf(" Device");
17699575102SLv Zheng break;
17799575102SLv Zheng
17899575102SLv Zheng case ACPI_TYPE_THERMAL:
17999575102SLv Zheng
18099575102SLv Zheng acpi_os_printf(" Thermal Zone");
18199575102SLv Zheng break;
18299575102SLv Zheng
18399575102SLv Zheng default:
18499575102SLv Zheng
18599575102SLv Zheng acpi_db_decode_internal_object(acpi_ns_get_attached_object
18699575102SLv Zheng (node));
18799575102SLv Zheng break;
18899575102SLv Zheng }
18999575102SLv Zheng }
19099575102SLv Zheng
19199575102SLv Zheng /*******************************************************************************
19299575102SLv Zheng *
19399575102SLv Zheng * FUNCTION: acpi_db_display_internal_object
19499575102SLv Zheng *
19599575102SLv Zheng * PARAMETERS: obj_desc - Object to be displayed
19699575102SLv Zheng * walk_state - Current walk state
19799575102SLv Zheng *
19899575102SLv Zheng * RETURN: None
19999575102SLv Zheng *
20099575102SLv Zheng * DESCRIPTION: Short display of an internal object
20199575102SLv Zheng *
20299575102SLv Zheng ******************************************************************************/
20399575102SLv Zheng
20499575102SLv Zheng void
acpi_db_display_internal_object(union acpi_operand_object * obj_desc,struct acpi_walk_state * walk_state)20599575102SLv Zheng acpi_db_display_internal_object(union acpi_operand_object *obj_desc,
20699575102SLv Zheng struct acpi_walk_state *walk_state)
20799575102SLv Zheng {
20899575102SLv Zheng u8 type;
20999575102SLv Zheng
21099575102SLv Zheng acpi_os_printf("%p ", obj_desc);
21199575102SLv Zheng
21299575102SLv Zheng if (!obj_desc) {
21399575102SLv Zheng acpi_os_printf("<Null Object>\n");
21499575102SLv Zheng return;
21599575102SLv Zheng }
21699575102SLv Zheng
21799575102SLv Zheng /* Decode the object type */
21899575102SLv Zheng
21999575102SLv Zheng switch (ACPI_GET_DESCRIPTOR_TYPE(obj_desc)) {
22099575102SLv Zheng case ACPI_DESC_TYPE_PARSER:
22199575102SLv Zheng
22299575102SLv Zheng acpi_os_printf("<Parser> ");
22399575102SLv Zheng break;
22499575102SLv Zheng
22599575102SLv Zheng case ACPI_DESC_TYPE_NAMED:
22699575102SLv Zheng
22799575102SLv Zheng acpi_db_decode_node((struct acpi_namespace_node *)obj_desc);
22899575102SLv Zheng break;
22999575102SLv Zheng
23099575102SLv Zheng case ACPI_DESC_TYPE_OPERAND:
23199575102SLv Zheng
23299575102SLv Zheng type = obj_desc->common.type;
23399575102SLv Zheng if (type > ACPI_TYPE_LOCAL_MAX) {
23499575102SLv Zheng acpi_os_printf(" Type %X [Invalid Type]", (u32)type);
23599575102SLv Zheng return;
23699575102SLv Zheng }
23799575102SLv Zheng
23899575102SLv Zheng /* Decode the ACPI object type */
23999575102SLv Zheng
24099575102SLv Zheng switch (obj_desc->common.type) {
24199575102SLv Zheng case ACPI_TYPE_LOCAL_REFERENCE:
24299575102SLv Zheng
24399575102SLv Zheng acpi_os_printf("[%s] ",
24499575102SLv Zheng acpi_ut_get_reference_name(obj_desc));
24599575102SLv Zheng
246c163f90cSErik Schmauss /* Decode the reference */
24799575102SLv Zheng
24899575102SLv Zheng switch (obj_desc->reference.class) {
24999575102SLv Zheng case ACPI_REFCLASS_LOCAL:
25099575102SLv Zheng
25199575102SLv Zheng acpi_os_printf("%X ",
25299575102SLv Zheng obj_desc->reference.value);
25399575102SLv Zheng if (walk_state) {
25499575102SLv Zheng obj_desc = walk_state->local_variables
25599575102SLv Zheng [obj_desc->reference.value].object;
25699575102SLv Zheng acpi_os_printf("%p", obj_desc);
25799575102SLv Zheng acpi_db_decode_internal_object
25899575102SLv Zheng (obj_desc);
25999575102SLv Zheng }
26099575102SLv Zheng break;
26199575102SLv Zheng
26299575102SLv Zheng case ACPI_REFCLASS_ARG:
26399575102SLv Zheng
26499575102SLv Zheng acpi_os_printf("%X ",
26599575102SLv Zheng obj_desc->reference.value);
26699575102SLv Zheng if (walk_state) {
26799575102SLv Zheng obj_desc = walk_state->arguments
26899575102SLv Zheng [obj_desc->reference.value].object;
26999575102SLv Zheng acpi_os_printf("%p", obj_desc);
27099575102SLv Zheng acpi_db_decode_internal_object
27199575102SLv Zheng (obj_desc);
27299575102SLv Zheng }
27399575102SLv Zheng break;
27499575102SLv Zheng
27599575102SLv Zheng case ACPI_REFCLASS_INDEX:
27699575102SLv Zheng
27799575102SLv Zheng switch (obj_desc->reference.target_type) {
27899575102SLv Zheng case ACPI_TYPE_BUFFER_FIELD:
27999575102SLv Zheng
28099575102SLv Zheng acpi_os_printf("%p",
28199575102SLv Zheng obj_desc->reference.
28299575102SLv Zheng object);
28399575102SLv Zheng acpi_db_decode_internal_object
28499575102SLv Zheng (obj_desc->reference.object);
28599575102SLv Zheng break;
28699575102SLv Zheng
28799575102SLv Zheng case ACPI_TYPE_PACKAGE:
28899575102SLv Zheng
28999575102SLv Zheng acpi_os_printf("%p",
29099575102SLv Zheng obj_desc->reference.
29199575102SLv Zheng where);
29299575102SLv Zheng if (!obj_desc->reference.where) {
29399575102SLv Zheng acpi_os_printf
29499575102SLv Zheng (" Uninitialized WHERE pointer");
29599575102SLv Zheng } else {
29699575102SLv Zheng acpi_db_decode_internal_object(*
29799575102SLv Zheng (obj_desc->
29899575102SLv Zheng reference.
29999575102SLv Zheng where));
30099575102SLv Zheng }
30199575102SLv Zheng break;
30299575102SLv Zheng
30399575102SLv Zheng default:
30499575102SLv Zheng
30599575102SLv Zheng acpi_os_printf
30699575102SLv Zheng ("Unknown index target type");
30799575102SLv Zheng break;
30899575102SLv Zheng }
30999575102SLv Zheng break;
31099575102SLv Zheng
31199575102SLv Zheng case ACPI_REFCLASS_REFOF:
31299575102SLv Zheng
31399575102SLv Zheng if (!obj_desc->reference.object) {
31499575102SLv Zheng acpi_os_printf
31599575102SLv Zheng ("Uninitialized reference subobject pointer");
31699575102SLv Zheng break;
31799575102SLv Zheng }
31899575102SLv Zheng
31999575102SLv Zheng /* Reference can be to a Node or an Operand object */
32099575102SLv Zheng
32199575102SLv Zheng switch (ACPI_GET_DESCRIPTOR_TYPE
32299575102SLv Zheng (obj_desc->reference.object)) {
32399575102SLv Zheng case ACPI_DESC_TYPE_NAMED:
32499575102SLv Zheng
32599575102SLv Zheng acpi_db_decode_node(obj_desc->reference.
32699575102SLv Zheng object);
32799575102SLv Zheng break;
32899575102SLv Zheng
32999575102SLv Zheng case ACPI_DESC_TYPE_OPERAND:
33099575102SLv Zheng
33199575102SLv Zheng acpi_db_decode_internal_object
33299575102SLv Zheng (obj_desc->reference.object);
33399575102SLv Zheng break;
33499575102SLv Zheng
33599575102SLv Zheng default:
33699575102SLv Zheng break;
33799575102SLv Zheng }
33899575102SLv Zheng break;
33999575102SLv Zheng
34099575102SLv Zheng case ACPI_REFCLASS_NAME:
34199575102SLv Zheng
34299575102SLv Zheng acpi_db_decode_node(obj_desc->reference.node);
34399575102SLv Zheng break;
34499575102SLv Zheng
34599575102SLv Zheng case ACPI_REFCLASS_DEBUG:
34699575102SLv Zheng case ACPI_REFCLASS_TABLE:
34799575102SLv Zheng
34899575102SLv Zheng acpi_os_printf("\n");
34999575102SLv Zheng break;
35099575102SLv Zheng
35199575102SLv Zheng default: /* Unknown reference class */
35299575102SLv Zheng
35399575102SLv Zheng acpi_os_printf("%2.2X\n",
35499575102SLv Zheng obj_desc->reference.class);
35599575102SLv Zheng break;
35699575102SLv Zheng }
35799575102SLv Zheng break;
35899575102SLv Zheng
35999575102SLv Zheng default:
36099575102SLv Zheng
36199575102SLv Zheng acpi_os_printf("<Obj> ");
36299575102SLv Zheng acpi_db_decode_internal_object(obj_desc);
36399575102SLv Zheng break;
36499575102SLv Zheng }
36599575102SLv Zheng break;
36699575102SLv Zheng
36799575102SLv Zheng default:
36899575102SLv Zheng
36999575102SLv Zheng acpi_os_printf("<Not a valid ACPI Object Descriptor> [%s]",
37099575102SLv Zheng acpi_ut_get_descriptor_name(obj_desc));
37199575102SLv Zheng break;
37299575102SLv Zheng }
37399575102SLv Zheng
37499575102SLv Zheng acpi_os_printf("\n");
37599575102SLv Zheng }
37699575102SLv Zheng
37799575102SLv Zheng /*******************************************************************************
37899575102SLv Zheng *
37999575102SLv Zheng * FUNCTION: acpi_db_decode_locals
38099575102SLv Zheng *
38199575102SLv Zheng * PARAMETERS: walk_state - State for current method
38299575102SLv Zheng *
38399575102SLv Zheng * RETURN: None
38499575102SLv Zheng *
38599575102SLv Zheng * DESCRIPTION: Display all locals for the currently running control method
38699575102SLv Zheng *
38799575102SLv Zheng ******************************************************************************/
38899575102SLv Zheng
acpi_db_decode_locals(struct acpi_walk_state * walk_state)38999575102SLv Zheng void acpi_db_decode_locals(struct acpi_walk_state *walk_state)
39099575102SLv Zheng {
39199575102SLv Zheng u32 i;
39299575102SLv Zheng union acpi_operand_object *obj_desc;
39399575102SLv Zheng struct acpi_namespace_node *node;
39499575102SLv Zheng u8 display_locals = FALSE;
39599575102SLv Zheng
39699575102SLv Zheng node = walk_state->method_node;
3973877b2ccSBob Moore
3983877b2ccSBob Moore /* There are no locals for the module-level code case */
3993877b2ccSBob Moore
4003877b2ccSBob Moore if (node == acpi_gbl_root_node) {
4013877b2ccSBob Moore return;
4023877b2ccSBob Moore }
40399575102SLv Zheng
40499575102SLv Zheng if (!node) {
40599575102SLv Zheng acpi_os_printf
40699575102SLv Zheng ("No method node (Executing subtree for buffer or opregion)\n");
40799575102SLv Zheng return;
40899575102SLv Zheng }
40999575102SLv Zheng
41099575102SLv Zheng if (node->type != ACPI_TYPE_METHOD) {
41199575102SLv Zheng acpi_os_printf("Executing subtree for Buffer/Package/Region\n");
41299575102SLv Zheng return;
41399575102SLv Zheng }
41499575102SLv Zheng
41599575102SLv Zheng /* Are any locals actually set? */
41699575102SLv Zheng
41799575102SLv Zheng for (i = 0; i < ACPI_METHOD_NUM_LOCALS; i++) {
41899575102SLv Zheng obj_desc = walk_state->local_variables[i].object;
41999575102SLv Zheng if (obj_desc) {
42099575102SLv Zheng display_locals = TRUE;
42199575102SLv Zheng break;
42299575102SLv Zheng }
42399575102SLv Zheng }
42499575102SLv Zheng
42599575102SLv Zheng /* If any are set, only display the ones that are set */
42699575102SLv Zheng
42799575102SLv Zheng if (display_locals) {
42899575102SLv Zheng acpi_os_printf
4292cb8c3bbSBob Moore ("\nInitialized Local Variables for Method [%4.4s]:\n",
43099575102SLv Zheng acpi_ut_get_node_name(node));
43199575102SLv Zheng
43299575102SLv Zheng for (i = 0; i < ACPI_METHOD_NUM_LOCALS; i++) {
43399575102SLv Zheng obj_desc = walk_state->local_variables[i].object;
43499575102SLv Zheng if (obj_desc) {
43599575102SLv Zheng acpi_os_printf(" Local%X: ", i);
43699575102SLv Zheng acpi_db_display_internal_object(obj_desc,
43799575102SLv Zheng walk_state);
43899575102SLv Zheng }
43999575102SLv Zheng }
44099575102SLv Zheng } else {
44199575102SLv Zheng acpi_os_printf
4422cb8c3bbSBob Moore ("No Local Variables are initialized for Method [%4.4s]\n",
44399575102SLv Zheng acpi_ut_get_node_name(node));
44499575102SLv Zheng }
44599575102SLv Zheng }
44699575102SLv Zheng
44799575102SLv Zheng /*******************************************************************************
44899575102SLv Zheng *
44999575102SLv Zheng * FUNCTION: acpi_db_decode_arguments
45099575102SLv Zheng *
45199575102SLv Zheng * PARAMETERS: walk_state - State for current method
45299575102SLv Zheng *
45399575102SLv Zheng * RETURN: None
45499575102SLv Zheng *
45599575102SLv Zheng * DESCRIPTION: Display all arguments for the currently running control method
45699575102SLv Zheng *
45799575102SLv Zheng ******************************************************************************/
45899575102SLv Zheng
acpi_db_decode_arguments(struct acpi_walk_state * walk_state)45999575102SLv Zheng void acpi_db_decode_arguments(struct acpi_walk_state *walk_state)
46099575102SLv Zheng {
46199575102SLv Zheng u32 i;
46299575102SLv Zheng union acpi_operand_object *obj_desc;
46399575102SLv Zheng struct acpi_namespace_node *node;
46499575102SLv Zheng u8 display_args = FALSE;
46599575102SLv Zheng
46699575102SLv Zheng node = walk_state->method_node;
46799575102SLv Zheng
4683877b2ccSBob Moore /* There are no arguments for the module-level code case */
4693877b2ccSBob Moore
4703877b2ccSBob Moore if (node == acpi_gbl_root_node) {
4713877b2ccSBob Moore return;
4723877b2ccSBob Moore }
4733877b2ccSBob Moore
47499575102SLv Zheng if (!node) {
47599575102SLv Zheng acpi_os_printf
47699575102SLv Zheng ("No method node (Executing subtree for buffer or opregion)\n");
47799575102SLv Zheng return;
47899575102SLv Zheng }
47999575102SLv Zheng
48099575102SLv Zheng if (node->type != ACPI_TYPE_METHOD) {
48199575102SLv Zheng acpi_os_printf("Executing subtree for Buffer/Package/Region\n");
48299575102SLv Zheng return;
48399575102SLv Zheng }
48499575102SLv Zheng
48599575102SLv Zheng /* Are any arguments actually set? */
48699575102SLv Zheng
48799575102SLv Zheng for (i = 0; i < ACPI_METHOD_NUM_ARGS; i++) {
48899575102SLv Zheng obj_desc = walk_state->arguments[i].object;
48999575102SLv Zheng if (obj_desc) {
49099575102SLv Zheng display_args = TRUE;
49199575102SLv Zheng break;
49299575102SLv Zheng }
49399575102SLv Zheng }
49499575102SLv Zheng
49599575102SLv Zheng /* If any are set, only display the ones that are set */
49699575102SLv Zheng
49799575102SLv Zheng if (display_args) {
49899575102SLv Zheng acpi_os_printf("Initialized Arguments for Method [%4.4s]: "
49999575102SLv Zheng "(%X arguments defined for method invocation)\n",
50099575102SLv Zheng acpi_ut_get_node_name(node),
5012cb8c3bbSBob Moore node->object->method.param_count);
50299575102SLv Zheng
50399575102SLv Zheng for (i = 0; i < ACPI_METHOD_NUM_ARGS; i++) {
50499575102SLv Zheng obj_desc = walk_state->arguments[i].object;
50599575102SLv Zheng if (obj_desc) {
50699575102SLv Zheng acpi_os_printf(" Arg%u: ", i);
50799575102SLv Zheng acpi_db_display_internal_object(obj_desc,
50899575102SLv Zheng walk_state);
50999575102SLv Zheng }
51099575102SLv Zheng }
51199575102SLv Zheng } else {
51299575102SLv Zheng acpi_os_printf
51399575102SLv Zheng ("No Arguments are initialized for method [%4.4s]\n",
51499575102SLv Zheng acpi_ut_get_node_name(node));
51599575102SLv Zheng }
51699575102SLv Zheng }
517