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

Andrey V. Elsukov bu7cher at yandex.ru
Tue Oct 23 09:23:24 UTC 2018


On 23.10.2018 07:37, 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

Hi,

with this revision my system panics at boot. Reverting only this
revision helps.

% pciconf -l | grep ^em
em0 at pci0:0:25:0:	class=0x020000 card=0x20088086 chip=0x15028086 rev=0x04
hdr=0x00

<6>lo0: link state changed to UP
panic: mtx_lock() by idle thread 0xfffff800035eb000 on sleep mutex em0 @
/home/devel/freebsd/base/head/sys/net/iflib.c:2084
cpuid = 2
time = 1540283649
KDB: stack backtrace:
db_trace_self_wrapper() at db_trace_self_wrapper+0x2b/frame
0xfffffe0077964610
vpanic() at vpanic+0x1a3/frame 0xfffffe0077964670
panic() at panic+0x43/frame 0xfffffe00779646d0
__mtx_lock_flags() at __mtx_lock_flags+0x15a/frame 0xfffffe0077964720
iflib_admin_intr_deferred() at iflib_admin_intr_deferred+0x2a/frame
0xfffffe0077964750
em_intr() at em_intr+0x72/frame 0xfffffe0077964780
iflib_fast_intr_ctx() at iflib_fast_intr_ctx+0x21/frame 0xfffffe00779647a0
intr_event_handle() at intr_event_handle+0xbb/frame 0xfffffe00779647f0
intr_execute_handlers() at intr_execute_handlers+0x58/frame
0xfffffe0077964820
lapic_handle_intr() at lapic_handle_intr+0x5f/frame 0xfffffe0077964840
Xapic_isr1() at Xapic_isr1+0xd9/frame 0xfffffe0077964840
--- interrupt, rip = 0xffffffff811dfab6, rsp = 0xfffffe0077964910, rbp =
0xfffffe0077964910 ---
acpi_cpu_c1() at acpi_cpu_c1+0x6/frame 0xfffffe0077964910
acpi_cpu_idle() at acpi_cpu_idle+0x23d/frame 0xfffffe0077964960
cpu_idle_acpi() at cpu_idle_acpi+0x3f/frame 0xfffffe0077964980
cpu_idle() at cpu_idle+0xa7/frame 0xfffffe00779649a0
sched_idletd() at sched_idletd+0x517/frame 0xfffffe0077964a70
fork_exit() at fork_exit+0x84/frame 0xfffffe0077964ab0
fork_trampoline() at fork_trampoline+0xe/frame 0xfffffe0077964ab0
--- trap 0, rip = 0, rsp = 0, rbp = 0 ---
KDB: enter: panic

__curthread () at ./machine/pcpu.h:230
230             __asm("movq %%gs:%P1,%0" : "=r" (td) : "n"
(OFFSETOF_CURTHREAD));
(kgdb) #0  __curthread () at ./machine/pcpu.h:230
#1  doadump (textdump=1)
    at /home/devel/freebsd/base/head/sys/kern/kern_shutdown.c:366
#2  0xffffffff8046586c in db_fncall_generic (addr=<optimized out>,
    rv=<optimized out>, nargs=<optimized out>, args=<optimized out>)
    at /home/devel/freebsd/base/head/sys/ddb/db_command.c:609
#3  db_fncall (dummy1=<optimized out>, dummy2=<optimized out>,
    dummy3=<optimized out>, dummy4=<optimized out>)
    at /home/devel/freebsd/base/head/sys/ddb/db_command.c:657
#4  0xffffffff804653a9 in db_command (last_cmdp=<optimized out>,
    cmd_table=<optimized out>, dopager=<optimized out>)
    at /home/devel/freebsd/base/head/sys/ddb/db_command.c:481
#5  0xffffffff80465124 in db_command_loop ()
    at /home/devel/freebsd/base/head/sys/ddb/db_command.c:534
#6  0xffffffff8046833f in db_trap (type=<optimized out>, code=<optimized
out>)
    at /home/devel/freebsd/base/head/sys/ddb/db_main.c:252
#7  0xffffffff80be69a7 in kdb_trap (type=3, code=0, tf=0xfffffe0077964540)
    at /home/devel/freebsd/base/head/sys/kern/subr_kdb.c:693
#8  0xffffffff81073be6 in trap (frame=0xfffffe0077964540)
    at /home/devel/freebsd/base/head/sys/amd64/amd64/trap.c:619
#9  <signal handler called>
#10 kdb_enter (why=0xffffffff81309de7 "panic", msg=<optimized out>)
    at /home/devel/freebsd/base/head/sys/kern/subr_kdb.c:479
#11 0xffffffff80b9e670 in vpanic (fmt=<optimized out>,
ap=0xfffffe00779646b0)
    at /home/devel/freebsd/base/head/sys/kern/kern_shutdown.c:861
#12 0xffffffff80b9e413 in panic (
    fmt=0xffffffff81e8e1a8 <cnputs_mtx> "g\344,\201\377\377\377\377")
    at /home/devel/freebsd/base/head/sys/kern/kern_shutdown.c:799
#13 0xffffffff80b7d85a in __mtx_lock_flags (c=0xfffff800039cc598,
    opts=<optimized out>,
    file=0xffffffff8134fa4e
"/home/devel/freebsd/base/head/sys/net/iflib.c",
    line=2084) at /home/devel/freebsd/base/head/sys/kern/kern_mutex.c:240
#14 0xffffffff80cb968a in iflib_in_detach (ctx=0xfffff800039cc400)
    at /home/devel/freebsd/base/head/sys/net/iflib.c:2084
#15 iflib_admin_intr_deferred (ctx=0xfffff800039cc400)
    at /home/devel/freebsd/base/head/sys/net/iflib.c:5977
#16 0xffffffff805d7382 in em_intr (arg=0xfffffe0000665000)
    at /home/devel/freebsd/base/head/sys/dev/e1000/if_em.c:1361
#17 0xffffffff80cb8831 in iflib_fast_intr_ctx (arg=<optimized out>)
    at /home/devel/freebsd/base/head/sys/net/iflib.c:1549
#18 0xffffffff80b60f8b in intr_event_handle (ie=0xfffff80003980700,
    frame=0xfffffe0077964850)
    at /home/devel/freebsd/base/head/sys/kern/kern_intr.c:1225
#19 0xffffffff811e3208 in intr_execute_handlers (isrc=0xfffff8000396af00,
    frame=0xfffffe0077964850)
    at /home/devel/freebsd/base/head/sys/x86/x86/intr_machdep.c:358
#20 0xffffffff811e929f in lapic_handle_intr (vector=<optimized out>,
    frame=0xfffffe0077964850)
    at /home/devel/freebsd/base/head/sys/x86/x86/local_apic.c:1293
#21 <signal handler called>
#22 acpi_cpu_c1 ()
    at /home/devel/freebsd/base/head/sys/x86/x86/cpu_machdep.c:140
#23 0xffffffff80489cad in acpi_cpu_idle (sbt=<optimized out>)
    at /home/devel/freebsd/base/head/sys/dev/acpica/acpi_cpu.c:1187
#24 0xffffffff811e00cf in cpu_idle_acpi (sbt=1792802261)
    at /home/devel/freebsd/base/head/sys/x86/x86/cpu_machdep.c:433
#25 0xffffffff811e0187 in cpu_idle (busy=0)
    at /home/devel/freebsd/base/head/sys/x86/x86/cpu_machdep.c:581
#26 0xffffffff80bce5c7 in sched_idletd (dummy=<optimized out>)
    at /home/devel/freebsd/base/head/sys/kern/sched_ule.c:2829
#27 0xffffffff80b5e574 in fork_exit (
    callout=0xffffffff80bce0b0 <sched_idletd>, arg=0x0,
    frame=0xfffffe0077964ac0)
    at /home/devel/freebsd/base/head/sys/kern/kern_fork.c:1057
#28 <signal handler called>
(kgdb)


-- 
WBR, Andrey V. Elsukov

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 554 bytes
Desc: OpenPGP digital signature
URL: <http://lists.freebsd.org/pipermail/svn-src-all/attachments/20181023/eee897b6/attachment.sig>


More information about the svn-src-all mailing list