From: Andrew Jones <drjones@redhat.com>
To: Peter Maydell <peter.maydell@linaro.org>
Cc: "Alexander Graf" <agraf@suse.de>,
"QEMU Developers" <qemu-devel@nongnu.org>,
"Markus Armbruster" <armbru@redhat.com>,
qemu-arm@nongnu.org, "qemu-ppc@nongnu.org" <qemu-ppc@nongnu.org>,
"Andreas Färber" <afaerber@suse.de>,
"Richard Henderson" <rth@twiddle.net>
Subject: Re: [Qemu-devel] [PATCH 5/5] target-arm: support QMP dump-guest-memory
Date: Tue, 24 Nov 2015 15:52:31 -0500 [thread overview]
Message-ID: <20151124205231.GA4383@hawk.localdomain> (raw)
In-Reply-To: <20151121150537.GA3701@hawk.localdomain>
On Sat, Nov 21, 2015 at 10:05:37AM -0500, Andrew Jones wrote:
> On Fri, Nov 20, 2015 at 04:41:21PM -0500, Andrew Jones wrote:
> > On Fri, Nov 20, 2015 at 06:19:14PM +0000, Peter Maydell wrote:
> > > On 19 November 2015 at 14:53, Andrew Jones <drjones@redhat.com> wrote:
> > > > +
> > > > + if (is_a64(env)) {
> > >
> > > Are you really sure you want the core dump format to depend on
> > > whether the CPU happens to be in 32-bit or 64-bit format at
> > > the point in time we write it out? (Consider a 64-bit kernel
> > > which happens to be running a 32-bit userspace binary.)
> >
> > I simply forgot to consider the case where a 64-bit kernel would
> > run a 32-bit userspace binary. I'm actually quite sure we would
> > want 64-bit in that case, as crash is the only tool we're able to
> > generate dumps for at this time (gdb requires the 'paging' option
> > of dump-guest-memory to work). Is there something in the env I can
> > look at to determine that we have a 64-bit kernel? (Sorry for being
> > lazy and just asking, rather than reading...)
>
> Duh, I momentarily forgot about arm_el_is_aa64(env, 1). I see we unset
> ARM_FEATURE_AARCH64 in aarch64_cpu_set_aarch64, so that should work
> fine for our 32bit guests on 64bit hosts.
>
> > > > + if (is_a64(env)) {
> > > > + info->d_machine = EM_AARCH64;
> > > > + info->d_class = ELFCLASS64;
> > > > + if (cur_el == 0) {
> > > > + be = (env->cp15.sctlr_el[1] & SCTLR_E0E) != 0;
> > > > + } else {
> > > > + be = (env->cp15.sctlr_el[cur_el] & SCTLR_EE) != 0;
> > > > + }
> > >
> > > Again, are you sure you want the core dump format to depend on
> > > whether we currently happen to be executing a BE userspace
> > > process?
> >
> > We'll want to match the kernel. Hopefully we can determine it.
>
> Here's a bigger, duh. I guess I just need to drop all the cur_el
> stuff and stick to el==1.
>
> I'll wait to hear back on the 'should we add ptrace.h to linux-headers',
> and 'should we add floating point registers, even though crash won't
> care' questions before sending a v2.
Hi Peter,
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.
How does that sound?
Thanks,
drew
next prev parent reply other threads:[~2015-11-24 20:52 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-11-19 14:53 [Qemu-devel] [PATCH 0/5] target-arm: enable qmp-dump-guest-memory Andrew Jones
2015-11-19 14:53 ` [Qemu-devel] [PATCH 1/5] qapi-schema: dump-guest-memory: Improve text Andrew Jones
2015-11-19 15:22 ` Eric Blake
2015-11-19 14:53 ` [Qemu-devel] [PATCH 2/5] dump: qemunotes aren't commonly needed Andrew Jones
2015-11-20 18:20 ` Peter Maydell
2015-11-19 14:53 ` [Qemu-devel] [PATCH 3/5] dump: allow target to set the page size Andrew Jones
2015-11-19 14:53 ` [Qemu-devel] [PATCH 4/5] dump: allow target to set the physical base Andrew Jones
2015-11-19 14:53 ` [Qemu-devel] [PATCH 5/5] target-arm: support QMP dump-guest-memory Andrew Jones
2015-11-20 18:19 ` Peter Maydell
2015-11-20 21:41 ` Andrew Jones
2015-11-21 15:05 ` Andrew Jones
2015-11-24 20:52 ` Andrew Jones [this message]
2015-11-24 21:08 ` Peter Maydell
2015-11-24 21:45 ` Andrew Jones
2015-11-24 22:01 ` Peter Maydell
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20151124205231.GA4383@hawk.localdomain \
--to=drjones@redhat.com \
--cc=afaerber@suse.de \
--cc=agraf@suse.de \
--cc=armbru@redhat.com \
--cc=peter.maydell@linaro.org \
--cc=qemu-arm@nongnu.org \
--cc=qemu-devel@nongnu.org \
--cc=qemu-ppc@nongnu.org \
--cc=rth@twiddle.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).