Date: Sun, 13 Nov 2016 23:56:09 +0200 From: Andriy Gapon <avg@FreeBSD.org> To: FreeBSD Current <freebsd-current@FreeBSD.org>, FreeBSD Hackers <freebsd-hackers@FreeBSD.org> Subject: Re: firewire panic Message-ID: <f64e4840-7b80-1ead-e4d1-f64f378775a6@FreeBSD.org> In-Reply-To: <91a1440d-14c7-2cc6-6cbb-2b62bfd2c27d@FreeBSD.org> References: <91a1440d-14c7-2cc6-6cbb-2b62bfd2c27d@FreeBSD.org>
next in thread | previous in thread | raw e-mail | index | archive | help
On 11/11/2016 14:25, Andriy Gapon wrote: > panic: mutex sbp not owned at /usr/src/sys/dev/firewire/sbp.c:967 > cpuid = 2 > curthread: 0xfffff8000ada5000 > stack: 0xfffffe0504ded000 - 0xfffffe0504df1000 > stack pointer: 0xfffffe0504df0a00 > KDB: stack backtrace: > db_trace_self_wrapper() at 0xffffffff80420bbb = db_trace_self_wrapper+0x2b/frame > 0xfffffe0504df0930 > kdb_backtrace() at 0xffffffff80670359 = kdb_backtrace+0x39/frame 0xfffffe0504df09e0 > vpanic() at 0xffffffff8063986c = vpanic+0x14c/frame 0xfffffe0504df0a20 > panic() at 0xffffffff806395b3 = panic+0x43/frame 0xfffffe0504df0a80 > __mtx_assert() at 0xffffffff8061c40d = __mtx_assert+0xed/frame 0xfffffe0504df0ac0 > sbp_cam_scan_lun() at 0xffffffff80474667 = sbp_cam_scan_lun+0x37/frame > 0xfffffe0504df0af0 > xpt_done_process() at 0xffffffff802aacfa = xpt_done_process+0x2da/frame > 0xfffffe0504df0b30 > xpt_done_td() at 0xffffffff802ac2e5 = xpt_done_td+0xd5/frame 0xfffffe0504df0b80 So, it's pretty obvious that the sbp mutex can not be held when sbp_cam_scan_lun() is called. After removing the assertion, just to move further, I do not get any panics and can access the disk. But I see many witness warnings. Some examples: bus_dma_tag_create with the following non-sleepable locks held: exclusive sleep mutex sbp (sbp) r = 0 (0xfffff8000ff04f48) locked @ /usr/src/sys/modules/firewire/sbp/../../../dev/firewire/sbp.c:802 stack backtrace: #0 0xffffffff80ab20a0 at witness_debugger+0x70 #1 0xffffffff80ab3387 at witness_warn+0x3d7 #2 0xffffffff810174dd at bus_dma_tag_create+0x3d #3 0xffffffff83703402 at fwdma_malloc+0x82 #4 0xffffffff836ed759 at sbp_post_explore+0x849 #5 0xffffffff836f9e76 at fw_bus_probe_thread+0x906 #6 0xffffffff80a164c4 at fork_exit+0x84 #7 0xffffffff80ea970e at fork_trampoline+0xe bus_dmamem_alloc with the following non-sleepable locks held: exclusive sleep mutex sbp (sbp) r = 0 (0xfffff8000ff04f48) locked @ /usr/src/sys/modules/firewire/sbp/../../../dev/firewire/sbp.c:802 stack backtrace: #0 0xffffffff80ab20a0 at witness_debugger+0x70 #1 0xffffffff80ab3387 at witness_warn+0x3d7 #2 0xffffffff810175c3 at bus_dmamem_alloc+0x33 #3 0xffffffff83703424 at fwdma_malloc+0xa4 #4 0xffffffff836ed759 at sbp_post_explore+0x849 #5 0xffffffff836f9e76 at fw_bus_probe_thread+0x906 #6 0xffffffff80a164c4 at fork_exit+0x84 #7 0xffffffff80ea970e at fork_trampoline+0xe bus_dmamap_create with the following non-sleepable locks held: exclusive sleep mutex sbp (sbp) r = 0 (0xfffff8000ff04f48) locked @ /usr/src/sys/modules/firewire/sbp/../../../dev/firewire/sbp.c:802 stack backtrace: #0 0xffffffff80ab20a0 at witness_debugger+0x70 #1 0xffffffff80ab3387 at witness_warn+0x3d7 #2 0xffffffff8101755f at bus_dmamap_create+0x2f #3 0xffffffff836ed7d2 at sbp_post_explore+0x8c2 #4 0xffffffff836f9e76 at fw_bus_probe_thread+0x906 #5 0xffffffff80a164c4 at fork_exit+0x84 #6 0xffffffff80ea970e at fork_trampoline+0xe lock order reversal: 1st 0xfffff8000ff04f48 sbp (sbp) @ /usr/src/sys/kern/kern_mutex.c:220 2nd 0xfffffe0001b94870 firewire (firewire) @ /usr/src/sys/modules/firewire/firewire/../../../dev/firewire/firewire.c:302 stack backtrace: #0 0xffffffff80ab20a0 at witness_debugger+0x70 #1 0xffffffff80ab1f94 at witness_checkorder+0xe54 #2 0xffffffff80a33854 at __mtx_lock_flags+0xa4 #3 0xffffffff836f6423 at fw_asyreq+0x2d3 #4 0xffffffff80a68f2c at softclock_call_cc+0x19c #5 0xffffffff80a69327 at softclock+0x47 #6 0xffffffff80a18d76 at intr_event_execute_handlers+0x96 #7 0xffffffff80a193f6 at ithread_loop+0xa6 #8 0xffffffff80a164c4 at fork_exit+0x84 #9 0xffffffff80ea970e at fork_trampoline+0xe lock order reversal: 1st 0xfffff8000ff04f48 sbp (sbp) @ /usr/src/sys/kern/kern_mutex.c:220 2nd 0xfffff8000a0b4460 CAM device lock (CAM device lock) @ /usr/src/sys/cam/scsi/scsi_xpt.c:2349 stack backtrace: #0 0xffffffff80ab20a0 at witness_debugger+0x70 #1 0xffffffff80ab1f94 at witness_checkorder+0xe54 #2 0xffffffff80a33854 at __mtx_lock_flags+0xa4 #3 0xffffffff8031af12 at scsi_scan_lun+0x122 #4 0xffffffff836eef40 at sbp_cam_scan_target+0x100 #5 0xffffffff80a68f2c at softclock_call_cc+0x19c #6 0xffffffff80a69327 at softclock+0x47 #7 0xffffffff80a18d76 at intr_event_execute_handlers+0x96 #8 0xffffffff80a193f6 at ithread_loop+0xa6 #9 0xffffffff80a164c4 at fork_exit+0x84 #10 0xffffffff80ea970e at fork_trampoline+0xe -- Andriy Gapon
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?f64e4840-7b80-1ead-e4d1-f64f378775a6>