But I was choosing to ignore it mainly to reduce the overhead of a
perf intr in general. A subsequent real interrupt could go thru thru
the gyrations of preemption etc.
So that's dangerous thinking... People that run a PREEMPT kernel
generally tend to care about latency (esp. when combined with
PREEMPT_RT).
And ignoring a preemption point gets these people upset (and missed
preemptions are a royal friggin pain to debug).
What do you (on ARC) do about irq_work ?
Nothing ATM.
So the reason I'm asking is that some architectures that don't have NMIs
call irq_work_run() at the very end of their perf-interrupt handler (ARM
does this for instance).
And the thing is, _that_ can and does do things like wakeups and will
thus require doing the PREEMPT thing.
Although I'm sure it is, can you please explain how irq_work is relevant in
the context of this patch.
Since the perf interrupt (in general) cannot call a whole lot of things
for it needs to assume running from NMI context, it needs to defer
things to a more regular context. It does this with irq_work.
So for instance, when the output buffer reaches its watermark, we'll
raise the irq_work to issue the wakeup of tasks that poll() on that.