svn commit: r310428 - head/sys/mips/malta
John Baldwin
jhb at FreeBSD.org
Thu Dec 22 20:28:07 UTC 2016
Author: jhb
Date: Thu Dec 22 20:28:06 2016
New Revision: 310428
URL: https://svnweb.freebsd.org/changeset/base/310428
Log:
Fix dump_avail[] for MALTA platforms to include the kernel.
dump_avail[] is supposed to be a superset of phys_avail[] that
describes all of the memory ranges that should be included in a full
dump. minidumps don't consider pages described by dump_avail[] to be
valid and thus they are excluded via the is_dumpable() function. Most
MIPS platforms (including MALTA) set dump_avail[] to be identical to
phys_avail[]. In particular, phys_avail[] doesn't include the kernel
itself, so pages for the kernel and it's global variables are not
considered dumpable and not included in the dump. Fix this by setting
dump_avail[0] to the first memory address (0) rather than the end of
the kernel.
Several other MIPS platforms have the same bug, though I am only able
to test malta in qemu. The correct fix is to set dump_avail[] to
describe RAM and in particular to not set dump_avail[0] to the end of
the kernel (kernel_kseg0_end).
Sponsored by: DARPA / AFRL
Modified:
head/sys/mips/malta/malta_machdep.c
Modified: head/sys/mips/malta/malta_machdep.c
==============================================================================
--- head/sys/mips/malta/malta_machdep.c Thu Dec 22 20:16:10 2016 (r310427)
+++ head/sys/mips/malta/malta_machdep.c Thu Dec 22 20:28:06 2016 (r310428)
@@ -191,7 +191,7 @@ mips_init(unsigned long memsize, uint64_
/* phys_avail regions are in bytes */
phys_avail[0] = MIPS_KSEG0_TO_PHYS(kernel_kseg0_end);
phys_avail[1] = memsize;
- dump_avail[0] = phys_avail[0];
+ dump_avail[0] = 0;
dump_avail[1] = phys_avail[1];
/* Only specify the extended region if it's set */
More information about the svn-src-head
mailing list