> Date: Mon, 20 Dec 2021 15:10:42 +0100
> From: Anton Lindqvist <[email protected]>
>
> On Mon, Dec 20, 2021 at 01:19:54PM +0000, [email protected] wrote:
> > I booted into bsd.rd to grep in /var/log/messages when I last ran
> > sysupgrade:
> >
> > Dec 19 22:11:48 0 sysupgrade: installed new /bsd.upgrade. Old kernel
> > version: OpenBSD 7.0-current (GENERIC.MP) #135: Tue Nov 30 17:39:34 MST
> > 2021
> > [email protected]:/usr/src/sys/arch/amd64/compile/GENERIC.MP
> > Dec 1 20:17:52 0 sysupgrade: installed new /bsd.upgrade. Old kernel
> > version: OpenBSD 7.0-current (GENERIC.MP) #106: Fri Nov 19 10:43:11 MST
> > 2021
> > [email protected]:/usr/src/sys/arch/amd64/compile/GENERIC.MP
> >
> > Below is the error message at boot, typed manually, and double-checked
> > (omitted the file system checks before wd0e which were all clean, and the
> > generic instructions after 'dbb.html describes')
> >
> > --------------------------------------------------------------------------------
> >
> > dev/wd0e (afcec7a171c4b011.e): file system is clean; not checking
> > uvm_fault(0xfffffd807eaa7220, 0x0, 0, 1) -> e
> > kernel: page fault trap, code=0
> > Stopped at comopen+0x710: movq 0(%rax),%r11
> > TID PID UID PRFLAGS PFLAGS CPU COMMAND
> > *189345 37957 0 0x3 0 2K ttyflags
> > comopen(800,5,2000,ffff8000fffeed20) at comopen+0x710
> > spec_open(ffff800042489638) at spec_open+0xd6
> > VOP_OPEN(fffffd806e86f568,5,fffffd807ee7af00,ffff8000fffeed20) at
> > VOP_OPEN+0x53
> > vn_open(ffff800042489850,5,0) at vn_open+0x271
> > doopenat(ffff8000fffeed20,ffffff9c,7f7ffffe2bd0,4,0,ffff800042489a20) at
> > doopenat+0x1cd
> > syscall(ffff800042489a90) at syscall+0x374
> > Xsyscall() at Xsyscall+0x128
> > end of kernel
> > end trace frame: 0x7f7ffffe2bc0, count: 8
> > https://www.openbsd.org/dbb.html describes...
> > ...
> > ddb{2}>
>
> Probably caused by the recent change to attach com over acpi. Looking at
> your disassembled acpi tables, I see two com devices which lacks a
> corresponding _PRS node:
>
>
> Device (UAR1)
> {
> Name (_HID, EisaId ("PNP0501") /* 16550A-compatible COM Serial
> Port */) // _HID: Hardware ID
> Name (_UID, One) // _UID: Unique ID
> }
> Device (UAR2)
> {
> Name (_HID, EisaId ("PNP0501") /* 16550A-compatible COM Serial
> Port */) // _HID: Hardware ID
> Name (_UID, 0x02) // _UID: Unique ID
> }
>
> It think we're better of doing the sanity check during match and not
> attach. This will hopefully cause com to attach over isa as seen in your
> old dmesg.
So ok kettenis@ on that diff
> diff --git sys/dev/acpi/com_acpi.c sys/dev/acpi/com_acpi.c
> index 12e61288181..eeda6a82bef 100644
> --- sys/dev/acpi/com_acpi.c
> +++ sys/dev/acpi/com_acpi.c
> @@ -63,6 +63,8 @@ com_acpi_match(struct device *parent, void *match, void
> *aux)
> struct acpi_attach_args *aaa = aux;
> struct cfdata *cf = match;
>
> + if (aaa->aaa_naddr < 1 || aaa->aaa_nirq < 1)
> + return 0;
> return acpi_matchhids(aaa, com_hids, cf->cf_driver->cd_name);
> }
>
> @@ -77,16 +79,6 @@ com_acpi_attach(struct device *parent, struct device
> *self, void *aux)
> sc->sc_node = aaa->aaa_node;
> printf(" %s", sc->sc_node->name);
>
> - if (aaa->aaa_naddr < 1) {
> - printf(": no registers\n");
> - return;
> - }
> -
> - if (aaa->aaa_nirq < 1) {
> - printf(": no interrupt\n");
> - return;
> - }
> -
> printf(" addr 0x%llx/0x%llx", aaa->aaa_addr[0], aaa->aaa_size[0]);
> printf(" irq %d", aaa->aaa_irq[0]);
>
>
>