On Mon, Apr 21, 2014 at 4:48 PM, Greg Kurz <gk...@linux.vnet.ibm.com> wrote:

> On Mon, 21 Apr 2014 09:56:48 +0200
> Alexander Graf <ag...@suse.de> wrote:
>
> >
> >
> > > Am 21.04.2014 um 06:16 schrieb Bharata B Rao <bharata....@gmail.com>:
> > >
> > >> On Mon, Apr 14, 2014 at 5:42 PM, Greg Kurz <gk...@linux.vnet.ibm.com>
> wrote:
> > >>
> > >> +
> > >> +#if !defined(CONFIG_USER_ONLY)
> > >> +bool virtio_is_big_endian(void)
> > >> +{
> > >> +    PowerPCCPU *cp = POWERPC_CPU(first_cpu);
> > >> +    CPUPPCState *env = &cp->env;
> > >> +
> > >> +    /* NOTE: booke uses the same number for another unrelated spr.
> > >> +     */
> > >> +    if (strcmp(env->spr_cb[SPR_LPCR].name, "LPCR")) {
> > >> +        return TARGET_WORDS_BIGENDIAN;
> > >> +    } else {
> > >> +        return !(env->spr[SPR_LPCR] & LPCR_ILE);
> > >> +    }
> > >> +}
> > >> +#endif
> > >
> > > I am adding crash support for little endian ppc64 guests and I
> realized that the above code needs to be re-used in
> target-ppc/arch_dump.c:cpu_get_dump_info() to set the endianness.
> >
> > Wouldn't it make more sense to treat dumps like gdb and set the
> endianness depending on MSR_LE?
> >
> > Alex
> >
>
> It makes sense to behave the same as gdb... and BTW, since the guest may
> change endianness, we could possibly have MSB and LSB data in the dump. The
> important thing is to have the possibility to adapt endianness to what we
> are
> looking (like set target endian in gdb).
>

Typically guest system dump generated by QEMU (via dump-system-memory
monitor cmd) is analysed using the crash utility (
http://people.redhat.com/anderson/). Crash tool is a wrapper around gdb and
in addition to normal gdb commands, it supports various other commands
which make sense for a system dump.

Based on my limited exposure to crash tool, currently crash tool doesn't
support dynamic setting of endianness (like gdb's set endian command) and
it just goes by the endianness recorded in the ELF header and fails if
there is any endian mismatch b/n the dump file and the guest vmlinux file.
I thought that this is an expected or acceptable behaviour when analyzing
system dumps and not sure if a system dump analyzing tool should adapt to
endianness when analyzing system dumps. Copying Dave Anderson (of crash
utility) for his views here.

To answer Alex's earlier question about what do we want to analyze when we
take a system dump of a big endian powerpc VM while it was running lx86
program, I would think that since this is system dump, we will want to
analyze the system as a whole and hence would need to consider the system
endianness reflected by LPCR_ILE rather than current endianess reflected by
MSR_LE.

Regards,
Bharata.

Reply via email to