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