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
This commit is contained in:
John Baldwin 2016-12-22 20:28:06 +00:00
parent 9d7c990f62
commit f2f9011e6c
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=310428

View File

@ -191,7 +191,7 @@ mips_init(unsigned long memsize, uint64_t ememsize)
/* 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 */