ppc64: fix compressed dump with pseries kernel
If we don't provide the page size in target-ppc:cpu_get_dump_info(),
the default one (TARGET_PAGE_SIZE, 4KB) is used to create
the compressed dump. It works fine with Macintosh, but not with
pseries as the kernel default page size is 64KB.
Without this patch, if we generate a compressed dump in the QEMU monitor:
(qemu) dump-guest-memory -z qemu.dump
This dump cannot be read by crash:
# crash vmlinux qemu.dump
...
WARNING: cannot translate vmemmap kernel virtual addresses:
commands requiring page structure contents will fail
...
Page_size is used to determine the dumpfile's block size. The
block size needs to be at least the page size, but a multiple of page
size works fine too. For PPC64, linux supports either 4KB or 64KB software
page size. So we define the page_size to 64KB.
Signed-off-by: Laurent Vivier <lvivier@redhat.com>
Reviewed-by: Andrew Jones <drjones@redhat.com>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
(cherry picked from commit 760d88d1d0
)
Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
This commit is contained in:
parent
236039b89d
commit
1f1b96a1df
|
@ -220,6 +220,11 @@ int cpu_get_dump_info(ArchDumpInfo *info,
|
||||||
} else {
|
} else {
|
||||||
info->d_endian = ELFDATA2LSB;
|
info->d_endian = ELFDATA2LSB;
|
||||||
}
|
}
|
||||||
|
/* 64KB is the max page size for pseries kernel */
|
||||||
|
if (strncmp(object_get_typename(qdev_get_machine()),
|
||||||
|
"pseries-", 8) == 0) {
|
||||||
|
info->page_size = (1U << 16);
|
||||||
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue