Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

arm: Tell irq work about self IPI support

ARM irq work IPI support depends on SMP support. That information is
partly known at early boottime. Lets implement
arch_irq_work_has_interrupt() accordingly.

Acked-by: Peter Zijlstra (Intel) <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: Russell King <linux@arm.linux.org.uk>
Cc: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com>

+12 -2
-1
arch/arm/include/asm/Kbuild
··· 11 11 generic-y += ioctl.h 12 12 generic-y += ipcbuf.h 13 13 generic-y += irq_regs.h 14 - generic-y += irq_work.h 15 14 generic-y += kdebug.h 16 15 generic-y += local.h 17 16 generic-y += local64.h
+11
arch/arm/include/asm/irq_work.h
··· 1 + #ifndef __ASM_ARM_IRQ_WORK_H 2 + #define __ASM_ARM_IRQ_WORK_H 3 + 4 + #include <asm/smp_plat.h> 5 + 6 + static inline bool arch_irq_work_has_interrupt(void) 7 + { 8 + return is_smp(); 9 + } 10 + 11 + #endif /* _ASM_ARM_IRQ_WORK_H */
+1 -1
arch/arm/kernel/smp.c
··· 503 503 #ifdef CONFIG_IRQ_WORK 504 504 void arch_irq_work_raise(void) 505 505 { 506 - if (is_smp()) 506 + if (arch_irq_work_has_interrupt()) 507 507 smp_cross_call(cpumask_of(smp_processor_id()), IPI_IRQ_WORK); 508 508 } 509 509 #endif