----- "Bernhard Walle" <bwalle(a)suse.de> wrote:
This affects only ppc64 and ia64 since that are the only
architectures
that have a page size that is configurable at runtime by the system
(which means at boot by the kernel).
It also only affects dumps of the formats diskdump (which includes kdump
compressed dumps created by makedumpfile) and netdump (which includes kdump
ELF dumps copied from /proc/vmcore without any filtering applied and created
by makedumpfile with the -E option).
The patch reads the page size from the diskdump header or from the VMCOREINFO
in case of netdump (if it's there). For ia64 it also evaluates the page size
of the zero page to *change* the page size. In the past id didn't change the
page size, it only printed an error.
The patch has been tested on ppc64 (4k vs. 64k), ia64 (16k vs. 64k) and x86-64
(always 4k). It has been tested for compilation on i386, x86-64, ia64, PPC,
ppc64, s390 and s390x. Everything on a SLES 11/openSUSE 11.1 code base.
Signed-off-by: Bernhard Walle <bwalle(a)suse.de>
Unlike Robin's patch, your patch to read_dump_header() drops this error check:
if (sizeof(*header) + sizeof(void *) * header->nr_cpus > block_size ||
header->nr_cpus <= 0) {
error(INFO, "%s: invalid nr_cpus value: %d\n",
DISKDUMP_VALID() ? "diskdump" : "compressed
kdump",
header->nr_cpus);
goto err;
}
I didn't write this, but it seems to be a valid check. Did you determine
that it's impossible even though crash does allow 4096 cpus for ia64?
Or is it a bogus to begin with?
Dave