> Date: Thu, 2 Sep 2021 09:31:49 +0200 > From: Martin Pieuchot <[email protected]> > > Seen with WITNESS, this has already been fixed in amd64, diff below > backport the fix, ok? > > ioapic0 at mainbus0: apid 2 pa 0xfec00000witness: lock_object uninitialized: > 0xd8841440 > Starting stack trace... > witness_checkorder(f5547000,fec01000,fec00000,d1820adc,d03fb01e) at > witness_checkorder+0x85 [/home/os/openbsd/sys/kern/subr_witness.c:2497] > witness_checkorder(d8841440,9,0) at witness_checkorder+0x85 > [/home/os/openbsd/sys/kern/subr_witness.c:2497] > mtx_enter(d8841434) at mtx_enter+0x1c > [/home/os/openbsd/sys/kern/kern_lock.c:262] > ioapic_attach(d884a040,d8841400,d1820b84) at ioapic_attach+0xe0 > [/home/os/openbsd/sys/arch/i386/i386/ioapic.c:125] > config_attach(d884a040,d0e31314,d1820b84,d068f190) at config_attach+0x18a > [/home/os/openbsd/sys/kern/subr_autoconf.c:403] > config_found_sm(d884a040,d1820b84,d068f190,0) at config_found_sm+0x29 > [/home/os/openbsd/sys/kern/subr_autoconf.c:313] > acpimadt_attach(d8840400,d88bc2c0,d1820c78) at acpimadt_attach+0x34c > [/home/os/openbsd/sys/dev/acpi/acpimadt.c:0] > config_attach(d8840400,d0e32574,d1820c78,d07ddd90) at config_attach+0x18a > [/home/os/openbsd/sys/kern/subr_autoconf.c:403] > config_found_sm(d8840400,d1820c78,d07ddd90,d07e0280) at config_found_sm+0x29 > [/home/os/openbsd/sys/kern/subr_autoconf.c:313] > acpi_attach_common(d8840400,f0120) at acpi_attach_common+0x585 > [/home/os/openbsd/sys/dev/acpi/acpi.c:1207] > acpi_attach(d884a080,d8840400,d1820dd0) at acpi_attach+0x2c > [/home/os/openbsd/sys/arch/i386/i386/acpi_machdep.c:112] > config_attach(d884a080,d0e32734,d1820dd0,d09d73d0) at config_attach+0x18a > [/home/os/openbsd/sys/kern/subr_autoconf.c:403] > config_found_sm(d884a080,d1820dd0,d09d73d0,0) at config_found_sm+0x29 > [/home/os/openbsd/sys/kern/subr_autoconf.c:313] > biosattach(d884a040,d884a080,d1820ec0) at biosattach+0x181 > [/home/os/openbsd/sys/arch/i386/i386/bios.c:392] > config_attach(d884a040,d0e31274,d1820ec0,d04d3db0) at config_attach+0x18a > [/home/os/openbsd/sys/kern/subr_autoconf.c:403] > config_found_sm(d884a040,d1820ec0,d04d3db0,0) at config_found_sm+0x29 > [/home/os/openbsd/sys/kern/subr_autoconf.c:313] > mainbus_attach(0,d884a040,0) at mainbus_attach+0x54 > [/home/os/openbsd/sys/arch/i386/i386/mainbus.c:157] > config_attach(0,d0e2ec34,0,0) at config_attach+0x18a > [/home/os/openbsd/sys/kern/subr_autoconf.c:403] > config_rootfound(d0c28d4d,0) at config_rootfound+0xaf > [/home/os/openbsd/sys/kern/subr_autoconf.c:328] > cpu_configure(3327f5e4,181e000,182d000,1821000,0) at cpu_configure+0x4c > [/home/os/openbsd/sys/arch/i386/i386/autoconf.c:156] > main(0,0,0,0,0) at main+0x342 [/home/os/openbsd/sys/kern/init_main.c:377] > End of stack trace.
ok kettenis@ > Index: i386/ioapic.c > =================================================================== > RCS file: /cvs/src/sys/arch/i386/i386/ioapic.c,v > retrieving revision 1.41 > diff -u -p -r1.41 ioapic.c > --- i386/ioapic.c 25 Aug 2018 16:09:29 -0000 1.41 > +++ i386/ioapic.c 2 Sep 2021 07:27:16 -0000 > @@ -309,6 +309,10 @@ ioapic_attach(struct device *parent, str > sc->sc_reg = (volatile u_int32_t *)(bh + IOAPIC_REG); > sc->sc_data = (volatile u_int32_t *)(bh + IOAPIC_DATA); > > +#ifdef MULTIPROCESSOR > + mtx_init(&sc->sc_pic.pic_mutex, IPL_NONE); > +#endif > + > ver_sz = ioapic_read(sc, IOAPIC_VER); > sc->sc_apic_vers = (ver_sz & IOAPIC_VER_MASK) >> IOAPIC_VER_SHIFT; > sc->sc_apic_sz = (ver_sz & IOAPIC_MAX_MASK) >> IOAPIC_MAX_SHIFT; > >
