From owner-freebsd-current@freebsd.org Wed Jul 1 23:25:12 2015 Return-Path: Delivered-To: freebsd-current@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 CACBC9922AB for ; Wed, 1 Jul 2015 23:25:12 +0000 (UTC) (envelope-from jmg@gold.funkthat.com) Received: from gold.funkthat.com (gate2.funkthat.com [208.87.223.18]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (Client CN "gold.funkthat.com", Issuer "gold.funkthat.com" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id AF2661CDF for ; Wed, 1 Jul 2015 23:25:12 +0000 (UTC) (envelope-from jmg@gold.funkthat.com) Received: from gold.funkthat.com (localhost [127.0.0.1]) by gold.funkthat.com (8.14.5/8.14.5) with ESMTP id t61NPBJV008148 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Wed, 1 Jul 2015 16:25:11 -0700 (PDT) (envelope-from jmg@gold.funkthat.com) Received: (from jmg@localhost) by gold.funkthat.com (8.14.5/8.14.5/Submit) id t61NPA63008147; Wed, 1 Jul 2015 16:25:10 -0700 (PDT) (envelope-from jmg) Date: Wed, 1 Jul 2015 16:25:10 -0700 From: John-Mark Gurney To: Ryan Stone Cc: FreeBSD Current Subject: Re: How should a driver shutdown a taskqueue on detach? Message-ID: <20150701232510.GH96349@funkthat.com> References: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: X-Operating-System: FreeBSD 9.1-PRERELEASE amd64 X-PGP-Fingerprint: 54BA 873B 6515 3F10 9E88 9322 9CB1 8F74 6D3F A396 X-Files: The truth is out there X-URL: http://resnet.uoregon.edu/~gurney_j/ X-Resume: http://resnet.uoregon.edu/~gurney_j/resume.html X-TipJar: bitcoin:13Qmb6AeTgQecazTWph4XasEsP7nGRbAPE X-to-the-FBI-CIA-and-NSA: HI! HOW YA DOIN? can i haz chizburger? User-Agent: Mutt/1.5.21 (2010-09-15) X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.2.7 (gold.funkthat.com [127.0.0.1]); Wed, 01 Jul 2015 16:25:11 -0700 (PDT) X-BeenThere: freebsd-current@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: Discussions about the use of FreeBSD-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 01 Jul 2015 23:25:12 -0000 Ryan Stone wrote this message on Wed, Jul 01, 2015 at 15:44 -0400: > I'm trying to figure out how a driver is supposed to shut down its > interrupt-handling taskqueue when it detaches. taskqueue(9) recommends > disabling interrupts, draining each task and then freeing the taskqueue. > The problem that I have is the interrupt-handling tasks will sometimes > re-enable interrupts on the device. Is there a better way than using some > kind of flag internally in the driver to note that a detach is in progress > that the interrupt handlers will have to check before enabling interrupts? Why not disabled interrupts, unregister interrupt handler, and then make sure interrupts are disabled (only needed to prevent an interrupt storm)? Once you have unregistered the interrupt handler, it can't run again... Then you're free to drain the task queue safely... -- John-Mark Gurney Voice: +1 415 225 5579 "All that I will do, has been done, All that I have, has not."