Author: markj
Date: Tue Feb 21 21:06:12 2017
New Revision: 314057
URL: https://svnweb.freebsd.org/changeset/base/314057

Log:
  ddb show pte: use pmap of kdb_thread
  
  show pte from the pmap of the process of the current DDB thread, instead
  of necessarily the PCPU pmap.
  
  Submitted by: Ryan Libby <rli...@gmail.com>
  Reviewed by:  kib
  MFC after:    1 week
  Sponsored by: Dell EMC Isilon
  Differential Revision:        https://reviews.freebsd.org/D9645

Modified:
  head/sys/amd64/amd64/pmap.c

Modified: head/sys/amd64/amd64/pmap.c
==============================================================================
--- head/sys/amd64/amd64/pmap.c Tue Feb 21 21:01:01 2017        (r314056)
+++ head/sys/amd64/amd64/pmap.c Tue Feb 21 21:06:12 2017        (r314057)
@@ -7239,6 +7239,7 @@ pmap_quick_remove_page(vm_offset_t addr)
 
 #include "opt_ddb.h"
 #ifdef DDB
+#include <sys/kdb.h>
 #include <ddb/ddb.h>
 
 DB_SHOW_COMMAND(pte, pmap_print_pte)
@@ -7250,13 +7251,17 @@ DB_SHOW_COMMAND(pte, pmap_print_pte)
        pt_entry_t *pte, PG_V;
        vm_offset_t va;
 
-       if (have_addr) {
-               va = (vm_offset_t)addr;
-               pmap = PCPU_GET(curpmap); /* XXX */
-       } else {
+       if (!have_addr) {
                db_printf("show pte addr\n");
                return;
        }
+       va = (vm_offset_t)addr;
+
+       if (kdb_thread != NULL)
+               pmap = vmspace_pmap(kdb_thread->td_proc->p_vmspace);
+       else
+               pmap = PCPU_GET(curpmap);
+
        PG_V = pmap_valid_bit(pmap);
        pml4 = pmap_pml4e(pmap, va);
        db_printf("VA %#016lx pml4e %#016lx", va, *pml4);
_______________________________________________
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to