]> Git Repo - linux.git/commitdiff
ACPICA: Change a compile-time option to a runtime option
authorBob Moore <[email protected]>
Wed, 14 Mar 2018 23:13:04 +0000 (16:13 -0700)
committerRafael J. Wysocki <[email protected]>
Sun, 18 Mar 2018 17:52:00 +0000 (18:52 +0100)
Changes the option to ignore package resolution errors into
a runtime option.

Signed-off-by: Bob Moore <[email protected]>
Signed-off-by: Erik Schmauss <[email protected]>
Signed-off-by: Rafael J. Wysocki <[email protected]>
drivers/acpi/acpica/dspkginit.c
include/acpi/acpixf.h

index 7d48525b5e520aa9b5ca510104698f5a7a38336f..931da52b97749b4512c08fb088fa7d8b3c56ffb8 100644 (file)
@@ -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);
index ecd22e45ce3bc29d1fd32803ca6051b8b8bf1f42..b8d42c5c42648ea8af8021ee1230a9acf5425f25 100644 (file)
@@ -270,6 +270,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.
This page took 0.055302 seconds and 4 git commands to generate.