qemu-arm
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-arm] [Qemu-devel] [PATCH 5/5] target-arm: support QMP dump-gue


From: Andrew Jones
Subject: Re: [Qemu-arm] [Qemu-devel] [PATCH 5/5] target-arm: support QMP dump-guest-memory
Date: Tue, 24 Nov 2015 16:45:43 -0500
User-agent: Mutt/1.5.23.1 (2014-03-12)

On Tue, Nov 24, 2015 at 09:08:29PM +0000, Peter Maydell wrote:
> On 24 November 2015 at 20:52, Andrew Jones <address@hidden> wrote:
> >
> > I've pulled a v2 together that I'll be testing and posting soon. Here's
> > what I decided to do
> >
> > 1) Throw the fp registers in. Why not?
> > 2) No linux-headers update, as we'd also need
> >    include/uapi/linux/elfcore.h and arch/arm/include/asm/user.h.
> >    However I've added comments stating where the structs come from.
> > 3) Base the vmcore type on the guest kernel, i.e. use arm_el_is_aa64()
> >    and (env->cp15.sctlr_el[1] & SCTLR_EE). However,
> >    aarch64_write_elf64_note() will shoehorn 32-bit state into 64-bit
> >    elf notes when the current state is 32-bit. Those analyzing the
> >    dumps will need to look at the captured pstate to determine the
> >    endianness of the registers.
> 
> Not sure what you have in mind by "endianness of the registers" --
> typically registers aren't thought of as having endianness.

If a processor that was temporarily switched into the opposite endian
had just read a memory address into a register before generating the
core, then the data in that register will be in the format of that
temporary endianness. The person doing the dump analysis will need to
keep in mind that even though they should interpret a crash-tool read of
that same address in the endianness of the core type, the register will
have it swapped. Or maybe I'm wrong about how that should work?

> 
> Also, if we're currently executing a 32-bit guest when we take
> the core dump, you probably need to call aarch64_sync_32_to_64()
> somewhere.

I think we're covered here. We have

dump_init
  cpu_synchronize_all_states
    ... 
      kvm_arch_get_registers
        if (!is_a64(env)) {
            aarch64_sync_64_to_32(env);
        }

Thanks,
drew



reply via email to

[Prev in Thread] Current Thread [Next in Thread]