lkml.org 
[lkml]   [2015]   [Oct]   [20]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
From
Subject[PATCH] ACPI / property: Fix subnode lookup scope for data-only subnodes
Date
From: Rafael J. Wysocki <rafael.j.wysocki@intel.com>

The correct scope for looking up the objects to generate data packages for
data-only subnodes pointed to by another data-only subnode is the scope
of the parent of that subnode and not the scope containing the _DSD object
at the top of the hierarchy (the latter works only if all of the objects
returning data-only subnode packages in a given hierarchy are in the same
scope).

Fix the code to work as expected.

Fixes: 445b0eb058f5 (ACPI / property: Add support for data-only subnodes)
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
---

On top of linux-next.

Thanks,
Rafael

---
drivers/acpi/property.c | 9 ++++++++-
1 file changed, 8 insertions(+), 1 deletion(-)

Index: linux-pm/drivers/acpi/property.c
===================================================================
--- linux-pm.orig/drivers/acpi/property.c
+++ linux-pm/drivers/acpi/property.c
@@ -71,7 +71,14 @@ static bool acpi_nondev_subnode_ok(acpi_
if (acpi_extract_properties(buf.pointer, &dn->data))
dn->handle = handle;

- if (acpi_enumerate_nondev_subnodes(scope, buf.pointer, &dn->data))
+ /*
+ * The scope for the subnode object lookup is the one of the namespace
+ * node (device) containing the object that has returned the package.
+ * That is, it's the scope of that object's parent.
+ */
+ status = acpi_get_parent(handle, &scope);
+ if (ACPI_SUCCESS(status)
+ && acpi_enumerate_nondev_subnodes(scope, buf.pointer, &dn->data))
dn->handle = handle;

if (dn->handle) {


\
 
 \ /
  Last update: 2015-10-21 01:41    [W:0.028 / U:1.556 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site