summaryrefslogtreecommitdiffstats
path: root/sys/vm
diff options
context:
space:
mode:
authorps <ps@FreeBSD.org>2006-05-31 22:55:23 +0000
committerps <ps@FreeBSD.org>2006-05-31 22:55:23 +0000
commitb2b51c60920dc0eb173117c8cdb60b2942f80f3d (patch)
treedbd8757b7fa47e39225412fc926f71e20a824bd8 /sys/vm
parent4e501fd8a3d7b1224960a895553cb7554ab5263c (diff)
downloadFreeBSD-src-b2b51c60920dc0eb173117c8cdb60b2942f80f3d.zip
FreeBSD-src-b2b51c60920dc0eb173117c8cdb60b2942f80f3d.tar.gz
Fix minidumps to include pages allocated via pmap_map on amd64.
These pages are allocated from the direct map, and were not previous tracked. This included the vm_page_array and the early UMA bootstrap pages. Reviewed by: peter
Diffstat (limited to 'sys/vm')
-rw-r--r--sys/vm/vm_page.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/sys/vm/vm_page.c b/sys/vm/vm_page.c
index 0512347..52b3f17 100644
--- a/sys/vm/vm_page.c
+++ b/sys/vm/vm_page.c
@@ -277,6 +277,15 @@ vm_page_startup(vm_offset_t vaddr)
mapped = pmap_map(&vaddr, new_end, end,
VM_PROT_READ | VM_PROT_WRITE);
vm_page_array = (vm_page_t) mapped;
+#ifdef __amd64__
+ /*
+ * pmap_map on amd64 comes out of the direct-map, not kvm like i386,
+ * so the pages must be tracked for a crashdump to include this data.
+ * This includes the vm_page_array and the early UMA bootstrap pages.
+ */
+ for (pa = new_end; pa < phys_avail[biggestone + 1]; pa += PAGE_SIZE)
+ dump_add_page(pa);
+#endif
phys_avail[biggestone + 1] = new_end;
/*
OpenPOWER on IntegriCloud