> #define NOTIFY_DONE 0x0000 /* Don't care */
> #define NOTIFY_OK 0x0001 /* Suits me */
> #define NOTIFY_STOP_MASK 0x8000 /* Don't call further */
>
> I'mt taking these to mean that NOTIFY_DONE means you didn't handle it,
> NOTIFY_OK means you did handle it, and you "or" on NOTIFY_STOP_MASK if
> you want it to stop. I'm thinking that stopping is probably a bad idea,
> if the NMI is really edge triggered.
> There's a comment in do_nmi() that says that the NMI is edge triggered.
So there is. Darn. You could special case default_do_nmi, only printing
out "Unknown NMI" iff the reason inb() check fails, /and/ no previous
handlers set handled. Theoretically we have to take the cost of the
inb() every time otherwise we can lose one of the NMISC-based things in
default_do_nmi ... I can always see if this makes a noticable practical
difference for oprofile under high interrupt load
(I also need to be able to remove the NMI watchdog handler, but that's
an oprofile-specific problem).
Perhaps things will end being best to leave the current fast-path thing,
but we should make sure that we've explored the possibilities of
removing it first ;)
thanks
john
-- "This is playing, not work, therefore it's not a waste of time." - Zath - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/