# HG changeset patch
# User kaf24@xxxxxxxxxxxxxxxxxxxx
# Node ID 59e05ddfd0ad63ebe31634d65905759f66dd9e54
# Parent 411a3c01bb40681731ad50fd3b8c5d7972baf36d
[IA64] stub to support dump_execution_state() on ia64
Also implement on_selected_cpus() for ia64.
Signed-off-by: Alex Williamson <alex.williamson@xxxxxx>
---
xen/arch/ia64/linux-xen/smp.c | 36 ++++++++++++++++++++++++++++++++++++
xen/include/asm-ia64/debugger.h | 9 ++++++++-
xen/include/asm-ia64/xenprocessor.h | 2 ++
3 files changed, 46 insertions(+), 1 deletion(-)
diff -r 411a3c01bb40 -r 59e05ddfd0ad xen/arch/ia64/linux-xen/smp.c
--- a/xen/arch/ia64/linux-xen/smp.c Tue Jun 20 18:51:46 2006 +0100
+++ b/xen/arch/ia64/linux-xen/smp.c Wed Jun 21 10:56:20 2006 +0100
@@ -421,6 +421,42 @@ smp_call_function (void (*func) (void *i
}
EXPORT_SYMBOL(smp_call_function);
+#ifdef XEN
+int
+on_selected_cpus(cpumask_t selected, void (*func) (void *info), void *info,
+ int retry, int wait)
+{
+ struct call_data_struct data;
+ unsigned int cpu, nr_cpus = cpus_weight(selected);
+
+ ASSERT(local_irq_is_enabled());
+
+ if (!nr_cpus)
+ return 0;
+
+ data.func = func;
+ data.info = info;
+ data.wait = wait;
+ atomic_set(&data.started, 0);
+ atomic_set(&data.finished, 0);
+
+ spin_lock(&call_lock);
+
+ call_data = &data;
+ wmb();
+
+ for_each_cpu_mask(cpu, selected)
+ send_IPI_single(cpu, IPI_CALL_FUNC);
+
+ while (atomic_read(wait ? &data.finished : &data.started) != nr_cpus)
+ cpu_relax();
+
+ spin_unlock(&call_lock);
+
+ return 0;
+}
+#endif
+
/*
* this function calls the 'stop' function on all other CPUs in the system.
*/
diff -r 411a3c01bb40 -r 59e05ddfd0ad xen/include/asm-ia64/debugger.h
--- a/xen/include/asm-ia64/debugger.h Tue Jun 20 18:51:46 2006 +0100
+++ b/xen/include/asm-ia64/debugger.h Wed Jun 21 10:56:20 2006 +0100
@@ -41,7 +41,14 @@
#include <xen/gdbstub.h>
void show_registers(struct cpu_user_regs *regs);
-#define show_execution_state show_registers
+void dump_stack(void);
+
+static inline void
+show_execution_state(struct cpu_user_regs *regs)
+{
+ show_registers(regs);
+ dump_stack();
+}
// NOTE: on xen struct pt_regs = struct cpu_user_regs
// see include/asm-ia64/linux-xen/asm/ptrace.h
diff -r 411a3c01bb40 -r 59e05ddfd0ad xen/include/asm-ia64/xenprocessor.h
--- a/xen/include/asm-ia64/xenprocessor.h Tue Jun 20 18:51:46 2006 +0100
+++ b/xen/include/asm-ia64/xenprocessor.h Wed Jun 21 10:56:20 2006 +0100
@@ -237,4 +237,6 @@ typedef union {
u64 itir;
} ia64_itir_t;
+#define dump_execution_state() printk("FIXME: implement ia64
dump_execution_state()\n");
+
#endif // _ASM_IA64_XENPROCESSOR_H
_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog
|