Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 21 Nov 2022 09:39:31 +0000
From:      bugzilla-noreply@freebsd.org
To:        bugs@FreeBSD.org
Subject:   [Bug 266480] Panic "sleeping thread" with qlnxe driver
Message-ID:  <bug-266480-227-T2XuKF9ziW@https.bugs.freebsd.org/bugzilla/>
In-Reply-To: <bug-266480-227@https.bugs.freebsd.org/bugzilla/>
References:  <bug-266480-227@https.bugs.freebsd.org/bugzilla/>

next in thread | previous in thread | raw e-mail | index | archive | help
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=3D266480

--- Comment #1 from Zhenlei Huang <zlei.huang@gmail.com> ---
>From the stack dump:
> Sleeping thread (tid 100919, pid 62482) owns a non-sleepable lock
> KDB: stack backtrace of thread 100919:
> sched_switch() at sched_switch+0x630/frame 0xfffffe00c741ddf0
> mi_switch() at mi_switch+0xd4/frame 0xfffffe00c741de20
> sleepq_timedwait() at sleepq_timedwait+0x2f/frame 0xfffffe00c741de60
> _sleep() at _sleep+0x1c8/frame 0xfffffe00c741dee0
> pause_sbt() at pause_sbt+0xf1/frame 0xfffffe00c741df10
> qlnx_stop() at qlnx_stop+0x4b5/frame 0xfffffe00c741dfa0
> qlnx_init_locked() at qlnx_init_locked+0x2a/frame 0xfffffe00c741e070
> qlnx_ioctl() at qlnx_ioctl+0x53a/frame 0xfffffe00c741e0d0
> ifhwioctl() at ifhwioctl+0x596/frame 0xfffffe00c741e150
> ifioctl() at ifioctl+0x4bc/frame 0xfffffe00c741e210
> kern_ioctl() at kern_ioctl+0x2b7/frame 0xfffffe00c741e270
> sys_ioctl() at sys_ioctl+0x101/frame 0xfffffe00c741e340
> amd64_syscall() at amd64_syscall+0x387/frame 0xfffffe00c741e470
> fast_syscall_common() at fast_syscall_common+0xf8/frame 0xfffffe00c741e470
> --- syscall (54, FreeBSD ELF64, sys_ioctl), rip =3D 0x800b54d4a, rsp =3D =
0x7fffffffd198, > rbp =3D 0x7fffffffd210 ---
> panic: sleeping thread
> cpuid =3D 3
> time =3D 1663318115
> KDB: enter: panic

`qlnx_stop()` tried to sleep while is under mutex locked. That is prohibit
since mutex is not sleepable lock.

See mutext(9):
> Sleeping
>     Sleeping while holding a mutex (except for Giant) is never safe and
>     should be avoided.  There are numerous assertions which will fail if =
this
>     is attempted.

The driver calls `qlnx_mdelay()`, cold boot and hot boot differs.
> #define qlnx_mdelay(fn, msecs)  \
>        {\
>                if (cold) \
>                        DELAY((msecs * 1000)); \
>                else  \
>                        pause(fn, qlnx_ms_to_hz(msecs)); \
>        }

I guess this happens when your box is hot rebooted.

Can you please try cold reboot (shutdown -p and then startup) your box and =
try
again?

--=20
You are receiving this mail because:
You are the assignee for the bug.=



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?bug-266480-227-T2XuKF9ziW>