> Date: Mon, 27 Jul 2020 17:02:41 +0200 (CEST) > From: Mark Kettenis <mark.kette...@xs4all.nl> > > Recent ACPI versions have deprecated "Processor()" nodes in favout of > "Device()" nodes with a _HID() method that returns "ACPI0007". This > diff tries to support machines with firmware that implements this. If > you see something like: > > "ACPI0007" at acpi0 not configured > > please try the following diff and report back with an updated dmesg. > > Cheers, > > Mark
And now with the right diff... Index: dev/acpi/acpicpu.c =================================================================== RCS file: /cvs/src/sys/dev/acpi/acpicpu.c,v retrieving revision 1.85 diff -u -p -r1.85 acpicpu.c --- dev/acpi/acpicpu.c 27 May 2020 05:02:21 -0000 1.85 +++ dev/acpi/acpicpu.c 27 Jul 2020 14:58:38 -0000 @@ -186,6 +186,11 @@ struct cfdriver acpicpu_cd = { NULL, "acpicpu", DV_DULL }; +const char *acpicpu_hids[] = { + "ACPI0007", + NULL +}; + extern int setperf_prio; struct acpicpu_softc *acpicpu_sc[MAXCPUS]; @@ -650,6 +655,9 @@ acpicpu_match(struct device *parent, voi struct acpi_attach_args *aa = aux; struct cfdata *cf = match; + if (acpi_matchhids(aa, acpicpu_hids, cf->cf_driver->cd_name)) + return (1); + /* sanity */ if (aa->aaa_name == NULL || strcmp(aa->aaa_name, cf->cf_driver->cd_name) != 0 || @@ -665,6 +673,7 @@ acpicpu_attach(struct device *parent, st struct acpicpu_softc *sc = (struct acpicpu_softc *)self; struct acpi_attach_args *aa = aux; struct aml_value res; + int64_t uid; int i; uint32_t status = 0; CPU_INFO_ITERATOR cii; @@ -675,6 +684,10 @@ acpicpu_attach(struct device *parent, st acpicpu_sc[sc->sc_dev.dv_unit] = sc; SLIST_INIT(&sc->sc_cstates); + + if (aml_evalinteger(sc->sc_acpi, sc->sc_devnode, + "_UID", 0, NULL, &uid) == 0) + sc->sc_cpu = uid; if (aml_evalnode(sc->sc_acpi, sc->sc_devnode, 0, NULL, &res) == 0) { if (res.type == AML_OBJTYPE_PROCESSOR) {