Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 350866
b: refs/heads/master
c: 886308e
h: refs/heads/master
v: v3
  • Loading branch information
Bob Moore authored and Rafael J. Wysocki committed Jan 10, 2013
1 parent 65487c0 commit 417e36b
Show file tree
Hide file tree
Showing 6 changed files with 53 additions and 45 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 0e770b3263816b4445e2c855f641b172aa26291a
refs/heads/master: 886308ecea88236e88fba2a7f50d8ce22a40c4fe
7 changes: 5 additions & 2 deletions trunk/drivers/acpi/acpica/acutils.h
Original file line number Diff line number Diff line change
Expand Up @@ -535,12 +535,15 @@ acpi_ut_display_init_pathname(u8 type,
* utresrc
*/
acpi_status
acpi_ut_walk_aml_resources(u8 *aml,
acpi_ut_walk_aml_resources(struct acpi_walk_state *walk_state,
u8 *aml,
acpi_size aml_length,
acpi_walk_aml_callback user_function,
void **context);

acpi_status acpi_ut_validate_resource(void *aml, u8 *return_index);
acpi_status
acpi_ut_validate_resource(struct acpi_walk_state *walk_state,
void *aml, u8 *return_index);

u32 acpi_ut_get_descriptor_length(void *aml);

Expand Down
4 changes: 3 additions & 1 deletion trunk/drivers/acpi/acpica/rscalc.c
Original file line number Diff line number Diff line change
Expand Up @@ -407,7 +407,9 @@ acpi_rs_get_list_length(u8 * aml_buffer,

/* Validate the Resource Type and Resource Length */

status = acpi_ut_validate_resource(aml_buffer, &resource_index);
status =
acpi_ut_validate_resource(NULL, aml_buffer,
&resource_index);
if (ACPI_FAILURE(status)) {
/*
* Exit on failure. Cannot continue because the descriptor length
Expand Down
4 changes: 2 additions & 2 deletions trunk/drivers/acpi/acpica/rscreate.c
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,7 @@ acpi_buffer_to_resource(u8 *aml_buffer,

/* Perform the AML-to-Resource conversion */

status = acpi_ut_walk_aml_resources(aml_buffer, aml_buffer_length,
status = acpi_ut_walk_aml_resources(NULL, aml_buffer, aml_buffer_length,
acpi_rs_convert_aml_to_resources,
&current_resource_ptr);
if (status == AE_AML_NO_RESOURCE_END_TAG) {
Expand Down Expand Up @@ -174,7 +174,7 @@ acpi_rs_create_resource_list(union acpi_operand_object *aml_buffer,
/* Do the conversion */

resource = output_buffer->pointer;
status = acpi_ut_walk_aml_resources(aml_start, aml_buffer_length,
status = acpi_ut_walk_aml_resources(NULL, aml_start, aml_buffer_length,
acpi_rs_convert_aml_to_resources,
&resource);
if (ACPI_FAILURE(status)) {
Expand Down
7 changes: 4 additions & 3 deletions trunk/drivers/acpi/acpica/rslist.c
Original file line number Diff line number Diff line change
Expand Up @@ -217,9 +217,10 @@ acpi_rs_convert_resources_to_aml(struct acpi_resource *resource,

/* Perform final sanity check on the new AML resource descriptor */

status =
acpi_ut_validate_resource(ACPI_CAST_PTR
(union aml_resource, aml), NULL);
status = acpi_ut_validate_resource(NULL,
ACPI_CAST_PTR(union
aml_resource,
aml), NULL);
if (ACPI_FAILURE(status)) {
return_ACPI_STATUS(status);
}
Expand Down
74 changes: 38 additions & 36 deletions trunk/drivers/acpi/acpica/utresrc.c
Original file line number Diff line number Diff line change
Expand Up @@ -383,26 +383,16 @@ static const u8 acpi_gbl_resource_types[] = {
ACPI_VARIABLE_LENGTH /* 0E *serial_bus */
};

/*
* For the iASL compiler/disassembler, we don't want any error messages
* because the disassembler uses the resource validation code to determine
* if Buffer objects are actually Resource Templates.
*/
#ifdef ACPI_ASL_COMPILER
#define ACPI_RESOURCE_ERROR(plist)
#else
#define ACPI_RESOURCE_ERROR(plist) ACPI_ERROR(plist)
#endif

/*******************************************************************************
*
* FUNCTION: acpi_ut_walk_aml_resources
*
* PARAMETERS: aml - Pointer to the raw AML resource template
* aml_length - Length of the entire template
* user_function - Called once for each descriptor found. If
* NULL, a pointer to the end_tag is returned
* context - Passed to user_function
* PARAMETERS: walk_state - Current walk info
* PARAMETERS: aml - Pointer to the raw AML resource template
* aml_length - Length of the entire template
* user_function - Called once for each descriptor found. If
* NULL, a pointer to the end_tag is returned
* context - Passed to user_function
*
* RETURN: Status
*
Expand All @@ -412,7 +402,8 @@ static const u8 acpi_gbl_resource_types[] = {
******************************************************************************/

acpi_status
acpi_ut_walk_aml_resources(u8 *aml,
acpi_ut_walk_aml_resources(struct acpi_walk_state *walk_state,
u8 *aml,
acpi_size aml_length,
acpi_walk_aml_callback user_function, void **context)
{
Expand Down Expand Up @@ -441,7 +432,8 @@ acpi_ut_walk_aml_resources(u8 *aml,

/* Validate the Resource Type and Resource Length */

status = acpi_ut_validate_resource(aml, &resource_index);
status =
acpi_ut_validate_resource(walk_state, aml, &resource_index);
if (ACPI_FAILURE(status)) {
/*
* Exit on failure. Cannot continue because the descriptor length
Expand Down Expand Up @@ -498,7 +490,8 @@ acpi_ut_walk_aml_resources(u8 *aml,

/* Insert an end_tag anyway. acpi_rs_get_list_length always leaves room */

(void)acpi_ut_validate_resource(end_tag, &resource_index);
(void)acpi_ut_validate_resource(walk_state, end_tag,
&resource_index);
status =
user_function(end_tag, 2, offset, resource_index, context);
if (ACPI_FAILURE(status)) {
Expand All @@ -513,9 +506,10 @@ acpi_ut_walk_aml_resources(u8 *aml,
*
* FUNCTION: acpi_ut_validate_resource
*
* PARAMETERS: aml - Pointer to the raw AML resource descriptor
* return_index - Where the resource index is returned. NULL
* if the index is not required.
* PARAMETERS: walk_state - Current walk info
* aml - Pointer to the raw AML resource descriptor
* return_index - Where the resource index is returned. NULL
* if the index is not required.
*
* RETURN: Status, and optionally the Index into the global resource tables
*
Expand All @@ -525,7 +519,9 @@ acpi_ut_walk_aml_resources(u8 *aml,
*
******************************************************************************/

acpi_status acpi_ut_validate_resource(void *aml, u8 *return_index)
acpi_status
acpi_ut_validate_resource(struct acpi_walk_state *walk_state,
void *aml, u8 *return_index)
{
union aml_resource *aml_resource;
u8 resource_type;
Expand Down Expand Up @@ -627,10 +623,12 @@ acpi_status acpi_ut_validate_resource(void *aml, u8 *return_index)
if ((aml_resource->common_serial_bus.type == 0) ||
(aml_resource->common_serial_bus.type >
AML_RESOURCE_MAX_SERIALBUSTYPE)) {
ACPI_RESOURCE_ERROR((AE_INFO,
"Invalid/unsupported SerialBus resource descriptor: BusType 0x%2.2X",
aml_resource->common_serial_bus.
type));
if (walk_state) {
ACPI_ERROR((AE_INFO,
"Invalid/unsupported SerialBus resource descriptor: BusType 0x%2.2X",
aml_resource->common_serial_bus.
type));
}
return (AE_AML_INVALID_RESOURCE_TYPE);
}
}
Expand All @@ -645,18 +643,22 @@ acpi_status acpi_ut_validate_resource(void *aml, u8 *return_index)

invalid_resource:

ACPI_RESOURCE_ERROR((AE_INFO,
"Invalid/unsupported resource descriptor: Type 0x%2.2X",
resource_type));
if (walk_state) {
ACPI_ERROR((AE_INFO,
"Invalid/unsupported resource descriptor: Type 0x%2.2X",
resource_type));
}
return (AE_AML_INVALID_RESOURCE_TYPE);

bad_resource_length:

ACPI_RESOURCE_ERROR((AE_INFO,
"Invalid resource descriptor length: Type "
"0x%2.2X, Length 0x%4.4X, MinLength 0x%4.4X",
resource_type, resource_length,
minimum_resource_length));
if (walk_state) {
ACPI_ERROR((AE_INFO,
"Invalid resource descriptor length: Type "
"0x%2.2X, Length 0x%4.4X, MinLength 0x%4.4X",
resource_type, resource_length,
minimum_resource_length));
}
return (AE_AML_BAD_RESOURCE_LENGTH);
}

Expand Down Expand Up @@ -815,7 +817,7 @@ acpi_ut_get_resource_end_tag(union acpi_operand_object *obj_desc, u8 **end_tag)

/* Validate the template and get a pointer to the end_tag */

status = acpi_ut_walk_aml_resources(obj_desc->buffer.pointer,
status = acpi_ut_walk_aml_resources(NULL, obj_desc->buffer.pointer,
obj_desc->buffer.length, NULL,
(void **)end_tag);

Expand Down

0 comments on commit 417e36b

Please sign in to comment.