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

Reply via email to