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
..
2008-12-04 09:17:15 -08:00
2010-07-24 09:58:22 -06:00
2008-12-04 09:17:12 -08:00
2008-12-04 09:17:21 -08:00
2009-11-16 02:54:07 -08:00
2010-07-24 09:58:22 -06:00
2009-11-27 17:33:43 -08:00
2010-07-24 09:58:22 -06:00
2008-12-04 09:17:21 -08:00
2010-07-24 09:58:22 -06:00
2008-12-04 09:17:21 -08:00
2009-12-02 22:28:49 -08:00
2010-03-30 22:02:32 +09:00
2009-06-16 04:56:28 -07:00
2010-03-02 07:56:44 -08:00
2009-08-10 09:35:00 +02:00
2009-06-16 04:56:22 -07:00
2008-12-04 09:17:21 -08:00
2008-12-04 09:17:21 -08:00
2008-12-04 09:17:21 -08:00
2010-03-03 08:08:49 -08:00
2009-12-11 00:44:47 -08:00
2008-12-04 09:17:20 -08:00
2008-12-04 09:17:21 -08:00
2008-12-04 09:17:21 -08:00
2010-04-12 22:37:26 -07:00
2008-12-04 09:17:21 -08:00
2009-11-02 04:19:42 -08:00
2009-06-16 04:56:11 -07:00
2010-08-08 22:07:36 -07:00
2010-03-30 22:02:32 +09:00
2008-12-04 09:17:21 -08:00
2008-12-04 09:17:21 -08:00
2009-08-17 18:32:10 -07:00
2009-09-21 06:27:08 +02:00
2008-12-04 09:17:21 -08:00
2010-03-30 22:02:32 +09:00
2010-07-24 09:58:22 -06:00
2009-08-17 18:32:10 -07:00
2010-04-14 02:04:29 -07:00
2008-09-19 21:17:59 -07:00
2008-12-04 09:17:21 -08:00
2008-12-04 09:17:21 -08:00
2010-09-22 16:35:09 -04:00
2009-01-28 17:27:14 -08:00
2010-05-20 21:04:19 -05:00
2010-05-20 21:04:19 -05:00
2010-03-30 22:02:32 +09:00
2010-04-14 02:04:29 -07:00
2009-09-28 14:39:58 -07:00
2009-12-16 07:20:19 -08:00
2010-03-30 22:02:32 +09:00
2010-03-30 22:02:32 +09:00
2010-03-30 22:02:32 +09:00
2010-09-22 16:35:09 -04:00
2010-07-14 17:14:00 +10:00
2008-12-04 09:17:21 -08:00
2010-09-22 16:35:09 -04:00
2009-01-02 19:32:59 -08:00
2010-04-14 02:04:29 -07:00
2010-07-24 09:58:22 -06:00
2010-07-24 09:58:22 -06:00
2010-07-24 09:58:22 -06:00
2009-06-16 04:56:49 -07:00
2010-05-18 16:10:44 -06:00
2010-07-24 09:58:22 -06:00
2010-07-24 09:58:22 -06:00
2010-05-18 16:10:44 -06:00
2010-07-24 09:58:22 -06:00
2010-07-24 09:58:22 -06:00
2010-07-24 09:58:22 -06:00
2008-12-04 09:17:21 -08:00
2010-07-24 09:58:22 -06:00
2008-12-04 09:17:21 -08:00
2010-07-24 09:58:22 -06:00
2010-03-02 07:56:44 -08:00
2010-10-18 19:58:50 +02:00
2010-09-23 08:02:09 +02:00
2010-07-24 09:58:22 -06:00
2010-07-24 09:58:22 -06:00
2010-08-17 18:07:43 -07:00
2010-08-28 13:55:31 -07:00
2009-08-17 18:32:10 -07:00
2010-07-24 09:49:13 -06:00
2010-07-14 17:08:03 -06:00
2010-07-24 09:58:22 -06:00
2010-07-14 17:08:03 -06:00
2010-07-24 09:58:22 -06:00
2010-07-24 09:58:22 -06:00
2010-03-31 18:05:05 -07:00
2010-03-31 18:05:05 -07:00
2008-12-04 09:17:21 -08:00
2008-12-04 09:17:20 -08:00
2010-04-20 00:48:37 -07:00
2010-07-24 09:58:22 -06:00
2010-02-10 11:47:57 -08:00
2010-03-30 22:02:32 +09:00
2010-09-21 22:30:13 -07:00
2010-09-21 22:30:13 -07:00
2010-09-21 22:30:13 -07:00
2009-11-02 04:19:42 -08:00
2010-04-13 00:28:45 -07:00
2009-01-08 16:59:01 -08:00
2009-12-15 16:28:13 +10:30
2008-12-04 09:17:21 -08:00
2008-12-04 09:17:21 -08:00
2010-04-21 03:08:11 -07:00
2008-12-04 09:17:21 -08:00
2010-03-30 22:02:32 +09:00
2010-06-04 16:17:37 -07:00
2010-02-12 12:08:51 -08:00
2010-03-30 22:02:32 +09:00
2009-08-18 23:44:08 -07:00
2008-12-04 09:17:21 -08:00
2008-12-04 09:17:21 -08:00
2010-08-16 15:04:29 -07:00
2010-08-13 16:53:13 -07:00
2010-09-11 08:01:09 -07:00
2010-08-17 18:07:43 -07:00
2010-03-03 08:08:49 -08:00
2010-03-27 21:11:56 -07:00
2010-08-16 15:04:29 -07:00
2010-08-16 15:04:29 -07:00
2010-03-12 15:52:32 -08:00
2008-09-19 21:18:01 -07:00
2010-07-24 09:58:22 -06:00
2010-07-24 09:58:22 -06:00
2009-11-02 04:19:42 -08:00
2008-12-04 09:17:21 -08:00
2009-07-12 12:22:34 -07:00
2010-04-21 03:08:11 -07:00
2010-02-19 15:19:52 -08:00
2010-06-25 11:17:57 -07:00
2008-12-04 09:17:20 -08:00
2008-12-04 09:17:21 -08:00
2010-09-08 20:57:59 -07:00
2010-04-19 13:46:48 -07:00
2010-03-27 21:11:56 -07:00
2010-03-27 21:11:56 -07:00
2008-12-04 09:17:21 -08:00
2010-03-30 22:02:32 +09:00
2009-01-06 12:46:46 -08:00
2009-12-11 01:07:53 -08:00
2010-04-12 23:46:17 -07:00
2010-09-08 20:57:59 -07:00
2008-12-04 09:17:21 -08:00
2008-07-17 21:37:46 -07:00
2008-07-17 21:37:46 -07:00