[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH v9 16/18] 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> --- 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 8ae4f9b..6a07981 100644 --- a/tools/xentrace/xenctx.c +++ b/tools/xentrace/xenctx.c @@ -498,8 +498,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; } @@ -514,8 +519,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; } @@ -867,6 +877,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 @@ -1005,7 +1018,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 |