Skip to content

Commit

Permalink
ppc64: fix compressed dump with pseries kernel
Browse files Browse the repository at this point in the history
RH-Author: Laurent Vivier <[email protected]>
Message-id: <[email protected]>
Patchwork-id: 71912
O-Subject: [RHEL-7.3 qemu-kvm-rhev PATCH] ppc64: fix compressed dump with pseries kernel
Bugzilla: 1240497
RH-Acked-by: Thomas Huth <[email protected]>
RH-Acked-by: David Gibson <[email protected]>
RH-Acked-by: Andrew Jones <[email protected]>

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 <[email protected]>
Reviewed-by: Andrew Jones <[email protected]>
Signed-off-by: David Gibson <[email protected]>
(cherry picked from commit 760d88d)
Signed-off-by: Miroslav Rezanina <[email protected]>
  • Loading branch information
vivier authored and cuinutanix committed Mar 9, 2017
1 parent cad253b commit bdf8973
Showing 1 changed file with 5 additions and 0 deletions.
5 changes: 5 additions & 0 deletions target-ppc/arch_dump.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
}
Expand Down

0 comments on commit bdf8973

Please sign in to comment.