Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 22 Dec 2016 20:28:06 +0000 (UTC)
From:      John Baldwin <jhb@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r310428 - head/sys/mips/malta
Message-ID:  <201612222028.uBMKS6VO025289@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
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 */



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201612222028.uBMKS6VO025289>