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