linux/arch/alpha/kernel
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
..
.gitignore
alpha_ksyms.c
asm-offsets.c
binfmt_loader.c
console.c
core_apecs.c
core_cia.c
core_irongate.c
core_lca.c
core_marvel.c arch/alpha/kernel: Add kmalloc NULL tests 2009-11-30 15:38:19 -05:00
core_mcpcia.c
core_polaris.c
core_t2.c alpha: Fix fallout from locking changes 2009-12-14 23:55:32 +01:00
core_titan.c arch/alpha/kernel: Add kmalloc NULL tests 2009-11-30 15:38:19 -05:00
core_tsunami.c
core_wildfire.c
entry.S alpha: switch osf_sigprocmask() to use of sigprocmask() 2010-09-27 12:19:53 -07:00
err_common.c
err_ev6.c alpha: Use static const char * const where possible 2010-09-18 23:06:17 -04:00
err_ev7.c
err_impl.h
err_marvel.c alpha: Use static const char * const where possible 2010-09-18 23:06:17 -04:00
err_titan.c alpha: Use static const char * const where possible 2010-09-18 23:06:17 -04:00
es1888.c
gct.c
head.S
init_task.c alpha: use .data.init_task instead of .data.init_thread. 2009-09-24 17:16:22 -07:00
io.c
irq_alpha.c alpha: implement HW performance events on the EV67 and later CPUs 2010-08-09 20:45:04 -07:00
irq_i8259.c alpha: Fixup last users of irq_chip->typename 2009-11-30 22:51:31 -05:00
irq_impl.h alpha: remove obsolete hw_interrupt_type 2009-06-16 19:47:46 -07:00
irq_pyxis.c alpha: Fixup last users of irq_chip->typename 2009-11-30 22:51:31 -05:00
irq_srm.c alpha: Fixup last users of irq_chip->typename 2009-11-30 22:51:31 -05:00
irq.c alpha: add performance monitor interrupt counter 2010-08-09 20:45:03 -07:00
machvec_impl.h
Makefile alpha: implement HW performance events on the EV67 and later CPUs 2010-08-09 20:45:04 -07:00
module.c
osf_sys.c alpha: kill big kernel lock 2010-09-18 23:06:18 -04:00
pc873xx.c alpha: Detect Super IO chip, no IDE on Avanti, enable EPP19 2010-06-15 14:19:08 -04:00
pc873xx.h alpha: Detect Super IO chip, no IDE on Avanti, enable EPP19 2010-06-15 14:19:08 -04:00
pci_impl.h alpha: AGP update (fixes compile failure) 2009-09-24 07:21:06 -07:00
pci_iommu.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
pci-noop.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
pci-sysfs.c alpha: remove unnecessary cast from void* in assignment. 2010-09-18 23:06:17 -04:00
pci.c resource/PCI: mark struct resource as const 2010-02-22 16:16:57 -08:00
perf_event.c alpha: Fix HW performance counters to be stopped properly 2010-09-15 10:43:59 +02:00
process.c alpha: fix usp value in multithreaded coredumps 2010-09-25 14:38:13 -07:00
proto.h Fix call to replaced SuperIO functions 2010-08-31 22:45:31 -04:00
ptrace.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
setup.c alpha: bad macro expansion, parameter is member 2009-06-16 19:47:46 -07:00
signal.c Fix up more fallout form alpha signal cleanups 2010-09-30 08:37:38 -07:00
smc37c93x.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
smc37c669.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
smp.c cpumask: arch_send_call_function_ipi_mask: alpha 2009-09-24 09:34:43 +09:30
srm_env.c alpha: remove unnecessary cast from void* in assignment. 2010-09-18 23:06:17 -04:00
srmcons.c
sys_alcor.c alpha: Fixup last users of irq_chip->typename 2009-11-30 22:51:31 -05:00
sys_cabriolet.c Fix call to replaced SuperIO functions 2010-08-31 22:45:31 -04:00
sys_dp264.c alpha: remove trailing spaces in messages 2010-03-18 22:34:08 -04:00
sys_eb64p.c alpha: Fixup last users of irq_chip->typename 2009-11-30 22:51:31 -05:00
sys_eiger.c alpha: Fixup last users of irq_chip->typename 2009-11-30 22:51:31 -05:00
sys_jensen.c alpha: Fixup last users of irq_chip->typename 2009-11-30 22:51:31 -05:00
sys_marvel.c alpha: Fixup last users of irq_chip->typename 2009-11-30 22:51:31 -05:00
sys_miata.c
sys_mikasa.c alpha: Fixup last users of irq_chip->typename 2009-11-30 22:51:31 -05:00
sys_nautilus.c
sys_noritake.c alpha: Fixup last users of irq_chip->typename 2009-11-30 22:51:31 -05:00
sys_rawhide.c alpha: Fixup last users of irq_chip->typename 2009-11-30 22:51:31 -05:00
sys_ruffian.c arch/alpha/kernel/sys_ruffian.c: Use DIV_ROUND_CLOSEST 2009-11-30 15:37:25 -05:00
sys_rx164.c alpha: Fixup last users of irq_chip->typename 2009-11-30 22:51:31 -05:00
sys_sable.c alpha: Fixup last users of irq_chip->typename 2009-11-30 22:51:31 -05:00
sys_sio.c alpha: Detect Super IO chip, no IDE on Avanti, enable EPP19 2010-06-15 14:19:08 -04:00
sys_sx164.c
sys_takara.c Fix call to replaced SuperIO functions 2010-08-31 22:45:31 -04:00
sys_titan.c alpha: remove trailing spaces in messages 2010-03-18 22:34:08 -04:00
sys_wildfire.c alpha: Fixup last users of irq_chip->typename 2009-11-30 22:51:31 -05:00
systbls.S alpha: switch osf_sigprocmask() to use of sigprocmask() 2010-09-27 12:19:53 -07:00
time.c irq_work: Add generic hardirq context callbacks 2010-10-18 19:58:50 +02:00
traps.c alpha: kill big kernel lock 2010-09-18 23:06:18 -04:00
vmlinux.lds.S alpha: Fix duplicate <asm/thread_info.h> include 2009-09-27 14:46:05 -07:00