arm64: Tell irq work about self IPI support
ARM64 irq work self-IPI support depends on __smp_cross_call to point to some relevant IRQ controller operations. This information should be available after the call to init_IRQ(). Lets implement arch_irq_work_has_interrupt() accordingly. Acked-by: Peter Zijlstra (Intel) <peterz@infradead.org> Acked-by: Catalin Marinas <catalin.marinas@arm.com> 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> Cc: Will Deacon <will.deacon@arm.com> Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com>
This commit is contained in:
parent
09f6edd424
commit
3631073659
arch/arm64
@ -19,7 +19,6 @@ generic-y += ioctl.h
|
|||||||
generic-y += ioctls.h
|
generic-y += ioctls.h
|
||||||
generic-y += ipcbuf.h
|
generic-y += ipcbuf.h
|
||||||
generic-y += irq_regs.h
|
generic-y += irq_regs.h
|
||||||
generic-y += irq_work.h
|
|
||||||
generic-y += kdebug.h
|
generic-y += kdebug.h
|
||||||
generic-y += kmap_types.h
|
generic-y += kmap_types.h
|
||||||
generic-y += kvm_para.h
|
generic-y += kvm_para.h
|
||||||
|
11
arch/arm64/include/asm/irq_work.h
Normal file
11
arch/arm64/include/asm/irq_work.h
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
#ifndef __ASM_IRQ_WORK_H
|
||||||
|
#define __ASM_IRQ_WORK_H
|
||||||
|
|
||||||
|
#include <asm/smp.h>
|
||||||
|
|
||||||
|
static inline bool arch_irq_work_has_interrupt(void)
|
||||||
|
{
|
||||||
|
return !!__smp_cross_call;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif /* __ASM_IRQ_WORK_H */
|
@ -48,6 +48,8 @@ extern void smp_init_cpus(void);
|
|||||||
*/
|
*/
|
||||||
extern void set_smp_cross_call(void (*)(const struct cpumask *, unsigned int));
|
extern void set_smp_cross_call(void (*)(const struct cpumask *, unsigned int));
|
||||||
|
|
||||||
|
extern void (*__smp_cross_call)(const struct cpumask *, unsigned int);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Called from the secondary holding pen, this is the secondary CPU entry point.
|
* Called from the secondary holding pen, this is the secondary CPU entry point.
|
||||||
*/
|
*/
|
||||||
|
@ -470,7 +470,7 @@ void __init smp_prepare_cpus(unsigned int max_cpus)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void (*__smp_cross_call)(const struct cpumask *, unsigned int);
|
void (*__smp_cross_call)(const struct cpumask *, unsigned int);
|
||||||
|
|
||||||
void __init set_smp_cross_call(void (*fn)(const struct cpumask *, unsigned int))
|
void __init set_smp_cross_call(void (*fn)(const struct cpumask *, unsigned int))
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user