All of lore.kernel.org
 help / color / mirror / Atom feed
From: Aurelien Jarno <aurelien@aurel32.net>
To: Alexander Graf <agraf@suse.de>
Cc: "qemu-devel@nongnu.org" <qemu-devel@nongnu.org>
Subject: Re: [Qemu-devel] [PATCH] Fix -kernel on target-ppc
Date: Sun, 25 Jan 2009 10:54:43 +0100	[thread overview]
Message-ID: <20090125095443.GI19498@hall.aurel32.net> (raw)
In-Reply-To: <E2013891-A296-41E4-80A5-4FABAAA88B51@suse.de>

On Sun, Jan 25, 2009 at 01:28:36AM +0100, Alexander Graf wrote:
>
>
>
>
> On 25.01.2009, at 00:59, Aurelien Jarno <aurelien@aurel32.net> wrote:
>
>> On Sat, Jan 24, 2009 at 10:57:19PM +0100, Alexander Graf wrote:
>>>
>>> On 24.01.2009, at 22:48, Aurelien Jarno wrote:
>>>
>>>> On Sat, Jan 24, 2009 at 09:58:35PM +0100, Alexander Graf wrote:
>>>>> OpenBIOS searches for the preloaded kernel at 0x1000000, so let's
>>>>> put it there instead of an invalid location.
>>>>
>>>> Your patch is actually wrong, the second argument of load_elf() is  
>>>> an
>>>> offset to the physical address (as found in the elf header), and  
>>>> not a
>>>> load address.
>>>>
>>>> By chance the physical address of a >= 2.6.25 kernel is  
>>>> 0x00000000, so
>>>> your patch works. But it will break supports for < 2.6.25 kernel as
>>>> their physical address is 0xc0000000. Not that they are only the
>>>> default
>>>> values, they can be changed in the .config file.
>>>
>>> Aah, that explains why :-).
>>>
>>>> I have already proposed a patch to use the virtual address of the  
>>>> elf
>>>> header as done by yaboot or quik, but I have been told it is  
>>>> actually
>>>> wrong.
>>>>
>>>> We have to find another way to load the elf file at a fixed address.
>>>
>>> Hm - can't we just give load_elf an override value for the base  
>>> address?
>>>
>>>            /* address_offset is hack for kernel images that are
>>>               linked at the wrong physical address.  */
>>>            addr = ph->p_paddr + address_offset;
>>>
>>>            cpu_physical_memory_write_rom(addr, data, mem_size);
>>>
>>> Just pass another variable here that overrides addr and doesn't
>>> calculate it?
>>
>> Except that they can be more than one segment to load, so the last one
>> will overwrite the previous ones. The PowerPC kernels I have seen only
>> have one load segment, but I am not sure it is always the case.
>
> But then the addr hack wouldn't work either, right? It's just a question 
> if addr_offset is relative or absolute here.

addr_offset is just an offset that is added to the load address of the
elf header.

> And fwiw in this case relative to the elf header's value doesn't make  
> any sense at all when the firmware expects the blob on a specific  
> address.

As far as I understand it has been done like that to be able to support
multiple segments. If the elf header says that the first segment has to 
be loaded at 0xc0000000 and the second at 0xd0000000, loading both at
0x10000000 won't work. Loading them with an offset of -0xb000000 will
load the first one at 0x10000000 and the second one just after at
0x20000000.

-- 
Aurelien Jarno	                        GPG: 1024D/F1BCDB73
aurelien@aurel32.net                 http://www.aurel32.net

  reply	other threads:[~2009-01-25  9:54 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-01-24 20:58 [Qemu-devel] [PATCH] Fix -kernel on target-ppc Alexander Graf
2009-01-24 21:48 ` Aurelien Jarno
2009-01-24 21:57   ` Alexander Graf
2009-01-24 23:59     ` Aurelien Jarno
2009-01-25  0:28       ` Alexander Graf
2009-01-25  9:54         ` Aurelien Jarno [this message]
2009-01-25 10:03           ` Alexander Graf
2009-01-25 10:16             ` Edgar E. Iglesias
2009-01-25 10:24               ` Alexander Graf
2009-01-25 10:28                 ` Alexander Graf
2009-01-25 10:50                   ` Aurelien Jarno
2009-01-25 20:31                 ` François Revol
2009-01-25  0:30       ` François Revol

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=20090125095443.GI19498@hall.aurel32.net \
    --to=aurelien@aurel32.net \
    --cc=agraf@suse.de \
    --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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.