--- On Tue, 3/17/09, Sam Leffler <sam_at_freebsd.org> wrote: > From: Sam Leffler <sam_at_freebsd.org> > Subject: Re: Interrupt routine usage not shown by top in 8.0 > To: barney_cordoba_at_yahoo.com > Cc: current_at_freebsd.org > Date: Tuesday, March 17, 2009, 4:41 PM > Barney Cordoba wrote: > > > > > > --- On Tue, 3/17/09, Robert Watson > <rwatson_at_FreeBSD.org> wrote: > > > > > >> From: Robert Watson <rwatson_at_FreeBSD.org> > >> Subject: Re: Interrupt routine usage not shown by > top in 8.0 > >> To: "Paolo Pisati" > <p.pisati_at_oltrelinux.com> > >> Cc: "Barney Cordoba" > <barney_cordoba_at_yahoo.com>, current_at_freebsd.org > >> Date: Tuesday, March 17, 2009, 11:24 AM > >> On Tue, 17 Mar 2009, Paolo Pisati wrote: > >> > >> > >>> perhaps i misunderstood your question, but > i'll > >>> > >> try to explain a bit: > >> > >>> before 7.0, bus_setup_intr() took just one > function > >>> > >> thus you could have an INTR_FAST or an INTR_MPSAFE > handler, > >> and you choose the kind of handler via a flag > (INTR_FAST in > >> this case). > >> > >>> after 7.0, bus_setup_intr() took 2 functions, > thus you > >>> > >> could have: a fast handler (aka filter), or an > ithread > >> handler (aka mpsafe), or a fast + ithread handler > (available > >> only with INTR_FILTER turned on). > >> > >>> in bus_setup_intr() the first function pointer > is for > >>> > >> the filter side of the handler, while the second > pointer is > >> for the ithread part, and if you declare both you > can filter > >> events (interrupts) and call the rest of the > device driver > >> (the ithread part) after the filter has recognized > and > >> acknowledged&masked the interrupt. > >> > >> This clarifies my misunderstanding, thanks! > >> > >> > > > > I'd still be interested in knowing the specific > advantage/consequences > > of a fast filter vs an MPSAFE ithread? > > > > In what circumstance would using a filter and then > launching a task be advantageous over just using an ithread? > > > > It mostly depends on the hardware (unless the fast handler > does actual work). If ack'ing the interrupt improves > latency (e.g. by allowing the device to do other things) > then it's better to do that in the filter method even if > the actual work is deferred to the ithread. It's also > important when interrupts are not edge-triggered; you want > to shut them up asap. > > So, what device are you doing a driver for? > > Sam I'm working with the igb and ixgbe drivers. Neither of them use the filters, but em does. Since they are all maintained by the same person I was curious as to why the em used filters and the igb and ixgbe, which are supposedly higher performance cards, use MPSAFE ithreads. BarneyReceived on Tue Mar 17 2009 - 22:03:23 UTC
This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:39:44 UTC