From owner-svn-src-all@freebsd.org Tue Mar 15 18:20:18 2016 Return-Path: Delivered-To: svn-src-all@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 96ED8AD217D; Tue, 15 Mar 2016 18:20:18 +0000 (UTC) (envelope-from hps@selasky.org) Received: from mail.turbocat.net (heidi.turbocat.net [88.198.202.214]) (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 600A31485; Tue, 15 Mar 2016 18:20:18 +0000 (UTC) (envelope-from hps@selasky.org) Received: from laptop015.home.selasky.org (unknown [62.141.129.119]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.turbocat.net (Postfix) with ESMTPSA id A50211FE025; Tue, 15 Mar 2016 19:10:48 +0100 (CET) Subject: Re: svn commit: r296909 - head/sys/ofed/drivers/infiniband/ulp/ipoib To: John Baldwin References: <201603151547.u2FFlQKN078643@repo.freebsd.org> <2420759.o4YiE5Za4X@ralph.baldwin.cx> Cc: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org From: Hans Petter Selasky Message-ID: <56E850CF.1000804@selasky.org> Date: Tue, 15 Mar 2016 19:13:35 +0100 User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:38.0) Gecko/20100101 Thunderbird/38.5.0 MIME-Version: 1.0 In-Reply-To: <2420759.o4YiE5Za4X@ralph.baldwin.cx> Content-Type: text/plain; charset=windows-1252; format=flowed Content-Transfer-Encoding: 7bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 15 Mar 2016 18:20:18 -0000 On 03/15/16 18:43, John Baldwin wrote: > On Tuesday, March 15, 2016 03:47:26 PM Hans Petter Selasky wrote: >> Author: hselasky >> Date: Tue Mar 15 15:47:26 2016 >> New Revision: 296909 >> URL: https://svnweb.freebsd.org/changeset/base/296909 >> >> Log: >> Fix witness panic in the ipoib_ioctl() function when unloading the >> ipoib module. >> >> The bpfdetach() function is trying to turn off promiscious mode on the >> network interface it is attached to while holding a mutex. The fix >> consists of ignoring any further calls to the ipoib_ioctl() function >> when the network interface is going to be detached. The ipoib_ioctl() >> function might sleep. >> >> Sponsored by: Mellanox Technologies >> MFC after: 1 week > > In all of the other NIC drivers I have worked on the fix has been to call > if_detach (or ether_ifdetach) as the first step in your detach method before > you try to stop the interface. The idea is to remove external connections > from your driver first, and the only after those have drained do you actually > shut down the hardware. Given you are calling if_detach() just before > if_free() below, ipoib just seems to be broken here. > > For example, detach in a typical NIC driver does this: > > struct foo_softc *sc; > > sc = device_get_softc(dev); > ether_ifdetach(sc->sc_ifp); > FOO_LOCK(sc); > foo_stop(sc); > FOO_UNLOCK(sc); > callout_drain(&sc->timer); > bus_teardown_intr(...); > bus_release_resource(...); > if_free(sc->sc_ifp); > > Similarly, devices with a character device in /dev should be calling > destroy_dev() first before shutting down hardware, etc. > I'll have a look at it. Thank you for your input. --HPS