On Wed, Dec 19, 2018 at 10:28:44PM +0100, Klemens Nanni wrote: > The amd64 snapshot > > OpenBSD 6.4-current (GENERIC) #492: Fri Dec 14 08:09:00 MST 2018 > > with a self-built, stock GENERIC.MP with debug options running inside > vmm(4) on my X230 shows a lock order reversal immediately after booting > (see dmesg at the end). > > Steps to reproduce: > > 1. Apply the attached diff on a clean sys/ > 2. build the kernel > 3. install a snapshot > > $ vmctl create vm/test.qcow2 -s 10G > $ vmctl start pf -c -t rd -L -i 1 -d vm/test.qcow2 > [bsd.rd, all defaults] > > 4. boot new VM with debug kernel > > $ vmctl start pf -c -t rd -d vm/test.qcow2 -b bsd.debug > > Sometimes it happens before the login prompt appears, sometimes I need > to login and issue some command - `pfctl -sr' often works. > > I can only ever trigger this once right upon boot, not later again > during runtime. > > I don't have time to look into this right now (chasing pf bugs already).
Nor does anyone else, considering this was reported at least half a dozen times. A quick perusal of the list would have saved you a lot of time. The 8254 legacy clock isn't MP safe, and there is no desire to make it so. -ml > > GENERIC.MP diff for debug options and dmesg of the VM including the lock > order reversal below. > > Index: arch/amd64/conf/GENERIC.MP > =================================================================== > RCS file: /cvs/src/sys/arch/amd64/conf/GENERIC.MP,v > retrieving revision 1.14 > diff -u -p -r1.14 GENERIC.MP > --- arch/amd64/conf/GENERIC.MP 13 Jul 2018 05:25:24 -0000 1.14 > +++ arch/amd64/conf/GENERIC.MP 19 Dec 2018 00:49:12 -0000 > @@ -3,7 +3,9 @@ > include "arch/amd64/conf/GENERIC" > > option MULTIPROCESSOR > -#option MP_LOCKDEBUG > -#option WITNESS > +option MP_LOCKDEBUG > +option WITNESS > +option PFDEBUG > +option DEBUG > > cpu* at mainbus? > > > OpenBSD 6.4-current (GENERIC.MP) #10: Wed Dec 19 21:37:52 CET 2018 > [email protected]:/usr/src/sys/arch/amd64/compile/GENERIC.MP > real mem = 117440512 (112MB) > avail mem = 96862208 (92MB) > mtimeout delayed -1 > path0 at root > scsibus0 at mpath0: 256 targets > mainbus0 at root > bios0 at mainbus0 > acpi at bios0 not configured > cpu0 timeout delayed -2 > at mainbus0: (uniprocessor) > cpu0: Intel(R) Core(TM) i5-3320M CPU @ 2.60GHz, 2595.52 MHz, 06-3a-09 > cpu0: > FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,SEP,PGE,MCA,CMOV,PAT,PSE36,CFLUSH,MMX,FXSR,SSE,SSE2,SSE3,PCLMUL,SSSE3,CX16,SSE4.1,SSE4.2,POPCNT,AES,XSAVE,AVX,F16C,RDRAND,HV,NXE,LONG,LAHF,ITSC,FSGSBASE,SMEP,ERMS,MELTDOWN > cpu0: 256KB 64b/line 8-way L2 cache > cpu0: smt 0, core 0, pkg 0 (apicid 0x0, max_apicid 0x0, max_coreid 0x1, > smt_bits 0x20, smt_mask 0x0, core_bits 0x0, core_mask 0x0, pkg_bits 0x20, > pkg_mask 0xffffffff) > pvbus0 at mainbus0: OpenBSD > pci0 at mainbus0 bus 0 > pchb0 at pci0 dev 0 function 0 "OpenBSD VMM Host" rev 0x00 > virtio0 at pci0 dev 1 function 0 "Qumranet Virtio RNG" rev 0x00 > viornd0 at virtio0 > virtio0: irq 3 > virtio1 at pci0 dev 2 function 0 "Qumranet Virtio Storage" rev 0x00 > vioblk0 at virtio1 > scsibus1 at vioblk0: 2 targets > sd0 at scsibus1 targ 0 lun 0: <VirtIO, Block Device, > SCSI3 0/direct fixed > sd0: 10240MB, 512 bytes/sector, 20971520 sectors > virtio1: irq 5 > virtio2 at pci0 dev 3 function 0 "OpenBSD VMM Control" rev 0x00 > vmmci0 at virtio2 > virtio2: irq 6 > isa0 at mainbus0 > isadma0 at isa0 > com0 at isa0 port 0x3f8/8 irq 4: ns16450, no fifo > com0: console > lpt_isa_probe: mask ff data 55 failed > Timecounters tick every 10.000 msec > timeout delayed -2147333648 > timeout delayed -2147393647 > timeout delayed -2147393647 > timeout delayed -2147393647 > vscsi0 at root > scsibus2 at vscsi0: 256 targets > softraid0 at root > scsibus3 at softraid0: 256 targets > dev=0x402 chrdev=0xd02 rawdev=0xd02 > root on sd0a (95dcfec90818276d.a) swap on sd0b dump on sd0b > dev=0x400 chrdev=0xd00 rawdev=0xd02 > init: copying out path `/sbin/init' 11 > timeout delayed -1 > lock order reversal: > 1st 0xffffffff81cb7a68 /usr/src/sys/kern/kern_timeout.c:92 > (/usr/src/sys/kern/kern_timeout.c:92) @ /usr/src/sys/kern/kern_timeout.c:414 > 2nd 0xffffffff81dea490 &sched_lock (&sched_lock) @ > /usr/src/sys/kern/kern_synch.c:444 > lock order "&sched_lock"(sched_lock) -> > "/usr/src/sys/kern/kern_timeout.c:92"(mutex) first seen at: > #0 witness_checkorder+0x4c0 > #1 _mtx_enter+0x32 > #2 timeout_add+0x49 > #3 tsleep+0xb1 > #4 setroot+0xf4 > #5 diskconf+0x193 > #6 main+0x5f6 > lock order "/usr/src/sys/kern/kern_timeout.c:92"(mutex) -> > "&sched_lock"(sched_lock) first seen at: > #0 witness_checkorder+0x4c0 > #1 ___mp_lock+0x72 > #2 wakeup_n+0x39 > #3 knote+0xe2 > #4 selwakeup+0x2b > #5 logwakeup+0x28 > #6 printf+0xb0 > #7 softclock+0xcf > #8 softintr_dispatch+0x118 > #9 Xsoftclock+0x1f > #10 uvm_anfree+0x54 > #11 amap_wipeout+0xe5 > #12 uvm_unmap_detach+0x90 > #13 uvm_map_teardown+0x1d2 > #14 uvmspace_free+0x4f > #15 uvm_exit+0x22 > #16 reaper+0x156 > timeout delayed -2 > timeout delayed -1 > timeout delayed -1 > timeout delayed -1 > timeout delayed -1 > timeout delayed -1 > timeout delayed -1 > timeout delayed -1 > timeout delayed -2 > timeout delayed -1 > timeout delayed -2 > timeout delayed -1 > timeout delayed -1 > timeout delayed -2 >
