The diff below fixes an issue with the way we attach "APCI devices".
As with all ACPI diffs, this may potentially introduce regressions, so
some wider testing would be welcome.

The fix itself involves resolving a "nameref" in the package that
describes dependencies between APCI devices.  These namerefs need to
be evaluated lazily (for reasons) but this wasn't done in this case.


Index: dev/acpi/acpi.c
===================================================================
RCS file: /cvs/src/sys/dev/acpi/acpi.c,v
retrieving revision 1.419
diff -u -p -r1.419 acpi.c
--- dev/acpi/acpi.c     10 Feb 2023 14:34:16 -0000      1.419
+++ dev/acpi/acpi.c     9 Mar 2023 10:49:28 -0000
@@ -2963,6 +2963,12 @@ acpi_attach_deps(struct acpi_softc *sc, 
 
        for (i = 0; i < res.length; i++) {
                val = res.v_package[i];
+               if (val->type == AML_OBJTYPE_NAMEREF) {
+                       node = aml_searchrel(node,
+                           aml_getname(val->v_nameref));
+                       if (node)
+                               val = node->value;
+               }
                if (val->type == AML_OBJTYPE_OBJREF)
                        val = val->v_objref.ref;
                if (val->type != AML_OBJTYPE_DEVICE)

Reply via email to