linux/arch/sparc/kernel
Peter Zijlstra a8b0ca17b8 perf: Remove the nmi parameter from the swevent and overflow interface
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>
2011-07-01 11:06:35 +02:00
..
.gitignore sparc: gitignore a few files 2008-12-04 09:17:15 -08:00
apc.c sparc: Remove unnecessary semicolons 2011-06-07 16:06:34 -07:00
asm-offsets.c sparc,sparc64: unify asm-offsets.c 2008-12-04 09:17:12 -08:00
audit.c sparc,sparc64: unify kernel/ 2008-12-04 09:17:21 -08:00
auxio_32.c sparc: Remove unnecessary semicolons 2011-06-07 16:06:34 -07:00
auxio_64.c sparc64: Fix section mis-match errors. 2011-03-30 17:37:56 -07:00
btext.c of/sparc: convert various prom_* functions to use phandle 2010-10-09 02:33:34 -06:00
central.c sparc64: Fix section mis-match errors. 2011-03-30 17:37:56 -07:00
cherrs.S sparc,sparc64: unify kernel/ 2008-12-04 09:17:21 -08:00
chmc.c sparc: Remove unnecessary semicolons 2011-06-07 16:06:34 -07:00
compat_audit.c sparc,sparc64: unify kernel/ 2008-12-04 09:17:21 -08:00
cpu.c sparc32: probe for cpu info only during startup 2011-04-21 15:46:21 -07:00
cpumap.c sparc: convert old cpumask API into new one 2011-05-16 13:38:07 -07:00
cpumap.h sparc64: fix and optimize irq distribution 2009-06-16 04:56:28 -07:00
devices.c sparc32: always register a PROM based early console 2011-04-21 15:47:35 -07:00
dma.c sparc: Add CONFIG_DMA_API_DEBUG support 2009-08-10 09:35:00 +02:00
ds.c sparc: convert old cpumask API into new one 2011-05-16 13:38:07 -07:00
dtlb_miss.S sparc,sparc64: unify kernel/ 2008-12-04 09:17:21 -08:00
dtlb_prot.S sparc,sparc64: unify kernel/ 2008-12-04 09:17:21 -08:00
ebus.c sparc,sparc64: unify kernel/ 2008-12-04 09:17:21 -08:00
entry.h sparc64: rename virt_irq => irq - I 2011-03-16 18:19:03 -07:00
entry.S sparc32, sun4m: bugfix in SMP IPI traphandler 2011-06-09 16:12:34 -07:00
etrap_32.S sparc: prepare kernel/ for unification 2008-12-04 09:17:20 -08:00
etrap_64.S sparc,sparc64: unify kernel/ 2008-12-04 09:17:21 -08:00
fpu_traps.S sparc,sparc64: unify kernel/ 2008-12-04 09:17:21 -08:00
ftrace.c sparc64: Add function graph tracer support. 2010-04-12 22:37:26 -07:00
getsetcc.S sparc,sparc64: unify kernel/ 2008-12-04 09:17:21 -08:00
head_32.S sparc32,leon: operate on boot-cpu IRQ controller registers 2011-04-21 16:44:45 -07:00
head_64.S Fix common misspellings 2011-03-31 11:26:23 -03:00
helpers.S sparc64: Fix perf_arch_get_caller_regs(). 2010-08-08 22:07:36 -07:00
hvapi.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
hvcalls.S sparc,sparc64: unify kernel/ 2008-12-04 09:17:21 -08:00
hvtramp.S sparc,sparc64: unify kernel/ 2008-12-04 09:17:21 -08:00
idprom.c sparc,leon: Introduce the sparc-leon CPU type. 2009-08-17 18:32:10 -07:00
init_task.c Fix common misspellings 2011-03-31 11:26:23 -03:00
iommu.c sparc64: Fix build errors with gcc-4.6.0 2011-03-16 18:19:15 -07:00
iommu_common.h sparc,sparc64: unify kernel/ 2008-12-04 09:17:21 -08:00
ioport.c sparc32,leon: Remove unnecessary page_address calls in LEON DMA API. 2011-05-16 13:41:40 -07:00
irq.h sparc32, sun4d: Implemented SMP IPIs support for SUN4D machines 2011-05-16 13:07:44 -07:00
irq_32.c sparc32: implement SMP IPIs using the generic functions 2011-05-16 13:07:43 -07:00
irq_64.c sparc: convert old cpumask API into new one 2011-05-16 13:38:07 -07:00
itlb_miss.S sparc,sparc64: unify kernel/ 2008-12-04 09:17:21 -08:00
ivec.S sparc,sparc64: unify kernel/ 2008-12-04 09:17:21 -08:00
jump_label.c jump label: Add sparc64 support 2010-09-22 16:35:09 -04:00
kernel.h sparc: consolidate show_cpuinfo in cpu.c 2011-04-21 15:45:45 -07:00
kgdb_32.c kgdb,sparc: Add in kgdb_arch_set_pc for sparc 2010-05-20 21:04:19 -05:00
kgdb_64.c kgdb,sparc: Add in kgdb_arch_set_pc for sparc 2010-05-20 21:04:19 -05:00
kprobes.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
kstack.h sparc64: Run NMIs on the hardirq stack. 2010-04-14 02:04:29 -07:00
ktlb.S sparc64: Increase vmalloc size to fix percpu regressions. 2009-09-28 14:39:58 -07:00
ldc.c sparc64: Fix build errors with gcc-4.6.0 2011-03-16 18:19:15 -07:00
led.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
leon_kernel.c sparc32, leon: bugfix in LEON SMP interrupt init 2011-06-09 16:12:34 -07:00
leon_pci.c sparc32,leon: added LEON-common low-level PCI routines 2011-06-02 14:32:37 -07:00
leon_pci_grpci2.c sparc32,leon: add GRPCI2 PCI Host driver 2011-06-02 14:32:38 -07:00
leon_pmc.c SPARC/LEON: power down instruction different of different LEONs 2011-03-16 18:19:04 -07:00
leon_smp.c sparc: convert old cpumask API into new one 2011-05-16 13:38:07 -07:00
Makefile sparc32,leon: add GRPCI2 PCI Host driver 2011-06-02 14:32:38 -07:00
mdesc.c sparc: convert old cpumask API into new one 2011-05-16 13:38:07 -07:00
misctrap.S sparc,sparc64: unify kernel/ 2008-12-04 09:17:21 -08:00
module.c sparc: Remove unnecessary semicolons 2011-06-07 16:06:34 -07:00
muldiv.c sparc: add '32' suffix to reg_window, sigcontext, __siginfo_t 2009-01-02 19:32:59 -08:00
nmi.c perf, arch: Cleanup perf-pmu init vs lockup-detector 2010-11-26 15:14:56 +01:00
of_device_32.c sparc32: introduce build_device_irq 2011-03-16 18:19:14 -07:00
of_device_64.c sparc: convert old cpumask API into new one 2011-05-16 13:38:07 -07:00
of_device_common.c sparc: Implement of_iomap(). 2011-03-18 15:47:26 -07:00
of_device_common.h sparc: move of_device common code to of_device_common 2009-06-16 04:56:49 -07:00
pci.c sparc: Convert to new irq function names 2011-03-29 14:48:14 +02:00
pci_common.c sparc: Remove unnecessary semicolons 2011-06-07 16:06:34 -07:00
pci_fire.c sparc64: Fix section mis-match errors. 2011-03-30 17:37:56 -07:00
pci_impl.h sparc64: rename virt_irq => irq - II 2011-03-16 18:19:03 -07:00
pci_msi.c sparc: convert old cpumask API into new one 2011-05-16 13:38:07 -07:00
pci_psycho.c sparc64: Fix section mis-match errors. 2011-03-30 17:37:56 -07:00
pci_sabre.c drivercore: revert addition of of_match to struct device 2011-05-18 12:32:23 -06:00
pci_schizo.c sparc: Remove unnecessary semicolons 2011-06-07 16:06:34 -07:00
pci_sun4v.c sparc64: Fix section mis-match errors. 2011-03-30 17:37:56 -07:00
pci_sun4v.h sparc,sparc64: unify kernel/ 2008-12-04 09:17:21 -08:00
pci_sun4v_asm.S sparc,sparc64: unify kernel/ 2008-12-04 09:17:21 -08:00
pcic.c sparc32: genirq support 2011-04-19 22:11:40 -07:00
pcr.c sparc64: Fix build errors with gcc-4.6.0 2011-03-16 18:19:15 -07:00
perf_event.c perf: Remove the nmi parameter from the swevent and overflow interface 2011-07-01 11:06:35 +02:00
pmc.c sparc32: fix section mismatch warnings in apc, pmc and time_32 2011-04-21 15:37:20 -07:00
power.c sparc64: Fix section mis-match errors. 2011-03-30 17:37:56 -07:00
process_32.c sparc32,leon: SMP power down implementation 2011-05-16 13:03:28 -07:00
process_64.c Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input 2010-08-28 13:55:31 -07:00
prom.h of/promtree: make drivers/of/pdt.c no longer sparc-only 2010-10-10 21:53:30 -06:00
prom_32.c sparc32: always register a PROM based early console 2011-04-21 15:47:35 -07:00
prom_64.c Merge commit 'v2.6.35-rc6' into devicetree/next 2010-07-24 09:49:13 -06:00
prom_common.c of/promtree: no longer call prom_ functions directly; use an ops structure 2010-10-12 21:57:53 -06:00
prom_irqtrans.c sparc: Remove unnecessary semicolons 2011-06-07 16:06:34 -07:00
psycho_common.c sparc: Remove unnecessary semicolons 2011-06-07 16:06:34 -07:00
psycho_common.h sparc: remove references to of_device and to_of_device 2010-07-24 09:58:22 -06:00
ptrace_32.c ptrace: cleanup arch_ptrace() on sparc 2010-10-27 18:03:12 -07:00
ptrace_64.c sparc64: Fix build errors with gcc-4.6.0 2011-03-16 18:19:15 -07:00
reboot.c sparc,sparc64: unify kernel/ 2008-12-04 09:17:21 -08:00
rtrap_32.S sparc: keep calling do_signal() as long as pending signals remain 2010-10-26 08:59:55 -07:00
rtrap_64.S sparc: keep calling do_signal() as long as pending signals remain 2010-10-26 08:59:55 -07:00
sbus.c sparc: Remove unnecessary semicolons 2011-06-07 16:06:34 -07:00
setup_32.c sparc: Remove unnecessary semicolons 2011-06-07 16:06:34 -07:00
setup_64.c sparc: Remove unnecessary semicolons 2011-06-07 16:06:34 -07:00
signal32.c sparc: Prevent no-handler signal syscall restart recursion. 2010-09-21 22:30:13 -07:00
signal_32.c sparc: Prevent no-handler signal syscall restart recursion. 2010-09-21 22:30:13 -07:00
signal_64.c sparc: Prevent no-handler signal syscall restart recursion. 2010-09-21 22:30:13 -07:00
smp_32.c sparc: Remove unnecessary semicolons 2011-06-07 16:06:34 -07:00
smp_64.c Merge commit '317f394160e9beb97d19a84c39b7e5eb3d7815a8' 2011-05-20 13:10:22 -07:00
sparc_ksyms_32.c sparc: Eliminate PROMLIB_INTERNAL as it does nothing 2009-01-08 16:59:01 -08:00
sparc_ksyms_64.c sparc64: don't export static inline pci_ functions 2009-12-15 16:28:13 +10:30
spiterrs.S sparc,sparc64: unify kernel/ 2008-12-04 09:17:21 -08:00
sstate.c sparc,sparc64: unify kernel/ 2008-12-04 09:17:21 -08:00
stacktrace.c sparc64: Fix stack dumping and tracing when function graph is enabled. 2010-04-21 03:08:11 -07:00
starfire.c sparc: explicitly cast negative phandle checks to s32 2011-01-03 20:02:06 -07:00
sun4c_irq.c sparc32: genirq support 2011-04-19 22:11:40 -07:00
sun4d_irq.c Add support for allocating irqs for bootbus devices 2011-06-07 16:06:33 -07:00
sun4d_smp.c sparc: convert old cpumask API into new one 2011-05-16 13:38:07 -07:00
sun4m_irq.c sparc32: genirq support 2011-04-19 22:11:40 -07:00
sun4m_smp.c sparc: convert old cpumask API into new one 2011-05-16 13:38:07 -07:00
sun4v_ivec.S sparc,sparc64: unify kernel/ 2008-12-04 09:17:21 -08:00
sun4v_tlb_miss.S sparc,sparc64: unify kernel/ 2008-12-04 09:17:21 -08:00
sys32.S sparc: Hook up new fanotify and prlimit64 syscalls. 2010-08-16 15:04:29 -07:00
sys_sparc32.c sparc: Remove unnecessary semicolons 2011-06-07 16:06:34 -07:00
sys_sparc_32.c BKL: remove extraneous #include <smp_lock.h> 2010-11-17 08:59:32 -08:00
sys_sparc_64.c sparc: Remove unnecessary semicolons 2011-06-07 16:06:34 -07:00
syscalls.S sparc64: Kill off old sys_perfctr system call and state. 2010-03-03 08:08:49 -08:00
sysfs.c sparc: convert old cpumask API into new one 2011-05-16 13:38:07 -07:00
systbls.h improve sys_newuname() for compat architectures 2010-03-12 15:52:32 -08:00
systbls_32.S ns: Wire up the setns system call 2011-05-28 10:48:39 -07:00
systbls_64.S ns: Wire up the setns system call 2011-05-28 10:48:39 -07:00
tadpole.c of/sparc: convert various prom_* functions to use phandle 2010-10-09 02:33:34 -06:00
time_32.c Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/sparc-2.6 2011-05-20 12:59:54 -07:00
time_64.c sparc: Remove unnecessary semicolons 2011-06-07 16:06:34 -07:00
trampoline_32.S sparc,leon: Sparc-Leon SMP support 2009-11-02 04:19:42 -08:00
trampoline_64.S sparc,sparc64: unify kernel/ 2008-12-04 09:17:21 -08:00
traps_32.c headers: smp_lock.h redux 2009-07-12 12:22:34 -07:00
traps_64.c sparc: Remove unnecessary semicolons 2011-06-07 16:06:34 -07:00
tsb.S sparc64: Fix sun4u execute bit check in TSB I-TLB load. 2010-02-19 15:19:52 -08:00
ttable.S sparc64: fix the build error due to smp_kgdb_capture_client() 2010-06-25 11:17:57 -07:00
una_asm_32.S sparc32: unaligned memory access (MNA) trap handler bug 2011-02-01 12:39:59 -08:00
una_asm_64.S sparc: Fix .size directive for do_int_load 2011-03-16 18:19:15 -07:00
unaligned_32.c perf: Remove the nmi parameter from the swevent and overflow interface 2011-07-01 11:06:35 +02:00
unaligned_64.c perf: Remove the nmi parameter from the swevent and overflow interface 2011-07-01 11:06:35 +02:00
us2e_cpufreq.c sparc: Remove unnecessary semicolons 2011-06-07 16:06:34 -07:00
us3_cpufreq.c sparc: Remove unnecessary semicolons 2011-06-07 16:06:34 -07:00
utrap.S sparc,sparc64: unify kernel/ 2008-12-04 09:17:21 -08:00
vio.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
viohs.c sparc: Remove unnecessary semicolons 2011-06-07 16:06:34 -07:00
visemul.c perf: Remove the nmi parameter from the swevent and overflow interface 2011-07-01 11:06:35 +02:00
vmlinux.lds.S percpu: Always align percpu output section to PAGE_SIZE 2011-03-24 18:50:09 +01:00
windows.c BKL: remove extraneous #include <smp_lock.h> 2010-11-17 08:59:32 -08:00
winfixup.S sparc,sparc64: unify kernel/ 2008-12-04 09:17:21 -08:00
wof.S
wuf.S