> From: Claudio Miranda <quadsi...@gmail.com> > Date: Wed, 19 Oct 2022 12:07:50 -0400 > > Greetings, > > I'm getting a kernel panic on a Dell Precision T1600 with BIOS A21 > which is the latest revision from Dell for this system. This all > started as of the #793 snapshot of -current on Monday, October 17 at > 10:16:43 MDT. I've attached pictures of the kernel panic on boot as > well as the panic info, trace info, and dmesg info. Prior to this > snapshot, the system was booting OpenBSD without issue. Unfortunately, > I'm only able to provide pictures of the information needed. Any help > is greatly appreciated. > > Thanks, > > Claudio
Wow: efi0 at bios0: UEFI 2.0 that is ancient. I also found https://docs.oracle.com/cd/E26502_01/html/E28978/hardw.html so clearly the UEFI BIOS has bugs. Using UEFI instead of the legacy BIOS on a machine that old may not be the wisest choice. But I think we can just avoid using UEFI in the kernel in this case. Diff below should fix it. ok? Index: arch/amd64/amd64/efi_machdep.c =================================================================== RCS file: /cvs/src/sys/arch/amd64/amd64/efi_machdep.c,v retrieving revision 1.1 diff -u -p -r1.1 efi_machdep.c --- arch/amd64/amd64/efi_machdep.c 16 Oct 2022 15:03:39 -0000 1.1 +++ arch/amd64/amd64/efi_machdep.c 19 Oct 2022 17:18:19 -0000 @@ -112,6 +112,10 @@ efi_attach(struct device *parent, struct printf(".%d", minor % 10); printf("\n"); + /* Early implementations can be buggy. */ + if (major < 2 || (major == 2 && minor < 10)) + return; + if ((bios_efiinfo->flags & BEI_64BIT) == 0) return; Index: arch/arm64/dev/efi_machdep.c =================================================================== RCS file: /cvs/src/sys/arch/arm64/dev/efi_machdep.c,v retrieving revision 1.2 diff -u -p -r1.2 efi_machdep.c --- arch/arm64/dev/efi_machdep.c 12 Oct 2022 13:39:50 -0000 1.2 +++ arch/arm64/dev/efi_machdep.c 19 Oct 2022 17:18:19 -0000 @@ -118,6 +118,10 @@ efi_attach(struct device *parent, struct printf(".%d", minor % 10); printf("\n"); + /* Early implementations can be buggy. */ + if (major < 2 || (major == 2 && minor < 10)) + return; + efi_map_runtime(sc); /*