svn commit: r206391 - user/jmallett/octeon/sys/mips/mips
Juli Mallett
jmallett at FreeBSD.org
Thu Apr 8 06:42:20 UTC 2010
Author: jmallett
Date: Thu Apr 8 06:42:19 2010
New Revision: 206391
URL: http://svn.freebsd.org/changeset/base/206391
Log:
o) Print pointers in vm_fault tracing more nicely.
o) Add a SYSCALL_TRACING mode which shows more human-readable syscall traces.
XXX It'd be nice to just modify the ktrace hooks to have truss-like output
to the kernel console if some option is set.
o) When logging a bad page fault, log the PDE and PTE of the bad address as
well as the pc at exception time.
Modified:
user/jmallett/octeon/sys/mips/mips/trap.c
Modified: user/jmallett/octeon/sys/mips/mips/trap.c
==============================================================================
--- user/jmallett/octeon/sys/mips/mips/trap.c Thu Apr 8 00:55:08 2010 (r206390)
+++ user/jmallett/octeon/sys/mips/mips/trap.c Thu Apr 8 06:42:19 2010 (r206391)
@@ -525,9 +525,9 @@ dofault:
--p->p_lock;
PROC_UNLOCK(p);
#ifdef VMFAULT_TRACE
- printf("vm_fault(%p (pmap %p), %x (%x), %x, %d) -> %x at pc %x\n",
- map, &vm->vm_pmap, va, trapframe->badvaddr, ftype, VM_FAULT_NORMAL,
- rv, trapframe->pc);
+ printf("vm_fault(%p (pmap %p), %p (%p), %x, %d) -> %x at pc %p\n",
+ map, &vm->vm_pmap, (void *)va, (void *)(intptr_t)trapframe->badvaddr,
+ ftype, VM_FAULT_NORMAL, rv, (void *)(intptr_t)trapframe->pc);
#endif
if (rv == KERN_SUCCESS) {
@@ -729,6 +729,13 @@ dofault:
printf("args[%d] = %#jx\n", i, (intmax_t)args[i]);
}
#endif
+#ifdef SYSCALL_TRACING
+ printf("%s(", syscallnames[code]);
+ for (i = 0; i < nargs; i++) {
+ printf("%s%#jx", i == 0 ? "" : ", ", (intmax_t)args[i]);
+ }
+ printf(")\n");
+#endif
#ifdef KTRACE
if (KTRPOINT(td, KTR_SYSCALL))
ktrsyscall(code, nargs, args);
@@ -1414,7 +1421,10 @@ log_bad_page_fault(char *msg, struct tra
log(LOG_ERR, "pc address %#jx is inaccessible, pde = %p, pte = %#x\n",
(intmax_t)pc, (void *)(intptr_t)*pdep, ptep ? *ptep : 0);
}
- /* panic("Bad trap");*/
+
+ get_mapping_info((vm_offset_t)frame->badvaddr, &pdep, &ptep);
+ log(LOG_ERR, "Page table info for bad address %#jx: pde = %p, pte = %#x\n",
+ (intmax_t)frame->badvaddr, (void *)(intptr_t)*pdep, ptep ? *ptep : 0);
}
More information about the svn-src-user
mailing list