x86: Fixes for nmi/pmi interrupt sharing
- Fix a bug where the semantics of refcount_release() were
reversed. This would lead to the nmi interrupt being prematurely
masked in the local apic, leading to an out-of-tree profiling
tool only getting results the first time it was run.
- Stop executing nmi handlers after one claims the interrupt.
The core2 hwpmc handler seems to be especially heavy, and running it
in addition to vtune's handler caused roughly 50% of the nmi interrupts
to be lost (and caused vtune to give worse results).
Reviewed by: bojan
Sponsored by: Netflix