mirror of
https://git.proxmox.com/git/mirror_ubuntu-kernels.git
synced 2025-11-10 12:12:46 +00:00
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 | ||