cvs commit: src/sys/amd64/amd64 intr_machdep.c src/sys/i386/i386 intr_machdep.c src/sys/kern kern_intr.c src/sys/sys interrupt.h

John-Mark Gurney gurney_j at resnet.uoregon.edu
Sun May 6 19:29:27 UTC 2007


Paolo Pisati wrote this message on Sun, May 06, 2007 at 21:10 +0200:
> On Sun, May 06, 2007 at 10:44:26AM -0700, John-Mark Gurney wrote:
> > Paolo Pisati wrote this message on Sun, May 06, 2007 at 17:02 +0000:
> > >   Modified files:
> > >     sys/amd64/amd64      intr_machdep.c 
> > >     sys/i386/i386        intr_machdep.c 
> > >     sys/kern             kern_intr.c 
> > >     sys/sys              interrupt.h 
> > >   Log:
> > >   Bring in the reminaing bits to make interrupt filtering work:
> > 
> > When are we going to see man page updates to document this new feature?
> 
> didn't prepare any patch for man pages cause the support for some
> archs is still missing, but i can do that if requested.

It's still useful to have as a reference...  It's easy to document which
arches are still missing the parts...

> > Also, you forgot to update sys/sys/bus.h's comments? or did you fix
> > the code to behave like the comments?
> 
> you mean this comment:
> 
> --------8<--------8<--------8<--------8<--------8<--------8<--------
> 
> /**
>  * @brief Driver interrupt filter return values
>  *
>  * If a driver provides an interrupt filter routine it must return an
>  * integer consisting of oring together zero or more of the following
>  * flags:
>  *
>  *      FILTER_STRAY    - this device did not trigger the interrupt
>  *      FILTER_HANDLED  - the interrupt has been fully handled and can be EOId
>  *      FILTER_SCHEDULE_THREAD - the threaded interrupt handler should be
>  *                        scheduled to execute
>  *
>  * If the driver does not provide a filter, then the interrupt code will
>  * act is if the filter had returned FILTER_SCHEDULE_THREAD.  Note that it
>  * is illegal to specify any other flag with FILTER_STRAY and that it is
>  * illegal to not specify either of FILTER_HANDLED or FILTER_SCHEDULE_THREAD
			    ^^^^^^                   ^^
>  * if FILTER_STRAY is not specified.
>  */
> #define FILTER_STRAY            0x01
> #define FILTER_HANDLED          0x02
> #define FILTER_SCHEDULE_THREAD  0x04
> 
> --------8<--------8<--------8<--------8<--------8<--------8<--------
> 
> except for the horrible english, the semantic is correct.

But in another email you said that specifing just FILTER_SCHEDULE_THREAD
(without FILTER_HANDLED) is illegal, but the above states that either
FILTER_HANDLED or FILTER_SCHEDULE_THREAD is valid..

Shouldn't it read something like:
Either FILTER_STRAY or FILTER_HANDLED must be specified.  If
FILTER_HANDLED is specified, the FILTER_SCHEDULE_THREAD flag
may be provided to schedule the ithread.

> BTW, kris@ just told me that sun4v is broken since my first
> intr filtering commit: can we sat down and try to fix it or
> should we consider it officialy dead?

kmacy is probably a better person to talk to about this...  Though I
have done some work on sun4v, I don't have immediate access to one,
and didn't work on the low level interrupt code as much as kmacy did...

I did look over the changes and don't see how things broken, but that
was purely by inspection...

-- 
  John-Mark Gurney				Voice: +1 415 225 5579

     "All that I will do, has been done, All that I have, has not."


More information about the cvs-all mailing list