summaryrefslogtreecommitdiffstats
path: root/drivers/acpi/acpica/nsinit.c
diff options
context:
space:
mode:
authorBob Moore <robert.moore@intel.com>2017-08-03 14:27:22 +0800
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>2017-08-03 23:34:17 +0200
commita62a7117d91ca83d319566cbe16039f4e9f413c2 (patch)
tree23be92692a4e0191972530325761627ca526bb73 /drivers/acpi/acpica/nsinit.c
parent7ab58197d84c29cf20162eaaed1eb2cc94fc73a7 (diff)
downloadop-kernel-dev-a62a7117d91ca83d319566cbe16039f4e9f413c2.zip
op-kernel-dev-a62a7117d91ca83d319566cbe16039f4e9f413c2.tar.gz
ACPICA: Implement deferred resolution of reference package elements
ACPICA commit 0c08790c56fdf0dc081ae869495a09d8c4230854 This change defers the resolution of package elements that are named references until after the entire namespace has been loaded from the definition block. This allows such references to be in fact forward references for both module level code and control methods. Link: https://github.com/acpica/acpica/commit/0c08790c Signed-off-by: Bob Moore <robert.moore@intel.com> Signed-off-by: Lv Zheng <lv.zheng@intel.com> Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Diffstat (limited to 'drivers/acpi/acpica/nsinit.c')
-rw-r--r--drivers/acpi/acpica/nsinit.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/drivers/acpi/acpica/nsinit.c b/drivers/acpi/acpica/nsinit.c
index ce33e72..9c62979 100644
--- a/drivers/acpi/acpica/nsinit.c
+++ b/drivers/acpi/acpica/nsinit.c
@@ -396,6 +396,20 @@ acpi_ns_init_one_object(acpi_handle obj_handle,
info->package_init++;
status = acpi_ds_get_package_arguments(obj_desc);
+ if (ACPI_FAILURE(status)) {
+ break;
+ }
+
+ /*
+ * Resolve all named references in package objects (and all
+ * sub-packages). This action has been deferred until the entire
+ * namespace has been loaded, in order to support external and
+ * forward references from individual package elements (05/2017).
+ */
+ status = acpi_ut_walk_package_tree(obj_desc, NULL,
+ acpi_ds_init_package_element,
+ NULL);
+ obj_desc->package.flags |= AOPOBJ_DATA_VALID;
break;
default:
OpenPOWER on IntegriCloud