This makes acpi_loadtables() ensure that rsdp->rsdp_rsdt exists before attempting to to use it.
ok? Index: acpi.c =================================================================== RCS file: /cvs/src/sys/dev/acpi/acpi.c,v retrieving revision 1.365 diff -u -p -r1.365 acpi.c --- acpi.c 11 May 2019 14:59:52 -0000 1.365 +++ acpi.c 12 May 2019 01:36:26 -0000 @@ -1363,7 +1363,7 @@ acpi_loadtables(struct acpi_softc *sc, s NULL, 1); free(sdt, M_DEVBUF, sizeof(*sdt) + len); - } else { + } else if (rsdp->rsdp_rsdt) { struct acpi_rsdt *rsdt; sdt = acpi_maptable(sc, rsdp->rsdp_rsdt, NULL, NULL, NULL, 0); @@ -1382,6 +1382,9 @@ acpi_loadtables(struct acpi_softc *sc, s NULL, 1); free(sdt, M_DEVBUF, sizeof(*sdt) + len); + } else { + printf("couldn't find xsdt or rsdt\n"); + return (ENOMEM); } return (0);