From owner-freebsd-net@freebsd.org Thu Jan 26 17:28:11 2017 Return-Path: Delivered-To: freebsd-net@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 06D7DCC3E6C for ; Thu, 26 Jan 2017 17:28:11 +0000 (UTC) (envelope-from arybchik@freebsd.org) Received: from mailman.ysv.freebsd.org (mailman.ysv.freebsd.org [IPv6:2001:1900:2254:206a::50:5]) by mx1.freebsd.org (Postfix) with ESMTP id E7B286A7 for ; Thu, 26 Jan 2017 17:28:10 +0000 (UTC) (envelope-from arybchik@freebsd.org) Received: by mailman.ysv.freebsd.org (Postfix) id E4067CC3E6B; Thu, 26 Jan 2017 17:28:10 +0000 (UTC) Delivered-To: net@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id E3AA8CC3E6A for ; Thu, 26 Jan 2017 17:28:10 +0000 (UTC) (envelope-from arybchik@freebsd.org) Received: from shelob.oktetlabs.ru (shelob.oktetlabs.ru [84.52.89.53]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id A651D6A6 for ; Thu, 26 Jan 2017 17:28:10 +0000 (UTC) (envelope-from arybchik@freebsd.org) Received: from [192.168.38.17] (aros.oktetlabs.ru [192.168.38.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by shelob.oktetlabs.ru (Postfix) with ESMTPSA id D6F9C7F617 for ; Thu, 26 Jan 2017 20:19:10 +0300 (MSK) DKIM-Filter: OpenDKIM Filter v2.9.2 shelob.oktetlabs.ru D6F9C7F617 Authentication-Results: shelob.oktetlabs.ru/D6F9C7F617; dkim=none reason="no signature"; dkim-adsp=none (unprotected policy); dkim-atps=neutral To: net@FreeBSD.org From: Andrew Rybchenko Subject: ifmedia status callback is non-sleepable Message-ID: <5278f854-4f6f-2ff3-b6d3-f95e23b26ded@freebsd.org> Date: Thu, 26 Jan 2017 20:19:10 +0300 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.6.0 MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit X-BeenThere: freebsd-net@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Networking and TCP/IP with FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 26 Jan 2017 17:28:11 -0000 Hello, I'd like to double-check that it is intended/known limitation on ifmedia status callback to be non-sleepable. The limitation is imposed by usage of the ifmedia ioctl to get status from lacp/lagg code on port creation (it holds non-sleepable rm_wlock). Backtrace of the corresponding panic: Sleeping thread (tid 100578, pid 10653) owns a non-sleepable lock KDB: stack backtrace of thread 100578: #0 0xffffffff80ae46e2 at mi_switch+0xd2 #1 0xffffffff80b31e6a at sleepq_wait+0x3a #2 0xffffffff80ae34e2 at _sx_xlock_hard+0x592 #3 0xffffffff8222fd7e at sfxge_media_status+0x2e #4 0xffffffff80be7b90 at ifmedia_ioctl+0x170 #5 0xffffffff8222c3d0 at sfxge_if_ioctl+0x1f0 #6 0xffffffff82277fbe at lagg_port_ioctl+0xde #7 0xffffffff82278f9b at lacp_linkstate+0x4b #8 0xffffffff822794c2 at lacp_port_create+0x1e2 #9 0xffffffff82276a73 at lagg_ioctl+0x1243 #10 0xffffffff80bdcbec at ifioctl+0xfbc #11 0xffffffff80b41ab4 at kern_ioctl+0x2d4 #12 0xffffffff80b41771 at sys_ioctl+0x171 #13 0xffffffff80fa16ae at amd64_syscall+0x4ce #14 0xffffffff80f8442b at Xfast_syscall+0xfb panic: sleeping thread cpuid = 23 KDB: stack backtrace: #0 0xffffffff80b24077 at kdb_backtrace+0x67 #1 0xffffffff80ad93e2 at vpanic+0x182 #2 0xffffffff80ad9253 at panic+0x43 #3 0xffffffff80b39a99 at propagate_priority+0x299 #4 0xffffffff80b3a59f at turnstile_wait+0x3ef #5 0xffffffff80ab493d at __mtx_lock_sleep+0x13d #6 0xffffffff80ad39f2 at _rm_wlock+0xb2 #7 0xffffffff82275479 at lagg_port_setlladdr+0x29 #8 0xffffffff80b363ca at taskqueue_run_locked+0x14a #9 0xffffffff80b361bf at taskqueue_run+0xbf #10 0xffffffff80a9340f at intr_event_execute_handlers+0x20f #11 0xffffffff80a93676 at ithread_loop+0xc6 #12 0xffffffff80a90055 at fork_exit+0x85 #13 0xffffffff80f8467e at fork_trampoline+0xe I think vnic driver has the problem as well since it grabs sx_lock from ifmedia status callback. Andrew.