diff options
author | Bob Moore <robert.moore@intel.com> | 2018-03-15 00:13:04 +0100 |
---|---|---|
committer | Rafael J. Wysocki <rafael.j.wysocki@intel.com> | 2018-03-18 18:52:00 +0100 |
commit | 34f206fd757c5061a67d879a74c300fafc34defb (patch) | |
tree | 89746a8405e8166ff2dc9c329fcdd6f69730804e | |
parent | ACPICA: Remove calling of _STA from acpi_get_object_info() (diff) | |
download | linux-34f206fd757c5061a67d879a74c300fafc34defb.tar.xz linux-34f206fd757c5061a67d879a74c300fafc34defb.zip |
ACPICA: Change a compile-time option to a runtime option
Changes the option to ignore package resolution errors into
a runtime option.
Signed-off-by: Bob Moore <robert.moore@intel.com>
Signed-off-by: Erik Schmauss <erik.schmauss@intel.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
-rw-r--r-- | drivers/acpi/acpica/dspkginit.c | 32 | ||||
-rw-r--r-- | include/acpi/acpixf.h | 10 |
2 files changed, 26 insertions, 16 deletions
diff --git a/drivers/acpi/acpica/dspkginit.c b/drivers/acpi/acpica/dspkginit.c index 7d48525b5e52..931da52b9774 100644 --- a/drivers/acpi/acpica/dspkginit.c +++ b/drivers/acpi/acpica/dspkginit.c @@ -413,32 +413,32 @@ acpi_ds_resolve_package_element(union acpi_operand_object **element_ptr) scope_info.scope.node = element->reference.node; /* Prefix node */ - status = acpi_ns_lookup(&scope_info, (char *)element->reference.aml, /* Pointer to AML path */ + status = acpi_ns_lookup(&scope_info, (char *)element->reference.aml, ACPI_TYPE_ANY, ACPI_IMODE_EXECUTE, ACPI_NS_SEARCH_PARENT | ACPI_NS_DONT_OPEN_SCOPE, NULL, &resolved_node); if (ACPI_FAILURE(status)) { -#if defined ACPI_IGNORE_PACKAGE_RESOLUTION_ERRORS && !defined ACPI_APPLICATION - /* - * For the kernel-resident ACPICA, optionally be silent about the - * NOT_FOUND case. Although this is potentially a serious problem, - * it can generate a lot of noise/errors on platforms whose - * firmware carries around a bunch of unused Package objects. - * To disable these errors, define ACPI_IGNORE_PACKAGE_RESOLUTION_ERRORS - * in the OS-specific header. - * - * All errors are always reported for ACPICA applications such as - * acpi_exec. - */ - if (status == AE_NOT_FOUND) { + if ((status == AE_NOT_FOUND) + && acpi_gbl_ignore_package_resolution_errors) { + /* + * Optionally be silent about the NOT_FOUND case for the referenced + * name. Although this is potentially a serious problem, + * it can generate a lot of noise/errors on platforms whose + * firmware carries around a bunch of unused Package objects. + * To disable these errors, set this global to TRUE: + * acpi_gbl_ignore_package_resolution_errors + * + * If the AML actually tries to use such a package, the unresolved + * element(s) will be replaced with NULL elements. + */ - /* Reference name not found, set the element to NULL */ + /* Referenced name not found, set the element to NULL */ acpi_ut_remove_reference(*element_ptr); *element_ptr = NULL; return_VOID; } -#endif + status2 = acpi_ns_externalize_name(ACPI_UINT32_MAX, (char *)element->reference. aml, NULL, &external_path); diff --git a/include/acpi/acpixf.h b/include/acpi/acpixf.h index ecd22e45ce3b..b8d42c5c4264 100644 --- a/include/acpi/acpixf.h +++ b/include/acpi/acpixf.h @@ -271,6 +271,16 @@ ACPI_INIT_GLOBAL(u8, acpi_gbl_reduced_hardware, FALSE); ACPI_INIT_GLOBAL(u32, acpi_gbl_max_loop_iterations, ACPI_MAX_LOOP_TIMEOUT); /* + * Optionally ignore AE_NOT_FOUND errors from named reference package elements + * during DSDT/SSDT table loading. This reduces error "noise" in platforms + * whose firmware is carrying around a bunch of unused package objects that + * refer to non-existent named objects. However, If the AML actually tries to + * use such a package, the unresolved element(s) will be replaced with NULL + * elements. + */ +ACPI_INIT_GLOBAL(u8, acpi_gbl_ignore_package_resolution_errors, FALSE); + +/* * This mechanism is used to trace a specified AML method. The method is * traced each time it is executed. */ |