qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Thomas Huth <thuth@redhat.com>
To: David Gibson <david@gibson.dropbear.id.au>,
	Andrew Jones <drjones@redhat.com>
Cc: dgibson@redhat.com, qemu-devel@nongnu.org, agraf@suse.de
Subject: Re: [Qemu-devel] [RFC PATCH 2/2] spapr: -kernel: allow linking with specified addr
Date: Mon, 20 Jul 2015 08:47:53 +0200	[thread overview]
Message-ID: <55AC9999.9050506@redhat.com> (raw)
In-Reply-To: <20150720050105.GF19189@voom.fritz.box>

[-- Attachment #1: Type: text/plain, Size: 2127 bytes --]

On 20/07/15 07:01, David Gibson wrote:
> On Fri, Jul 17, 2015 at 01:56:40PM +0200, Andrew Jones wrote:
>> I've started playing with adding ppc support to kvm-unit-tests,
>> using spapr for the machine model. I wanted to link the unit test
>> at 0x400000 to match qemu's load address, making the unit test
>> startup code simpler, but ended up with 0x800000 instead, due to
>> how translate_kernel_address works. The translation makes sense
>> for how Linux kernels are linked (always at 0xc0000000 or
>> 0xc000000000000000), but for the unit test case we need to avoid
>> adding the offset.
>>
>> Signed-off-by: Andrew Jones <drjones@redhat.com>
>> ---
>> Big RFC because I don't know if the "always at 0xc..." statement
>> is 100% true for Linux, nor if this patch would break other stuff...
> 
> Yeah, I'm pretty dubious about this too, especially since I don't
> entirely grasp what the load_elf() translation function is all about
> anyway.

Well, AFAIK it's used to modify the addresses before the ELF loader uses
the address for loading. For example if your ELF binary is linked at
address 0x1000, the translate function would move your binary to
0x401000 instead so that it does not interfere with the SLOF firmware
(which is loaded to address 0 IIRC).

So I also think your fix here is wrong, Andrew. E.g. when you have a
binary that is linked to address 0x1000, you don't want to bypass the
translation step here since it then would clash with the firmware.

> That said, I suspect making your unit test assume a fixed load address
> may not be the best idea - qemu or SLOF could change in future to move
> things about, so it might be more robust to have your test copy itself
> to address it wants to be at before executing.

+1

... or you could try to get the elf_reloc code working for POWER, too
(see include/hw/elf_ops.h). That way QEMU would take care of relocating
your program. (you can peek at elf_apply_rela64() in
 https://github.com/aik/SLOF/blob/master/lib/libelf/elf64.c
if you want to know what basically has to be done for POWER relocations).

 Thomas



[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 836 bytes --]

  reply	other threads:[~2015-07-20  6:48 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-07-17 11:56 [Qemu-devel] [RFC PATCH 0/2] spapr: changes for kvm-unit-tests Andrew Jones
2015-07-17 11:56 ` [Qemu-devel] [RFC PATCH 1/2] spapr: add dumpdtb support Andrew Jones
2015-07-20  4:02   ` David Gibson
2015-07-20 13:20     ` Andrew Jones
2015-07-17 11:56 ` [Qemu-devel] [RFC PATCH 2/2] spapr: -kernel: allow linking with specified addr Andrew Jones
2015-07-20  5:01   ` David Gibson
2015-07-20  6:47     ` Thomas Huth [this message]
2015-07-20 13:09       ` Andrew Jones
2015-07-21  7:10         ` Thomas Huth
2015-07-21  7:44           ` Andrew Jones
2015-07-21  7:07   ` Andrew Jones
2015-07-20  4:32 ` [Qemu-devel] [RFC PATCH 0/2] spapr: changes for kvm-unit-tests David Gibson

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=55AC9999.9050506@redhat.com \
    --to=thuth@redhat.com \
    --cc=agraf@suse.de \
    --cc=david@gibson.dropbear.id.au \
    --cc=dgibson@redhat.com \
    --cc=drjones@redhat.com \
    --cc=qemu-devel@nongnu.org \
    /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).