[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH v8 16/20] xenctx: Fix handling of !guest_protected_mode
Start with adding the code to the 64 bit path that the 32 bit path has. Next disable the "Stack Trace" or "Call Trace". Finally allow stack dump. Signed-off-by: Don Slutz <dslutz@xxxxxxxxxxx> --- v8: A little more in the commit message. tools/xentrace/xenctx.c | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/tools/xentrace/xenctx.c b/tools/xentrace/xenctx.c index 1d5b36e..1ab837e 100644 --- a/tools/xentrace/xenctx.c +++ b/tools/xentrace/xenctx.c @@ -524,8 +524,13 @@ static guest_word_t instr_pointer(vcpu_guest_context_any_t *ctx) r += ctx->x32.user_regs.cs << NONPROT_MODE_SEGMENT_SHIFT; } else + { r = ctx->x64.user_regs.rip; + if ( !guest_protected_mode ) + r += ctx->x64.user_regs.cs << NONPROT_MODE_SEGMENT_SHIFT; + } + return r; } @@ -540,8 +545,13 @@ static guest_word_t stack_pointer(vcpu_guest_context_any_t *ctx) r += ctx->x32.user_regs.ss << NONPROT_MODE_SEGMENT_SHIFT; } else + { r = ctx->x64.user_regs.rsp; + if ( !guest_protected_mode ) + r += ctx->x64.user_regs.ss << NONPROT_MODE_SEGMENT_SHIFT; + } + return r; } @@ -894,6 +904,9 @@ static int print_stack(vcpu_guest_context_any_t *ctx, int vcpu, int width, return -1; } + if ( !guest_protected_mode ) + return 0; + if(xenctx.stack_trace) printf("Stack Trace:\n"); else @@ -1032,7 +1045,8 @@ static void dump_ctx(int vcpu) #ifndef NO_TRANSLATION if (print_code(&ctx, vcpu)) return; - if ( kernel_addr(instr_pointer(&ctx)) >= KERNEL_TEXT_ADDR ) + if ( !guest_protected_mode || + kernel_addr(instr_pointer(&ctx)) >= KERNEL_TEXT_ADDR ) if ( print_stack(&ctx, vcpu, guest_word_size, stack_pointer(&ctx)) ) return; -- 1.8.4 _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |