aboutsummaryrefslogtreecommitdiff
path: root/sys/amd64
diff options
context:
space:
mode:
authorPeter Wemm <peter@FreeBSD.org>2006-04-21 04:50:18 +0000
committerPeter Wemm <peter@FreeBSD.org>2006-04-21 04:50:18 +0000
commit9bbf94367ceffb1b4c2215da0f8a250b738755f4 (patch)
tree98ec38040777e1647469bcbeb8a88d82937b27b4 /sys/amd64
parente9ca6fe47ef888298b2482cba9f35daf6c1c0d8b (diff)
downloadsrc-9bbf94367ceffb1b4c2215da0f8a250b738755f4.tar.gz
src-9bbf94367ceffb1b4c2215da0f8a250b738755f4.zip
Oops. Minidumps were developed on 6.x, in without the small pv entry code.
Add some strategic dump_add_page()/dump_drop_page() lines to include pv chunks in the minidumps - these operate in the direct map region like UMA.
Notes
Notes: svn path=/head/; revision=157912
Diffstat (limited to 'sys/amd64')
-rw-r--r--sys/amd64/amd64/pmap.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/sys/amd64/amd64/pmap.c b/sys/amd64/amd64/pmap.c
index eb7dd9c12310..91292e46710f 100644
--- a/sys/amd64/amd64/pmap.c
+++ b/sys/amd64/amd64/pmap.c
@@ -1565,6 +1565,7 @@ free_pv_entry(pmap_t pmap, pv_entry_t pv)
/* entire chunk is free, return it */
TAILQ_REMOVE(&pmap->pm_pvchunk, pc, pc_list);
m = PHYS_TO_VM_PAGE(DMAP_TO_PHYS((vm_offset_t)pc));
+ dump_drop_page(m->phys_addr);
vm_page_lock_queues();
vm_page_free(m);
vm_page_unlock_queues();
@@ -1645,6 +1646,7 @@ get_pv_entry(pmap_t pmap, int try)
PV_STAT(pc_chunk_count++);
PV_STAT(pc_chunk_allocs++);
colour++;
+ dump_add_page(m->phys_addr);
pc = (void *)PHYS_TO_DMAP(m->phys_addr);
pc->pc_pmap = pmap;
pc->pc_map[0] = PC_FREE0 & ~1ul; /* preallocated bit 0 */
@@ -2794,6 +2796,7 @@ pmap_remove_pages(pmap_t pmap)
PV_STAT(pc_chunk_frees++);
TAILQ_REMOVE(&pmap->pm_pvchunk, pc, pc_list);
m = PHYS_TO_VM_PAGE(DMAP_TO_PHYS((vm_offset_t)pc));
+ dump_drop_page(m->phys_addr);
vm_page_lock_queues();
vm_page_free(m);
vm_page_unlock_queues();