svn commit: r339634 - in head/sys: kern net

Peter Holm pho at freebsd.org
Tue Oct 23 09:43:46 UTC 2018


On Tue, Oct 23, 2018 at 04:37:29AM +0000, Eric Joyner wrote:
> Author: erj
> Date: Tue Oct 23 04:37:29 2018
> New Revision: 339634
> URL: https://svnweb.freebsd.org/changeset/base/339634
> 
> Log:
>   iflib: drain enqueued tasks before detaching from taskqgroup
>   
>   The taskqgroup_detach function does not check if task is already enqueued when
>   detaching it. This may lead to kernel panic if enqueued task starts after
>   context state lock is destroyed. Ensure that the already enqueued admin tasks
>   are executed before detaching them.
>   
>   The issue was discovered during validation of D16429. Unloading of if_ixlv
>   followed by immediate removal of VFs with iovctl -D may lead to panic on
>   NODEBUG kernel.
>   
>   As well, check if iflib is in detach before enqueueing new admin or iov
>   tasks, to prevent new tasks from executing while the taskqgroup tasks
>   are being drained.
>   
>   Submitted by:	Krzysztof Galazka <krzysztof.galazka at intel.com>
>   Reviewed by:	shurd@, erj@
>   Sponsored by:	Intel Corporation
>   Differential Revision:	https://reviews.freebsd.org/D17404
> 
> Modified:
>   head/sys/kern/subr_gtaskqueue.c
>   head/sys/net/iflib.c
> 
> Modified: head/sys/kern/subr_gtaskqueue.c
> ==============================================================================
> --- head/sys/kern/subr_gtaskqueue.c	Tue Oct 23 03:30:14 2018	(r339633)

This commit seems to trigger:

panic: mtx_lock() by idle thread 0xfffff808400e5000 on sleep mutex igb0 @ ../../../net/iflib.c:2084
cpuid = 6
time = 1540287664
KDB: stack backtrace:
db_trace_self_wrapper() at db_trace_self_wrapper+0x2b/frame 0xfffffe0078778620
vpanic() at vpanic+0x1a3/frame 0xfffffe0078778680
panic() at panic+0x43/frame 0xfffffe00787786e0
__mtx_lock_flags() at __mtx_lock_flags+0x15a/frame 0xfffffe0078778730
iflib_admin_intr_deferred() at iflib_admin_intr_deferred+0x2a/frame 0xfffffe0078778760
em_msix_link() at em_msix_link+0x84/frame 0xfffffe0078778790
iflib_fast_intr_ctx() at iflib_fast_intr_ctx+0x21/frame 0xfffffe00787787b0
intr_event_handle() at intr_event_handle+0xbb/frame 0xfffffe0078778800
intr_execute_handlers() at intr_execute_handlers+0x58/frame 0xfffffe0078778830
lapic_handle_intr() at lapic_handle_intr+0x5f/frame 0xfffffe0078778850
Xapic_isr1() at Xapic_isr1+0xd9/frame 0xfffffe0078778850
--- interrupt, rip = 0xffffffff80489d11, rsp = 0xfffffe0078778920, rbp = 0xfffffe0078778960 ---
acpi_cpu_idle() at acpi_cpu_idle+0x2a1/frame 0xfffffe0078778960
cpu_idle_acpi() at cpu_idle_acpi+0x3f/frame 0xfffffe0078778980
cpu_idle() at cpu_idle+0xa7/frame 0xfffffe00787789a0
sched_idletd() at sched_idletd+0x517/frame 0xfffffe0078778a70
fork_exit() at fork_exit+0x84/frame 0xfffffe0078778ab0
fork_trampoline() at fork_trampoline+0xe/frame 0xfffffe0078778ab0
--- trap 0, rip = 0, rsp = 0, rbp = 0 ---
KDB: enter: panic
[ thread pid 11 tid 100009 ]
Stopped at      kdb_enter+0x3b: movq    $0,kdb_why
db> x/s version
version:        FreeBSD 13.0-CURRENT r339634 PHO-GENERIC\012
db> 

- Peter


More information about the svn-src-all mailing list