Skip to content

Commit

Permalink
ACPICA: Update two error messages to emit control method name
Browse files Browse the repository at this point in the history
ACPICA commit 73f7fab1376d5dbfda24cf51c1bb04df0d31b48e

Intention is to improve debugging by clarifying which method
has caused the error, in acpi_evaluate_object_typed.

Link: https://github.com/acpica/acpica/commit/73f7fab1
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>
  • Loading branch information
Bob Moore authored and Rafael J. Wysocki committed Jun 27, 2017
1 parent 1d6e9cf commit 2d2a954
Showing 1 changed file with 29 additions and 10 deletions.
39 changes: 29 additions & 10 deletions drivers/acpi/acpica/nsxfeval.c
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,8 @@ acpi_evaluate_object_typed(acpi_handle handle,
{
acpi_status status;
u8 free_buffer_on_error = FALSE;
acpi_handle target_handle;
char *full_pathname;

ACPI_FUNCTION_TRACE(acpi_evaluate_object_typed);

Expand All @@ -98,38 +100,51 @@ acpi_evaluate_object_typed(acpi_handle handle,
free_buffer_on_error = TRUE;
}

status = acpi_get_handle(handle, pathname, &target_handle);
if (ACPI_FAILURE(status)) {
return_ACPI_STATUS(status);
}

full_pathname = acpi_ns_get_external_pathname(target_handle);
if (!full_pathname) {
return_ACPI_STATUS(AE_NO_MEMORY);
}

/* Evaluate the object */

status = acpi_evaluate_object(handle, pathname,
external_params, return_buffer);
status = acpi_evaluate_object(target_handle, NULL, external_params,
return_buffer);
if (ACPI_FAILURE(status)) {
return_ACPI_STATUS(status);
goto exit;
}

/* Type ANY means "don't care" */
/* Type ANY means "don't care about return value type" */

if (return_type == ACPI_TYPE_ANY) {
return_ACPI_STATUS(AE_OK);
goto exit;
}

if (return_buffer->length == 0) {

/* Error because caller specifically asked for a return value */

ACPI_ERROR((AE_INFO, "No return value"));
return_ACPI_STATUS(AE_NULL_OBJECT);
ACPI_ERROR((AE_INFO, "%s did not return any object",
full_pathname));
status = AE_NULL_OBJECT;
goto exit;
}

/* Examine the object type returned from evaluate_object */

if (((union acpi_object *)return_buffer->pointer)->type == return_type) {
return_ACPI_STATUS(AE_OK);
goto exit;
}

/* Return object type does not match requested type */

ACPI_ERROR((AE_INFO,
"Incorrect return type [%s] requested [%s]",
"Incorrect return type from %s - received [%s], requested [%s]",
full_pathname,
acpi_ut_get_type_name(((union acpi_object *)return_buffer->
pointer)->type),
acpi_ut_get_type_name(return_type)));
Expand All @@ -147,7 +162,11 @@ acpi_evaluate_object_typed(acpi_handle handle,
}

return_buffer->length = 0;
return_ACPI_STATUS(AE_TYPE);
status = AE_TYPE;

exit:
ACPI_FREE(full_pathname);
return_ACPI_STATUS(status);
}

ACPI_EXPORT_SYMBOL(acpi_evaluate_object_typed)
Expand Down

0 comments on commit 2d2a954

Please sign in to comment.