This adds the DUMP_VECTOR interrupt.
arch/i386/kernel/smp.c | 15 +++++++++++++++
arch/i386/mach-generic/irq_vectors.h | 1 +
include/asm-i386/smp.h | 1 +
3 files changed, 17 insertions(+)
diff -Naur linux-2.5.41.orig/arch/i386/kernel/smp.c linux-2.5.41.lkcd/arch/i386/kernel/smp.c
--- linux-2.5.41.orig/arch/i386/kernel/smp.c Mon Oct 7 11:23:24 2002
+++ linux-2.5.41.lkcd/arch/i386/kernel/smp.c Tue Oct 8 01:37:19 2002
@@ -19,6 +19,8 @@
#include <linux/mc146818rtc.h>
#include <linux/cache.h>
#include <linux/interrupt.h>
+#include <linux/module.h>
+#include <linux/dump.h>
#include <asm/mtrr.h>
#include <asm/pgalloc.h>
@@ -143,6 +145,13 @@
*/
cfg = __prepare_ICR(shortcut, vector);
+ if (vector == DUMP_VECTOR) {
+ /*
+ * Setup DUMP IPI to be delivered as an NMI
+ */
+ cfg = (cfg&~APIC_VECTOR_MASK)|APIC_DM_NMI;
+ }
+
/*
* Send the IPI. The write to APIC_ICR fires this off.
*/
@@ -504,6 +513,11 @@
do_flush_tlb_all_local();
}
+void dump_send_ipi(void)
+{
+ send_IPI_allbutself(DUMP_VECTOR);
+}
+
/*
* this function sends a 'reschedule' IPI to another CPU.
* it goes straight through and wastes no time serializing
@@ -654,3 +668,4 @@
}
}
+EXPORT_SYMBOL(dump_send_ipi);
diff -Naur linux-2.5.41.orig/arch/i386/mach-generic/irq_vectors.h linux-2.5.41.lkcd/arch/i386/mach-generic/irq_vectors.h
--- linux-2.5.41.orig/arch/i386/mach-generic/irq_vectors.h Mon Oct 7 11:23:37 2002
+++ linux-2.5.41.lkcd/arch/i386/mach-generic/irq_vectors.h Tue Oct 8 01:15:13 2002
@@ -48,6 +48,7 @@
#define INVALIDATE_TLB_VECTOR 0xfd
#define RESCHEDULE_VECTOR 0xfc
#define CALL_FUNCTION_VECTOR 0xfb
+#define DUMP_VECTOR 0xfa
#define THERMAL_APIC_VECTOR 0xf0
/*
diff -Naur linux-2.5.41.orig/include/asm-i386/smp.h linux-2.5.41.lkcd/include/asm-i386/smp.h
--- linux-2.5.41.orig/include/asm-i386/smp.h Mon Oct 7 11:23:22 2002
+++ linux-2.5.41.lkcd/include/asm-i386/smp.h Tue Oct 8 01:15:13 2002
@@ -60,6 +60,7 @@
extern int cpu_sibling_map[];
extern void smp_flush_tlb(void);
+extern void dump_send_ipi(void);
extern void smp_message_irq(int cpl, void *dev_id, struct pt_regs *regs);
extern void smp_send_reschedule(int cpu);
extern void smp_send_reschedule_all(void);
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
This archive was generated by hypermail 2b29 : Tue Oct 15 2002 - 22:00:38 EST