irq_work: Introduce arch_irq_work_has_interrupt()

commit c5c38ef3d7 upstream.

The nohz full code needs irq work to trigger its own interrupt so that
the subsystem can work even when the tick is stopped.

Lets introduce arch_irq_work_has_interrupt() that archs can override to
tell about their support for this ability.

Signed-off-by: Peter Zijlstra <peterz@infradead.org>
Cc: Ingo Molnar <mingo@kernel.org>
Cc: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com>
This commit is contained in:
Peter Zijlstra 2014-09-06 15:43:02 +02:00 committed by Alibek Omarov
parent f52d7ef05a
commit f25a5ec582
31 changed files with 41 additions and 0 deletions

View File

@ -5,3 +5,4 @@ generic-y += exec.h
generic-y += trace_clock.h
generic-y += preempt.h
generic-y += hash.h
generic-y += irq_work.h

View File

@ -18,6 +18,7 @@ generic-y += ioctl.h
generic-y += ioctls.h
generic-y += ipcbuf.h
generic-y += irq_regs.h
generic-y += irq_work.h
generic-y += kmap_types.h
generic-y += kvm_para.h
generic-y += local.h

View File

@ -10,6 +10,7 @@ generic-y += exec.h
generic-y += ioctl.h
generic-y += ipcbuf.h
generic-y += irq_regs.h
generic-y += irq_work.h
generic-y += kdebug.h
generic-y += local.h
generic-y += local64.h

View File

@ -17,6 +17,7 @@ generic-y += ioctl.h
generic-y += ioctls.h
generic-y += ipcbuf.h
generic-y += irq_regs.h
generic-y += irq_work.h
generic-y += kdebug.h
generic-y += kmap_types.h
generic-y += kvm_para.h

View File

@ -9,6 +9,7 @@ generic-y += exec.h
generic-y += futex.h
generic-y += preempt.h
generic-y += irq_regs.h
generic-y += irq_work.h
generic-y += param.h
generic-y += local.h
generic-y += local64.h

View File

@ -14,6 +14,7 @@ generic-y += hw_irq.h
generic-y += ioctl.h
generic-y += ipcbuf.h
generic-y += irq_regs.h
generic-y += irq_work.h
generic-y += kdebug.h
generic-y += kmap_types.h
generic-y += kvm_para.h

View File

@ -21,6 +21,7 @@ generic-y += ioctl.h
generic-y += ioctls.h
generic-y += ipcbuf.h
generic-y += irq_regs.h
generic-y += irq_work.h
generic-y += kdebug.h
generic-y += kmap_types.h
generic-y += local.h

View File

@ -14,3 +14,4 @@ generic-y += trace_clock.h
generic-y += vga.h
generic-y += xor.h
generic-y += preempt.h
generic-y += irq_work.h

View File

@ -4,3 +4,4 @@ generic-y += exec.h
generic-y += trace_clock.h
generic-y += preempt.h
generic-y += hash.h
generic-y += irq_work.h

View File

@ -23,6 +23,7 @@ generic-y += ioctls.h
generic-y += iomap.h
generic-y += ipcbuf.h
generic-y += irq_regs.h
generic-y += irq_work.h
generic-y += kdebug.h
generic-y += kmap_types.h
generic-y += local64.h

View File

@ -3,6 +3,7 @@ generic-y += clkdev.h
generic-y += exec.h
generic-y += kvm_para.h
generic-y += trace_clock.h
generic-y += irq_work.h
generic-y += preempt.h
generic-y += vtime.h
generic-y += hash.h

View File

@ -5,3 +5,4 @@ generic-y += module.h
generic-y += trace_clock.h
generic-y += preempt.h
generic-y += hash.h
generic-y += irq_work.h

View File

@ -11,6 +11,7 @@ generic-y += hw_irq.h
generic-y += ioctl.h
generic-y += ipcbuf.h
generic-y += irq_regs.h
generic-y += irq_work.h
generic-y += kdebug.h
generic-y += kmap_types.h
generic-y += kvm_para.h

View File

@ -18,6 +18,7 @@ generic-y += ioctl.h
generic-y += ioctls.h
generic-y += ipcbuf.h
generic-y += irq_regs.h
generic-y += irq_work.h
generic-y += kdebug.h
generic-y += kmap_types.h
generic-y += kvm_para.h

View File

@ -3,6 +3,7 @@ generic-y += barrier.h
generic-y += clkdev.h
generic-y += exec.h
generic-y += hash.h
generic-y += irq_work.h
generic-y += trace_clock.h
generic-y += syscalls.h
generic-y += preempt.h

View File

@ -15,3 +15,4 @@ generic-y += preempt.h
generic-y += ucontext.h
generic-y += xor.h
generic-y += hash.h
generic-y += irq_work.h

View File

@ -5,3 +5,4 @@ generic-y += exec.h
generic-y += hash.h
generic-y += trace_clock.h
generic-y += preempt.h
generic-y += irq_work.h

View File

@ -30,6 +30,7 @@ generic-y += ioctl.h
generic-y += ioctls.h
generic-y += ipcbuf.h
generic-y += irq_regs.h
generic-y += irq_work.h
generic-y += kdebug.h
generic-y += kmap_types.h
generic-y += kvm_para.h

View File

@ -4,6 +4,7 @@ generic-y += word-at-a-time.h auxvec.h user.h cputime.h emergency-restart.h \
segment.h topology.h vga.h device.h percpu.h hw_irq.h mutex.h \
div64.h irq_regs.h kdebug.h kvm_para.h local64.h local.h param.h \
poll.h xor.h clkdev.h exec.h
generic-y += irq_work.h
generic-y += trace_clock.h
generic-y += preempt.h
generic-y += hash.h

View File

@ -5,3 +5,4 @@ generic-y += trace_clock.h
generic-y += preempt.h
generic-y += vtime.h
generic-y += hash.h
generic-y += irq_work.h

View File

@ -4,3 +4,4 @@ generic-y += clkdev.h
generic-y += trace_clock.h
generic-y += preempt.h
generic-y += hash.h
generic-y += irq_work.h

View File

@ -7,4 +7,5 @@ generic-y += hash.h
generic-y += trace_clock.h
generic-y += xor.h
generic-y += preempt.h
generic-y += irq_work.h

View File

@ -11,6 +11,7 @@ generic-y += fcntl.h
generic-y += ioctl.h
generic-y += ipcbuf.h
generic-y += irq_regs.h
generic-y += irq_work.h
generic-y += kvm_para.h
generic-y += local.h
generic-y += local64.h

View File

@ -10,6 +10,7 @@ generic-y += linkage.h
generic-y += local64.h
generic-y += mutex.h
generic-y += irq_regs.h
generic-y += irq_work.h
generic-y += local.h
generic-y += module.h
generic-y += serial.h

View File

@ -16,6 +16,7 @@ generic-y += ioctl.h
generic-y += ioctls.h
generic-y += ipcbuf.h
generic-y += irq_regs.h
generic-y += irq_work.h
generic-y += local.h
generic-y += local64.h
generic-y += msgbuf.h

View File

@ -5,4 +5,5 @@ generic-y += switch_to.h clkdev.h
generic-y += trace_clock.h
generic-y += preempt.h
generic-y += hash.h
generic-y += irq_work.h
generic-y += barrier.h

View File

@ -21,6 +21,7 @@ generic-y += ioctl.h
generic-y += ioctls.h
generic-y += ipcbuf.h
generic-y += irq_regs.h
generic-y += irq_work.h
generic-y += kdebug.h
generic-y += kmap_types.h
generic-y += local.h

View File

@ -5,3 +5,4 @@ genhdr-y += unistd_64.h
genhdr-y += unistd_x32.h
generic-y += clkdev.h
generic-y += irq_work.h

View File

@ -11,6 +11,7 @@ generic-y += fcntl.h
generic-y += hardirq.h
generic-y += ioctl.h
generic-y += irq_regs.h
generic-y += irq_work.h
generic-y += kdebug.h
generic-y += kmap_types.h
generic-y += kvm_para.h

View File

@ -0,0 +1,10 @@
#ifndef __ASM_IRQ_WORK_H
#define __ASM_IRQ_WORK_H
static inline bool arch_irq_work_has_interrupt(void)
{
return false;
}
#endif /* __ASM_IRQ_WORK_H */

View File

@ -36,6 +36,8 @@ void irq_work_run(void);
void irq_work_sync(struct irq_work *work);
#ifdef CONFIG_IRQ_WORK
#include <asm/irq_work.h>
bool irq_work_needs_cpu(void);
#else
static inline bool irq_work_needs_cpu(void) { return false; }