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 <rlibby@gmail.com>
Reviewed by:	kib
MFC after:	1 week
Sponsored by:	Dell EMC Isilon
Differential Revision:	https://reviews.freebsd.org/D9645
This commit is contained in:
Mark Johnston 2017-02-21 21:06:12 +00:00
parent 1d06be4ab3
commit a384a37df8

View File

@ -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);