linux/arch/sh
Peter Zijlstra e360adbe29 irq_work: Add generic hardirq context callbacks
Provide a mechanism that allows running code in IRQ context. It is
most useful for NMI code that needs to interact with the rest of the
system -- like wakeup a task to drain buffers.

Perf currently has such a mechanism, so extract that and provide it as
a generic feature, independent of perf so that others may also
benefit.

The IRQ context callback is generated through self-IPIs where
possible, or on architectures like powerpc the decrementer (the
built-in timer facility) is set to generate an interrupt immediately.

Architectures that don't have anything like this get to do with a
callback from the timer tick. These architectures can call
irq_work_run() at the tail of any IRQ handlers that might enqueue such
work (like the perf IRQ handler) to avoid undue latencies in
processing the work.

Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
Acked-by: Kyle McMartin <kyle@mcmartin.ca>
Acked-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
[ various fixes ]
Signed-off-by: Huang Ying <ying.huang@intel.com>
LKML-Reference: <1287036094.7768.291.camel@yhuang-dev>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
2010-10-18 19:58:50 +02:00
..
boards Merge master.kernel.org:/pub/scm/linux/kernel/git/lethal/genesis-2.6 into devel-stable 2010-08-06 18:13:19 +01:00
boot Merge git://git.kernel.org/pub/scm/linux/kernel/git/lethal/sh-2.6 2010-06-04 15:42:09 -07:00
cchips sh: Fix up hp6xx build. 2010-02-05 17:45:14 +09:00
configs defconfig reduction 2010-08-14 22:26:53 +02:00
drivers sh: Fix up IORESOURCE_PCI_FIXED usage in pcibios_fixup_device_resources(). 2010-06-07 11:42:01 +09:00
include irq_work: Add generic hardirq context callbacks 2010-10-18 19:58:50 +02:00
kernel Merge remote branch 'tip/perf/core' into oprofile/core 2010-10-15 12:45:00 +02:00
lib arch/sh/lib/strlen.S: Checkpatch cleanup 2010-05-24 08:11:07 +09:00
lib64 sh64: Kill off special clear_page() implementation. 2009-08-04 17:17:00 +09:00
math-emu Revert "endian: #define __BYTE_ORDER" 2010-05-26 08:30:15 -07:00
mm lmb: rename to memblock 2010-07-14 17:14:00 +10:00
oprofile sh: oprofile: Use perf-events oprofile backend 2010-10-11 17:46:16 +02:00
tools Merge branch 'sh/stable-updates' 2010-01-18 20:47:37 +09:00
Kconfig irq_work: Add generic hardirq context callbacks 2010-10-18 19:58:50 +02:00
Kconfig.cpu sh: Turn on speculative return for SH7785 and SH7786 2010-02-18 18:54:18 +09:00
Kconfig.debug sh: Remove old early serial console code V2 2009-12-15 12:07:35 +09:00
Makefile sh: mach-sdk7786: update defconfig for compressed kernel image. 2010-04-26 17:45:34 +09:00