Date: Wed, 1 Jul 2015 16:25:10 -0700 From: John-Mark Gurney <jmg@funkthat.com> To: Ryan Stone <rysto32@gmail.com> Cc: FreeBSD Current <freebsd-current@freebsd.org> Subject: Re: How should a driver shutdown a taskqueue on detach? Message-ID: <20150701232510.GH96349@funkthat.com> In-Reply-To: <CAFMmRNxLV0Uk9iT%2BU8rrPvn6aanSfEA6p577McM=_4xypaZr5w@mail.gmail.com> References: <CAFMmRNxLV0Uk9iT%2BU8rrPvn6aanSfEA6p577McM=_4xypaZr5w@mail.gmail.com>
next in thread | previous in thread | raw e-mail | index | archive | help
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."
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20150701232510.GH96349>