On Tue, May 23, 2017 at 07:51:14AM +0200, Cesare Gargano wrote: > Hi, > I made E200HA keyboard and touchpad work configuring node->parent deps. > As Mark says, it's a order problem, we should attach all deps drivers before > attaching the device driver itself. > > Attached diff and a (old) dmesg. > > - > C.
This diff has not caused a problem on any of my machines, and I still have it in my build tree. What happened to it? > diff --git a/.gitignore b/.gitignore > new file mode 100644 > index 00000000000..dbd7620a943 > --- /dev/null > +++ b/.gitignore > @@ -0,0 +1,4 @@ > +obj/ > +~* > +*.o > +*.d > diff --git a/sys/dev/acpi/acpi.c b/sys/dev/acpi/acpi.c > index 09495657aad..092693e192c 100644 > --- a/sys/dev/acpi/acpi.c > +++ b/sys/dev/acpi/acpi.c > @@ -2819,7 +2819,7 @@ acpi_attach_deps(struct acpi_softc *sc, struct aml_node > *node) > if (dep == NULL || dep->attached) > continue; > dep = aml_searchname(dep, "_HID"); > - if (dep) > + if (dep && dep->parent->attached != 2) > acpi_foundhid(dep, sc); > } > > diff --git a/sys/dev/acpi/dwiic.c b/sys/dev/acpi/dwiic.c > index 60bf8d17a22..302b0051229 100644 > --- a/sys/dev/acpi/dwiic.c > +++ b/sys/dev/acpi/dwiic.c > @@ -196,6 +196,8 @@ int dwiic_i2c_exec(void *, i2c_op_t, > i2c_addr_t, const void *, > size_t, void *, size_t, int); > void dwiic_xfer_msg(struct dwiic_softc *); > > +extern void acpi_attach_deps(struct acpi_softc *, struct aml_node *); > + > struct cfattach dwiic_ca = { > sizeof(struct dwiic_softc), > dwiic_match, > @@ -567,11 +569,15 @@ dwiic_acpi_found_hid(struct aml_node *node, void *arg) > aml_freevalue(&res); > return (0); > } > + > memset(&crs, 0, sizeof(crs)); > crs.devnode = sc->sc_devnode; > aml_parse_resource(&res, dwiic_acpi_parse_crs, &crs); > aml_freevalue(&res); > > + node->parent->attached = 2; > + acpi_attach_deps(acpi_softc, node->parent); > + > if (dwiic_matchhids(cdev, ihidev_hids)) > return dwiic_acpi_found_ihidev(sc, node, dev, crs); > else if (dwiic_matchhids(dev, iatp_hids))