On Mon, Dec 20, 2021 at 01:19:54PM +0000, cipher-hea...@riseup.net 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     
> dera...@amd64.openbsd.org:/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     
> dera...@amd64.openbsd.org:/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.

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]);
 

Reply via email to