[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [PATCH 2/3] x86/PV: replace assertions in '0' debug key stack dumping
While it was me to add them, I'm afraid I don't see justification for the assertions: A vCPU may very well have got preempted while in user mode. Limit compat guest user mode stack dumps to the containing page (like is done when using do_page_walk()), and suppress their dumping altogether for 64-bit Dom0. Fixes: cc0de53a903c ("x86: improve output resulting from sending '0' over serial") Signed-off-by: Jan Beulich <jbeulich@xxxxxxxx> --- An alternative to suppressing the dump for 64-bit would be to make do_page_fault() guest-user-mode aware. --- a/xen/arch/x86/traps.c +++ b/xen/arch/x86/traps.c @@ -254,7 +254,6 @@ static void compat_show_guest_stack(stru struct vcpu *vcpu; unsigned long mfn; - ASSERT(guest_kernel_mode(v, regs)); mfn = read_cr3() >> PAGE_SHIFT; for_each_vcpu( v->domain, vcpu ) if ( pagetable_get_pfn(vcpu->arch.guest_table) == mfn ) @@ -269,6 +268,8 @@ static void compat_show_guest_stack(stru } mask = PAGE_SIZE; } + else if ( !guest_kernel_mode(v, regs) ) + mask = PAGE_SIZE; } for ( i = 0; i < debug_stack_lines * 8; i++ ) @@ -328,7 +329,12 @@ static void show_guest_stack(struct vcpu { struct vcpu *vcpu; - ASSERT(guest_kernel_mode(v, regs)); + if ( !guest_kernel_mode(v, regs) ) + { + printk("User mode stack\n"); + return; + } + vcpu = maddr_get_owner(read_cr3()) == v->domain ? v : NULL; if ( !vcpu ) {
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |