ACPICA: Add option to disable Package object name resolution errors
ACPICA commit a6c3c725c44dd44ad9d3f2b2a64351fdbe6e0014 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. Link: https://bugzilla.kernel.org/show_bug.cgi?id=198167 Link: https://github.com/acpica/acpica/commit/a6c3c725 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>
This commit is contained in:
Родитель
5a8361f7ec
Коммит
959c38a7e1
|
@ -389,11 +389,12 @@ static void
|
|||
acpi_ds_resolve_package_element(union acpi_operand_object **element_ptr)
|
||||
{
|
||||
acpi_status status;
|
||||
acpi_status status2;
|
||||
union acpi_generic_state scope_info;
|
||||
union acpi_operand_object *element = *element_ptr;
|
||||
struct acpi_namespace_node *resolved_node;
|
||||
struct acpi_namespace_node *original_node;
|
||||
char *external_path = NULL;
|
||||
char *external_path = "";
|
||||
acpi_object_type type;
|
||||
|
||||
ACPI_FUNCTION_TRACE(ds_resolve_package_element);
|
||||
|
@ -417,17 +418,40 @@ acpi_ds_resolve_package_element(union acpi_operand_object **element_ptr)
|
|||
ACPI_NS_SEARCH_PARENT | ACPI_NS_DONT_OPEN_SCOPE,
|
||||
NULL, &resolved_node);
|
||||
if (ACPI_FAILURE(status)) {
|
||||
status = acpi_ns_externalize_name(ACPI_UINT32_MAX,
|
||||
(char *)element->reference.
|
||||
aml, NULL, &external_path);
|
||||
#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) {
|
||||
|
||||
/* Reference 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);
|
||||
|
||||
ACPI_EXCEPTION((AE_INFO, status,
|
||||
"Could not find/resolve named package element: %s",
|
||||
"While resolving a named reference package element - %s",
|
||||
external_path));
|
||||
if (ACPI_SUCCESS(status2)) {
|
||||
ACPI_FREE(external_path);
|
||||
}
|
||||
|
||||
/* Not found, set the element to NULL */
|
||||
/* Could not resolve name, set the element to NULL */
|
||||
|
||||
ACPI_FREE(external_path);
|
||||
acpi_ut_remove_reference(*element_ptr);
|
||||
*element_ptr = NULL;
|
||||
return_VOID;
|
||||
|
|
|
@ -58,6 +58,7 @@
|
|||
|
||||
#define ACPI_USE_SYSTEM_CLIBRARY
|
||||
#define ACPI_USE_DO_WHILE_0
|
||||
#define ACPI_IGNORE_PACKAGE_RESOLUTION_ERRORS
|
||||
|
||||
#ifdef __KERNEL__
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче