* [Qemu-devel] [PATCH v2] ppc64: fix compressed dump with pseries kernel
@ 2016-08-08 13:08 Laurent Vivier
2016-08-09 3:09 ` David Gibson
0 siblings, 1 reply; 2+ messages in thread
From: Laurent Vivier @ 2016-08-08 13:08 UTC (permalink / raw)
To: david; +Cc: agraf, qemu-ppc, thuth, qemu-devel, drjones, Laurent Vivier
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>
---
v2: Update commit and source comments about the max page size
target-ppc/arch_dump.c | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/target-ppc/arch_dump.c b/target-ppc/arch_dump.c
index df1fd8c..ea3d1a3 100644
--- a/target-ppc/arch_dump.c
+++ b/target-ppc/arch_dump.c
@@ -220,6 +220,11 @@ int cpu_get_dump_info(ArchDumpInfo *info,
} else {
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;
}
--
2.5.5
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [Qemu-devel] [PATCH v2] ppc64: fix compressed dump with pseries kernel
2016-08-08 13:08 [Qemu-devel] [PATCH v2] ppc64: fix compressed dump with pseries kernel Laurent Vivier
@ 2016-08-09 3:09 ` David Gibson
0 siblings, 0 replies; 2+ messages in thread
From: David Gibson @ 2016-08-09 3:09 UTC (permalink / raw)
To: Laurent Vivier; +Cc: agraf, qemu-ppc, thuth, qemu-devel, drjones
[-- Attachment #1: Type: text/plain, Size: 2341 bytes --]
On Mon, Aug 08, 2016 at 03:08:53PM +0200, Laurent Vivier wrote:
> 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>
> ---
> v2: Update commit and source comments about the max page size
I've applied this to ppc-for-2.7 for now, since it definitely improves
matters.
>
> target-ppc/arch_dump.c | 5 +++++
> 1 file changed, 5 insertions(+)
>
> diff --git a/target-ppc/arch_dump.c b/target-ppc/arch_dump.c
> index df1fd8c..ea3d1a3 100644
> --- a/target-ppc/arch_dump.c
> +++ b/target-ppc/arch_dump.c
> @@ -220,6 +220,11 @@ int cpu_get_dump_info(ArchDumpInfo *info,
> } else {
> 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);
> + }
However, I think doing this based on machine type actually isn't
great. It's entirely plausible that a modern kernel built for Mac
would also have 64KiB page size - especially if it's a multiplatform
kernel that can run on both Mac and pSeries.
Still, that's something we can polish later.
>
> return 0;
> }
--
David Gibson | I'll have my music baroque, and my code
david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_
| _way_ _around_!
http://www.ozlabs.org/~dgibson
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 819 bytes --]
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2016-08-09 3:28 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-08-08 13:08 [Qemu-devel] [PATCH v2] ppc64: fix compressed dump with pseries kernel Laurent Vivier
2016-08-09 3:09 ` David Gibson
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).