[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen-unstable] [IA64] stub to support dump_execution_state() on ia64
# 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
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |