Define the ia64 crash_stop() interrupt handler and associated routines.
IPI_CRASH_STOP conflicts with the KDB vector. This is deliberate, one
aim of the crash_stop() API is to remove all the interrupt code from
the various kernel debug patches and use the common crash_stop code
instead.
Signed-off-by: Keith Owens <[EMAIL PROTECTED]>
---
arch/ia64/kernel/smp.c | 35 +++++++++++++++++++++++++++++++++++
1 file changed, 35 insertions(+)
Index: linux/arch/ia64/kernel/smp.c
===================================================================
--- linux.orig/arch/ia64/kernel/smp.c
+++ linux/arch/ia64/kernel/smp.c
@@ -30,6 +30,7 @@
#include <linux/delay.h>
#include <linux/efi.h>
#include <linux/bitops.h>
+#include <linux/crash_stop.h>
#include <asm/atomic.h>
#include <asm/current.h>
@@ -66,6 +67,7 @@ static volatile struct call_data_struct
#define IPI_CALL_FUNC 0
#define IPI_CPU_STOP 1
+#define IPI_CRASH_STOP 2
/* This needs to be cacheline aligned because it is written to by *other*
CPUs. */
static DEFINE_PER_CPU(u64, ipi_operation) ____cacheline_aligned;
@@ -156,6 +158,16 @@ handle_IPI (int irq, void *dev_id)
stop_this_cpu();
break;
+#ifdef CONFIG_CRASH_STOP_SUPPORTED
+ case IPI_CRASH_STOP:
+ {
+ extern void smp_crash_stop_interrupt(
+ struct pt_regs *regs);
+
smp_crash_stop_interrupt(get_irq_regs());
+ }
+ break;
+#endif /* CONFIG_CRASH_STOP_SUPPORTED */
+
default:
printk(KERN_CRIT "Unknown IPI on CPU %d:
%lu\n", this_cpu, which);
break;
@@ -379,3 +391,26 @@ setup_profiling_timer (unsigned int mult
{
return -EINVAL;
}
+
+#ifdef CONFIG_CRASH_STOP_SUPPORTED
+void
+cs_arch_send_ipi(int cpu)
+{
+ send_IPI_single(cpu, IPI_CRASH_STOP);
+}
+
+void
+cs_arch_send_nmi(int cpu)
+{
+ set_mb(cs_arch_monarch_cpu, smp_processor_id());
+ platform_send_ipi(cpu, 0, IA64_IPI_DM_INIT, 0);
+}
+
+void
+smp_crash_stop_interrupt(struct pt_regs *regs)
+{
+ struct pt_regs *old_regs = set_irq_regs(regs);
+ cs_common_ipi();
+ set_irq_regs(old_regs);
+}
+#endif /* CONFIG_CRASH_STOP_SUPPORTED */
-
To unsubscribe from this list: send the line "unsubscribe linux-arch" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at http://vger.kernel.org/majordomo-info.html