ACPI _DSD properties late reference binding

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hello -

I am looking into exporting acpi _DSD properties to sysfs by updating
acpi_device_setup_files() in drivers/acpi/scan.c.  I need some advice.

One problem area are device references that have not been created yet.
For a tiny example, consider a device "X126" that refers to another
device "QS24" that is not yet created:

Device (X126) {
  Name (_HID, "PRP0001")
  Name (_DSD,
  Package () {
    ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"),
    Package () {
      Package () { "compatible", "some device X" },
      Package () { "peer", Package() { \QS24, 2 } },
    }
  }
}

Device (QS24) {
  Name (_HID, "PRP0001")
  Name (_DSD,
  Package () {
    ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"),
    Package () {
      Package () { "compatible", "some other device QS" },
    }
  }
}

The asl compiles fine, the compiler works out the references,
presumably using two passes.

Note: the fix is *not* to rewrite the asl to define QS24 before trying
to reference it from X126.  This is an instance of a more general
problem where QS24 could be a hotplug device that arrives much later
in time.

With an older kernel, when calling
__acpi_node_get_property_reference() to find properties for X126 it
would return -ENODEV when processing the "peer" property, which would
signal me that the "QS24" was not yet ready.  I would add that ref to
a deffered list and process it later during acpi_bus_scan().  That
approach worked fine.

However, these commits changed the return codes
__acpi_node_get_property_reference(), nullifying the deferral check:

51858a277 ACPI: properties: Fix __acpi_node_get_property_reference() return codes
c343bc2ce ACPI: properties: Align return codes of __acpi_node_get_property_reference()

Having most errors come back as -EINVAL is not granular enough for my
use case.

My question is there a better way to do this?  I could roll my own,
but it would need to duplicate about 80% of
__acpi_node_get_property_reference(), which would be dumb.

Any advice is greatly appreciated.

Cheers,
Curt
--
To unsubscribe from this list: send the line "unsubscribe linux-acpi" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Linux IBM ACPI]     [Linux Power Management]     [Linux Kernel]     [Linux Laptop]     [Kernel Newbies]     [Share Photos]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Video 4 Linux]     [Device Mapper]     [Linux Resources]

  Powered by Linux