[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH] x86/traps: Misc tweaks to several printk()s
* Reword the printk() in do_guest_trap() to avoid "Unhandled general protection fault fault/trap" * Drop irrelevant file/line references. * Make some of the text more concise. * A trap with an extable entry does not warrant an error level message. * Use %ps for extable sources to provide extra context. * Always log emulated rdmsr failures, like wrmsr failures Sample new messages are: (XEN) d0v0 attempted WRMSR 0x00000174: 0x000000000000e008 -> 0x0000000000000010 (XEN) Exception [#0, ec=0000] (divide error): do_extreme_debug+0x36/0x51 ffff82d08018ca67 -> ffff82d08023cc4c (XEN) #GP[0000]: do_general_protection+0x2fbf/0x34e0 ffff82d080193407 -> ffff82d08023cd8f (XEN) d1v0 attempted RDMSR 0xdead0000 (XEN) d1v0 Unhandled exception [#13, ec=0000] general protection fault Signed-off-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> CC: Jan Beulich <JBeulich@xxxxxxxx> --- xen/arch/x86/traps.c | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/xen/arch/x86/traps.c b/xen/arch/x86/traps.c index 556c5be..2fef93d 100644 --- a/xen/arch/x86/traps.c +++ b/xen/arch/x86/traps.c @@ -521,8 +521,8 @@ static void do_guest_trap( if ( unlikely(null_trap_bounce(v, tb)) ) gprintk(XENLOG_WARNING, - "Unhandled %s fault/trap [#%d, ec=%04x]\n", - trapstr(trapnr), trapnr, regs->error_code); + "Unhandled exception [#%d, ec=%04x] %s\n", + trapnr, regs->error_code, trapstr(trapnr)); } static void instruction_done( @@ -626,8 +626,9 @@ static void do_trap(struct cpu_user_regs *regs, int use_error_code) if ( likely((fixup = search_exception_table(regs->eip)) != 0) ) { - dprintk(XENLOG_ERR, "Trap %d: %p -> %p\n", - trapnr, _p(regs->eip), _p(fixup)); + printk(XENLOG_INFO "Exception [#%d, ec=%04x] (%s): %ps %p -> %p\n", + trapnr, use_error_code ? regs->error_code : 0, trapstr(trapnr), + _p(regs->eip), _p(regs->eip), _p(fixup)); this_cpu(last_extable_addr) = regs->eip; regs->eip = fixup; return; @@ -2677,9 +2678,9 @@ static int emulate_privileged_op(struct cpu_user_regs *regs) if ( (rdmsr_safe(regs->ecx, val) != 0) || (msr_content != val) ) invalid: - gdprintk(XENLOG_WARNING, "Domain attempted WRMSR %p from " - "0x%016"PRIx64" to 0x%016"PRIx64".\n", - _p(regs->ecx), val, msr_content); + gprintk(XENLOG_WARNING, + "attempted WRMSR 0x%08x: 0x%016"PRIx64" -> 0x%016"PRIx64"\n", + regs->_ecx, val, msr_content); break; } break; @@ -2813,10 +2814,11 @@ static int emulate_privileged_op(struct cpu_user_regs *regs) case MSR_EFER: rdmsr_normal: /* Everyone can read the MSR space. */ - /* gdprintk(XENLOG_WARNING,"Domain attempted RDMSR %p.\n", - _p(regs->ecx));*/ if ( rdmsr_safe(regs->ecx, val) ) + { + gprintk(XENLOG_WARNING, "attempted RDMSR 0x%08x\n", regs->_ecx); goto fail; + } rdmsr_writeback: regs->eax = (uint32_t)val; regs->edx = (uint32_t)(val >> 32); @@ -3283,8 +3285,8 @@ void do_general_protection(struct cpu_user_regs *regs) if ( likely((fixup = search_exception_table(regs->eip)) != 0) ) { - dprintk(XENLOG_INFO, "GPF (%04x): %p -> %p\n", - regs->error_code, _p(regs->eip), _p(fixup)); + printk(XENLOG_INFO "#GP[%04x]: %ps %p -> %p\n", + regs->error_code, _p(regs->eip), _p(regs->eip) , _p(fixup)); this_cpu(last_extable_addr) = regs->eip; regs->eip = fixup; return; -- 1.7.10.4 _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |