[patch 03/14] x86/apic: Implement default single target IPI function

Thomas Gleixner
2015-11-04T22:57:48Z

[-- Attachment #1: x86-apic--Implement-default-single-target-IPI-function --]
[-- Type: text/plain, Size: 1364 bytes --]

apic_physflat and bigsmp_apic can share that implementation.

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
arch/x86/include/asm/ipi.h | 1 +
arch/x86/kernel/apic/ipi.c | 10 ++++++++++
2 files changed, 11 insertions(+)

Index: linux/arch/x86/include/asm/ipi.h
===================================================================
--- linux.orig/arch/x86/include/asm/ipi.h
+++ linux/arch/x86/include/asm/ipi.h
@@ -119,6 +119,7 @@ static inline void
native_apic_mem_write(APIC_ICR, cfg);
}

+extern void default_send_IPI_single_phys(int cpu, int vector);
extern void default_send_IPI_mask_sequence_phys(const struct cpumask *mask,
int vector);
extern void default_send_IPI_mask_allbutself_phys(const struct cpumask *mask,
Index: linux/arch/x86/kernel/apic/ipi.c
===================================================================
--- linux.orig/arch/x86/kernel/apic/ipi.c
+++ linux/arch/x86/kernel/apic/ipi.c
@@ -18,6 +18,16 @@
#include <asm/proto.h>
#include <asm/ipi.h>

+void default_send_IPI_single_phys(int cpu, int vector)
+{
+ unsigned long flags;
+
+ local_irq_save(flags);
+ __default_send_IPI_dest_field(per_cpu(x86_cpu_to_apicid, cpu),
+ vector, APIC_DEST_PHYSICAL);
+ local_irq_restore(flags);
+}
+
void default_send_IPI_mask_sequence_phys(const struct cpumask *mask, int vector)
{
unsigned long query_cpu;