# HG changeset patch # User yamahata@xxxxxxxxxxxxx # Date 1195714002 -32400 # Node ID 7d0e55f5a6075bd5af846903e386a6a640f4bf8c # Parent a734b0e01f127f6fe8466c49b325e95347219fc1 make register dumper print VTI_DEBUG info. PATCHNAME: debug_vti_debug_print Signed-off-by: Isaku Yamahata diff -r a734b0e01f12 -r 7d0e55f5a607 xen/arch/ia64/linux-xen/process-linux-xen.c --- a/xen/arch/ia64/linux-xen/process-linux-xen.c Thu Sep 27 11:33:01 2007 +0900 +++ b/xen/arch/ia64/linux-xen/process-linux-xen.c Thu Nov 22 15:46:42 2007 +0900 @@ -116,6 +116,36 @@ EXPORT_SYMBOL(dump_stack); EXPORT_SYMBOL(dump_stack); #ifdef XEN +#ifdef VTI_DEBUG +static void +ivt_debug_print(int i, const struct ivt_debug* ivt_debug) +{ + printk("%03d: iip 0x%016lx ipsr 0x%016lx ifa 0x%016lx\n" + " vec %02ld\n", + i, + ivt_debug->iip, + ivt_debug->ipsr, + ivt_debug->ifa, + ivt_debug->vector); +} + +static void +vmx_ivt_debug_print(struct vcpu* v) +{ + unsigned int i; + unsigned int current_idx = + v->arch.arch_vmx.ivt_current / sizeof(struct ivt_debug); + for (i = current_idx; i < IVT_DEBUG_MAX; i++) + ivt_debug_print(i, &v->arch.arch_vmx.ivt_debug[i]); + for (i = 0; i < current_idx; i++) + ivt_debug_print(i, &v->arch.arch_vmx.ivt_debug[i]); +} +#else +#define vmx_ivt_debug_print(v) do{ } while (0) +#endif +#endif + +#ifdef XEN void show_registers(struct pt_regs *regs) #else @@ -137,6 +167,8 @@ show_regs (struct pt_regs *regs) printk("d 0x%p domid %d\n", d, d->domain_id); printk("vcpu 0x%p vcpu %d\n", vcpu, vcpu->vcpu_id); + if (VMX_DOMAIN(vcpu)) + vmx_ivt_debug_print(vcpu); } printk("\nCPU %d\n", smp_processor_id()); printk("psr : %016lx ifs : %016lx ip : [<%016lx>]\n",