[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH 1/1] dump: Update correct kdump phys_base field
From: |
Marc-André Lureau |
Subject: |
Re: [Qemu-devel] [PATCH 1/1] dump: Update correct kdump phys_base field for AArch64 |
Date: |
Sun, 11 Mar 2018 18:42:49 +0100 |
Hi
On Fri, Mar 9, 2018 at 6:03 PM, Wei Huang <address@hidden> wrote:
> For guest kernel that supports KASLR, the load address can change every
> time when guest VM runs. To find the physical base address correctly,
> current QEMU dump searches VMCOREINFO for the string "NUMBER(phys_base)=".
> However this string pattern is only available on x86_64. AArch64 uses a
> different field, called "NUMBER(PHYS_OFFSET)=". This patch makes sure
> QEMU dump uses the correct string on AArch64.
>
> Signed-off-by: Wei Huang <address@hidden>
Reviewed-by: Marc-André Lureau <address@hidden>
> ---
> dump.c | 14 +++++++++++---
> 1 file changed, 11 insertions(+), 3 deletions(-)
>
> diff --git a/dump.c b/dump.c
> index 097e60b..6bdb0db 100644
> --- a/dump.c
> +++ b/dump.c
> @@ -1609,10 +1609,18 @@ static void vmcoreinfo_update_phys_base(DumpState *s)
>
> lines = g_strsplit((char *)vmci, "\n", -1);
> for (i = 0; lines[i]; i++) {
> - if (g_str_has_prefix(lines[i], "NUMBER(phys_base)=")) {
> - if (qemu_strtou64(lines[i] + 18, NULL, 16,
> + const char *prefix = NULL;
> +
> + if (s->dump_info.d_machine == EM_X86_64) {
> + prefix = "NUMBER(phys_base)=";
> + } else if (s->dump_info.d_machine == EM_AARCH64) {
> + prefix = "NUMBER(PHYS_OFFSET)=";
> + }
> +
> + if (prefix && g_str_has_prefix(lines[i], prefix)) {
> + if (qemu_strtou64(lines[i] + strlen(prefix), NULL, 16,
> &phys_base) < 0) {
> - warn_report("Failed to read NUMBER(phys_base)=");
> + warn_report("Failed to read %s", prefix);
> } else {
> s->dump_info.phys_base = phys_base;
> }
> --
> 1.8.3.1
>