2004-11-03 23:35:13

by Mikael Pettersson

[permalink] [raw]
Subject: send_sig_info() from switch_to()?

Is it possible to do the equivalent of send_sig_info()
to current from within switch_to()? My attempts to do
so have all lead to hard kernel hangs, so I guess not,
but I though I'd ask anyway.

There is a HW-issue with delayed interrupts from performance
counter overflows on x86 and x86-64, which, if not handled,
can result in a interrupt being delivered to the wrong task.
(It's only been observed with certain high-rate events.)
I can work around this in the perfctr kernel extension by
masking the interrupt early in switch_to()'s suspend path
and manually detecting if any counters have overflowed.
Normal HW-detected overflows are routed to user-space via a
send_sig_info() in the interrupt handler. The problem is that
calling send_sig_info() from within switch_to() to signal
SW-detected overflows seems to cause kernel hangs. (I've tried
it both in the suspend path and in the resume path.)

Any ideas?

/Mikael