a8b0ca17b8
The nmi parameter indicated if we could do wakeups from the current context, if not, we would set some state and self-IPI and let the resulting interrupt do the wakeup. For the various event classes: - hardware: nmi=0; PMI is in fact an NMI or we run irq_work_run from the PMI-tail (ARM etc.) - tracepoint: nmi=0; since tracepoint could be from NMI context. - software: nmi=[0,1]; some, like the schedule thing cannot perform wakeups, and hence need 0. As one can see, there is very little nmi=1 usage, and the down-side of not using it is that on some platforms some software events can have a jiffy delay in wakeup (when arch_irq_work_raise isn't implemented). The up-side however is that we can remove the nmi parameter and save a bunch of conditionals in fast paths. Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl> Cc: Michael Cree <mcree@orcon.net.nz> Cc: Will Deacon <will.deacon@arm.com> Cc: Deng-Cheng Zhu <dengcheng.zhu@gmail.com> Cc: Anton Blanchard <anton@samba.org> Cc: Eric B Munson <emunson@mgebm.net> Cc: Heiko Carstens <heiko.carstens@de.ibm.com> Cc: Paul Mundt <lethal@linux-sh.org> Cc: David S. Miller <davem@davemloft.net> Cc: Frederic Weisbecker <fweisbec@gmail.com> Cc: Jason Wessel <jason.wessel@windriver.com> Cc: Don Zickus <dzickus@redhat.com> Link: http://lkml.kernel.org/n/tip-agjev8eu666tvknpb3iaj0fg@git.kernel.org Signed-off-by: Ingo Molnar <mingo@elte.hu> |
||
---|---|---|
.. | ||
cp1emu.c | ||
dp_add.c | ||
dp_cmp.c | ||
dp_div.c | ||
dp_fint.c | ||
dp_flong.c | ||
dp_frexp.c | ||
dp_fsp.c | ||
dp_logb.c | ||
dp_modf.c | ||
dp_mul.c | ||
dp_scalb.c | ||
dp_simple.c | ||
dp_sqrt.c | ||
dp_sub.c | ||
dp_tint.c | ||
dp_tlong.c | ||
dsemul.c | ||
ieee754.c | ||
ieee754.h | ||
ieee754d.c | ||
ieee754dp.c | ||
ieee754dp.h | ||
ieee754int.h | ||
ieee754m.c | ||
ieee754sp.c | ||
ieee754sp.h | ||
ieee754xcpt.c | ||
kernel_linkage.c | ||
Makefile | ||
sp_add.c | ||
sp_cmp.c | ||
sp_div.c | ||
sp_fdp.c | ||
sp_fint.c | ||
sp_flong.c | ||
sp_frexp.c | ||
sp_logb.c | ||
sp_modf.c | ||
sp_mul.c | ||
sp_scalb.c | ||
sp_simple.c | ||
sp_sqrt.c | ||
sp_sub.c | ||
sp_tint.c | ||
sp_tlong.c |