CVSROOT:        /cvs
Module name:    src
Changes by:     dera...@cvs.openbsd.org 2011/04/15 14:52:57

Modified files:
        sys/arch/macppc/dev: macintr.c openpic.c 
        sys/arch/macppc/include: powerpc.h 
        sys/arch/macppc/macppc: machdep.c 

Log message:
More than a decade ago, interrupt handlers on sparc started returning 0
(interrupt was not for me), 1 (positive interrupt was for me), or -1
(i am not sure...).  We have continued with this practice in as many
drivers as possible, throughout the tree.

This makes some of the architectures use that information in their
interrupt handler calling code -- if 1 is returned (and we know
this specific machine does not have edge-shared interrupts), we
finish servicing other possible handlers on the same pin.  If the
interrupt pin remains asserted (from a different device), we will
end up back in the interrupt servicing code of course... but this is
cheaper than calling all the chained interrupts on a pin.

This does of course count on shared level interrupts being properly
sorted by IPL.

There have been some concerns about starvation of drivers which
incorrectly return 1.  Those drivers should be hunted down so that
they return -1.

ok drahn

Reply via email to