Hi On Fri, Mar 9, 2018 at 6:03 PM, Wei Huang <w...@redhat.com> 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 <w...@redhat.com>
Reviewed-by: Marc-André Lureau <marcandre.lur...@redhat.com> > --- > 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 >