ACPICA: Debugger: Improve support for Alias objects
authorBob Moore <robert.moore@intel.com>
Thu, 3 Aug 2017 06:27:15 +0000 (14:27 +0800)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Thu, 3 Aug 2017 21:34:17 +0000 (23:34 +0200)
ACPICA commit 916993dbcd45b46e01f6c9b8337a01513f5d8dcc

Properly resolve alias objects for display.
General cleanup of related output.

Link: https://github.com/acpica/acpica/commit/916993db
Signed-off-by: Bob Moore <robert.moore@intel.com>
Signed-off-by: Lv Zheng <lv.zheng@intel.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
drivers/acpi/acpica/dbdisply.c
drivers/acpi/acpica/exdump.c

index 46bf270ac5256956ce77929c89e6966b611c160a..5a606eac0c2243d471d67b0650ead0f74a298168 100644 (file)
@@ -310,7 +310,7 @@ dump_node:
        }
 
        else {
-               acpi_os_printf("Object (%p) Pathname: %s\n",
+               acpi_os_printf("Object %p: Namespace Node - Pathname: %s\n",
                               node, (char *)ret_buf.pointer);
        }
 
@@ -326,7 +326,7 @@ dump_node:
 
        obj_desc = acpi_ns_get_attached_object(node);
        if (obj_desc) {
-               acpi_os_printf("\nAttached Object (%p):\n", obj_desc);
+               acpi_os_printf("\nAttached Object %p:", obj_desc);
                if (!acpi_os_readable
                    (obj_desc, sizeof(union acpi_operand_object))) {
                        acpi_os_printf
@@ -335,9 +335,36 @@ dump_node:
                        return;
                }
 
-               acpi_ut_debug_dump_buffer((void *)obj_desc,
-                                         sizeof(union acpi_operand_object),
-                                         display, ACPI_UINT32_MAX);
+               if (ACPI_GET_DESCRIPTOR_TYPE(((struct acpi_namespace_node *)
+                                             obj_desc)) ==
+                   ACPI_DESC_TYPE_NAMED) {
+                       acpi_os_printf(" Namespace Node - ");
+                       status =
+                           acpi_get_name((struct acpi_namespace_node *)
+                                         obj_desc,
+                                         ACPI_FULL_PATHNAME_NO_TRAILING,
+                                         &ret_buf);
+                       if (ACPI_FAILURE(status)) {
+                               acpi_os_printf
+                                   ("Could not convert name to pathname\n");
+                       } else {
+                               acpi_os_printf("Pathname: %s",
+                                              (char *)ret_buf.pointer);
+                       }
+
+                       acpi_os_printf("\n");
+                       acpi_ut_debug_dump_buffer((void *)obj_desc,
+                                                 sizeof(struct
+                                                        acpi_namespace_node),
+                                                 display, ACPI_UINT32_MAX);
+               } else {
+                       acpi_os_printf("\n");
+                       acpi_ut_debug_dump_buffer((void *)obj_desc,
+                                                 sizeof(union
+                                                        acpi_operand_object),
+                                                 display, ACPI_UINT32_MAX);
+               }
+
                acpi_ex_dump_object_descriptor(obj_desc, 1);
        }
 }
index 44092f744477480120dc4fd7302516a4911301df..83398dc4b7c288fbe8ecac3b98f3b5bb55efefc5 100644 (file)
@@ -102,7 +102,7 @@ static struct acpi_exdump_info acpi_ex_dump_package[6] = {
        {ACPI_EXD_INIT, ACPI_EXD_TABLE_SIZE(acpi_ex_dump_package), NULL},
        {ACPI_EXD_NODE, ACPI_EXD_OFFSET(package.node), "Parent Node"},
        {ACPI_EXD_UINT8, ACPI_EXD_OFFSET(package.flags), "Flags"},
-       {ACPI_EXD_UINT32, ACPI_EXD_OFFSET(package.count), "Elements"},
+       {ACPI_EXD_UINT32, ACPI_EXD_OFFSET(package.count), "Element Count"},
        {ACPI_EXD_POINTER, ACPI_EXD_OFFSET(package.elements), "Element List"},
        {ACPI_EXD_PACKAGE, 0, NULL}
 };
@@ -384,6 +384,10 @@ acpi_ex_dump_object(union acpi_operand_object *obj_desc,
        count = info->offset;
 
        while (count) {
+               if (!obj_desc) {
+                       return;
+               }
+
                target = ACPI_ADD_PTR(u8, obj_desc, info->offset);
                name = info->name;
 
@@ -469,9 +473,9 @@ acpi_ex_dump_object(union acpi_operand_object *obj_desc,
                        start = *ACPI_CAST_PTR(void *, target);
                        next = start;
 
-                       acpi_os_printf("%20s : %p", name, next);
+                       acpi_os_printf("%20s : %p ", name, next);
                        if (next) {
-                               acpi_os_printf("(%s %2.2X)",
+                               acpi_os_printf("%s (Type %2.2X)",
                                               acpi_ut_get_object_type_name
                                               (next), next->common.type);
 
@@ -493,6 +497,8 @@ acpi_ex_dump_object(union acpi_operand_object *obj_desc,
                                                break;
                                        }
                                }
+                       } else {
+                               acpi_os_printf("- No attached objects");
                        }
 
                        acpi_os_printf("\n");
@@ -1129,7 +1135,9 @@ acpi_ex_dump_package_obj(union acpi_operand_object *obj_desc,
 
        default:
 
-               acpi_os_printf("[Unknown Type] %X\n", obj_desc->common.type);
+               acpi_os_printf("[%s] Type: %2.2X\n",
+                              acpi_ut_get_type_name(obj_desc->common.type),
+                              obj_desc->common.type);
                break;
        }
 }
@@ -1167,11 +1175,17 @@ acpi_ex_dump_object_descriptor(union acpi_operand_object *obj_desc, u32 flags)
                acpi_ex_dump_namespace_node((struct acpi_namespace_node *)
                                            obj_desc, flags);
 
-               acpi_os_printf("\nAttached Object (%p):\n",
-                              ((struct acpi_namespace_node *)obj_desc)->
-                              object);
-
                obj_desc = ((struct acpi_namespace_node *)obj_desc)->object;
+               if (!obj_desc) {
+                       return_VOID;
+               }
+
+               acpi_os_printf("\nAttached Object %p", obj_desc);
+               if (ACPI_GET_DESCRIPTOR_TYPE(obj_desc) == ACPI_DESC_TYPE_NAMED) {
+                       acpi_os_printf(" - Namespace Node");
+               }
+
+               acpi_os_printf(":\n");
                goto dump_object;
        }
 
@@ -1191,6 +1205,10 @@ acpi_ex_dump_object_descriptor(union acpi_operand_object *obj_desc, u32 flags)
 
 dump_object:
 
+       if (!obj_desc) {
+               return_VOID;
+       }
+
        /* Common Fields */
 
        acpi_ex_dump_object(obj_desc, acpi_ex_dump_common);