ACPICA: AML Parser: ignore all exceptions resulting from incorrect AML during table load
Macros to classify different AML exception codes have been added in order to ignore the exceptions, Signed-off-by: Erik Schmauss <erik.schmauss@intel.com> [ rjw: Fix damaged white space ] Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
This commit is contained in:
parent
2c20443ec2
commit
d46b6537f0
2 changed files with 19 additions and 13 deletions
|
@ -709,20 +709,20 @@ acpi_status acpi_ps_parse_loop(struct acpi_walk_state *walk_state)
|
||||||
} else
|
} else
|
||||||
if ((walk_state->
|
if ((walk_state->
|
||||||
parse_flags & ACPI_PARSE_MODULE_LEVEL)
|
parse_flags & ACPI_PARSE_MODULE_LEVEL)
|
||||||
&& status != AE_CTRL_TRANSFER
|
&& (ACPI_AML_EXCEPTION(status)
|
||||||
&& ACPI_FAILURE(status)) {
|
|| status == AE_ALREADY_EXISTS
|
||||||
|
|| status == AE_NOT_FOUND)) {
|
||||||
/*
|
/*
|
||||||
* ACPI_PARSE_MODULE_LEVEL flag means that we are currently
|
* ACPI_PARSE_MODULE_LEVEL flag means that we
|
||||||
* loading a table by executing it as a control method.
|
* are currently loading a table by executing
|
||||||
* However, if we encounter an error while loading the table,
|
* it as a control method. However, if we
|
||||||
* we need to keep trying to load the table rather than
|
* encounter an error while loading the table,
|
||||||
* aborting the table load (setting the status to AE_OK
|
* we need to keep trying to load the table
|
||||||
* continues the table load). If we get a failure at this
|
* rather than aborting the table load (setting
|
||||||
* point, it means that the dispatcher got an error while
|
* the status to AE_OK continues the table
|
||||||
* processing Op (most likely an AML operand error) or a
|
* load). If we get a failure at this point, it
|
||||||
* control method was called from module level and the
|
* means that the dispatcher got an error while
|
||||||
* dispatcher returned AE_CTRL_TRANSFER. In the latter case,
|
* trying to execute the Op.
|
||||||
* leave the status alone, there's nothing wrong with it.
|
|
||||||
*/
|
*/
|
||||||
status = AE_OK;
|
status = AE_OK;
|
||||||
}
|
}
|
||||||
|
|
|
@ -59,6 +59,12 @@ struct acpi_exception_info {
|
||||||
|
|
||||||
#define AE_OK (acpi_status) 0x0000
|
#define AE_OK (acpi_status) 0x0000
|
||||||
|
|
||||||
|
#define ACPI_ENV_EXCEPTION(status) (status & AE_CODE_ENVIRONMENTAL)
|
||||||
|
#define ACPI_AML_EXCEPTION(status) (status & AE_CODE_AML)
|
||||||
|
#define ACPI_PROG_EXCEPTION(status) (status & AE_CODE_PROGRAMMER)
|
||||||
|
#define ACPI_TABLE_EXCEPTION(status) (status & AE_CODE_ACPI_TABLES)
|
||||||
|
#define ACPI_CNTL_EXCEPTION(status) (status & AE_CODE_CONTROL)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Environmental exceptions
|
* Environmental exceptions
|
||||||
*/
|
*/
|
||||||
|
|
Loading…
Reference in a new issue