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