Commit d46b6537 authored by Erik Schmauss's avatar Erik Schmauss Committed by Rafael J. Wysocki

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: default avatarErik Schmauss <erik.schmauss@intel.com>
[ rjw: Fix damaged white space ]
Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
parent 2c20443e
...@@ -709,20 +709,20 @@ acpi_status acpi_ps_parse_loop(struct acpi_walk_state *walk_state) ...@@ -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 { ...@@ -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
*/ */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment