All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ard Biesheuvel <ard.biesheuvel@linaro.org>
To: Peter Maydell <peter.maydell@linaro.org>
Cc: Fu Wei <fu.wei@linaro.org>,
	QEMU Developers <qemu-devel@nongnu.org>,
	Christoffer Dall <christoffer.dall@linaro.org>
Subject: Re: [Qemu-devel] [PATCH 6/6] hw/arm/boot: enable DTB support when booting ELF images
Date: Tue, 9 Sep 2014 20:15:50 +0200	[thread overview]
Message-ID: <CAKv+Gu9s7x1-zf+AZOvEDe+acOdMiKt6yBsr8=UQO8ebL9UtNQ@mail.gmail.com> (raw)
In-Reply-To: <CAFEAcA-kQ4jdgT_XYfynEiUVH1qB1Rz1qaX-sSVm3PGqpScepw@mail.gmail.com>

On 9 September 2014 20:08, Peter Maydell <peter.maydell@linaro.org> wrote:
> On 5 September 2014 16:15, Ard Biesheuvel <ard.biesheuvel@linaro.org> wrote:
>> Add support for loading DTB images when booting ELF images via -kernel.
>> The DTB image is located at the next 4 KB boundary above the highest address
>> covered by the loaded ELF image.
>>
>> Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
>> ---
>>  hw/arm/boot.c | 18 ++++++++++++++++--
>>  1 file changed, 16 insertions(+), 2 deletions(-)
>>
>> diff --git a/hw/arm/boot.c b/hw/arm/boot.c
>> index 8d8653978dfe..60c4f6af7884 100644
>> --- a/hw/arm/boot.c
>> +++ b/hw/arm/boot.c
>> @@ -458,7 +458,7 @@ void arm_load_kernel(ARMCPU *cpu, struct arm_boot_info *info)
>>      int kernel_size;
>>      int initrd_size;
>>      int is_linux = 0;
>> -    uint64_t elf_entry;
>> +    uint64_t elf_entry, elf_low_addr;
>>      int elf_machine;
>>      hwaddr entry, kernel_load_offset;
>>      int big_endian;
>> @@ -529,7 +529,21 @@ void arm_load_kernel(ARMCPU *cpu, struct arm_boot_info *info)
>>
>>      /* Assume that raw images are linux kernels, and ELF images are not.  */
>>      kernel_size = load_elf(info->kernel_filename, NULL, NULL, &elf_entry,
>> -                           NULL, NULL, big_endian, elf_machine, 1);
>> +                           &elf_low_addr, NULL, big_endian, elf_machine, 1);
>> +    if (kernel_size > 0 && have_dtb(info)) {
>> +        /* If we have a DTB in combination with an ELF executable image,
>> +         * put the DTB at the base of RAM like we do for bootloaders.
>> +         */
>> +        uint32_t dtb_size;
>> +
>> +        if (load_dtb(info->loader_start, info, &dtb_size)) {
>> +            exit(1);
>> +        }
>> +        if (info->loader_start + dtb_size > elf_low_addr) {
>> +            fprintf(stderr, "Image %s overlaps DTB\n", info->kernel_filename);
>> +            exit(1);
>> +        }
>> +    }
>
> This shouldn't abort. The reason we need to manually check
> for overlap is because the default rom-blob behaviour of
> "overlap means don't start QEMU" isn't what we want.
> In particular, boards like virt which autogenerate DTBs
> will always have_dtb(), but we don't want to prevent
> non-DTB-aware ELF blobs from loading anywhere they like.
> The behaviour we need is "if blobs don't overlap then
> load both, otherwise load the ELF file and ignore the
> DTB".
>

OK

> (Thinking about it, that implies we either need a
> rom_del_blob() or we need to tell load_dtb() about
> areas of address space it needs to check for overlap
> with before it registers the rom blob for the dtb.)
>

... or we just call load_elf() again

  reply	other threads:[~2014-09-09 18:16 UTC|newest]

Thread overview: 27+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-09-05 15:15 [Qemu-devel] [PATCH 0/6] ARM: -bios/-kernel + DTB boot roundup Ard Biesheuvel
2014-09-05 15:15 ` [Qemu-devel] [PATCH 1/6] hw/arm/virt: Provide flash devices for boot ROMs Ard Biesheuvel
2014-09-09 18:20   ` Peter Maydell
2014-09-10  9:09     ` Ard Biesheuvel
2014-09-10  9:12       ` Peter Maydell
2014-09-10 10:27         ` Ard Biesheuvel
2014-09-05 15:15 ` [Qemu-devel] [PATCH 2/6] hw/arm/boot: return size of loaded DTB from load_dtb() Ard Biesheuvel
2014-09-09 17:57   ` Peter Maydell
2014-09-05 15:15 ` [Qemu-devel] [PATCH 3/6] hw/arm/boot: load device tree to base of DRAM if no -kernel option was passed Ard Biesheuvel
2014-09-09 18:02   ` Peter Maydell
2014-09-05 15:15 ` [Qemu-devel] [PATCH 4/6] hw/arm/boot: register cpu reset handlers if using -bios Ard Biesheuvel
2014-09-09 18:14   ` Peter Maydell
2014-09-17 15:50     ` Ard Biesheuvel
2014-09-17 15:55       ` Andreas Färber
2014-09-17 16:17         ` Peter Maydell
2014-09-17 16:40           ` Andreas Färber
2014-09-17 16:47             ` Peter Maydell
2014-09-17 17:14               ` Andreas Färber
2014-09-17 22:05                 ` Ard Biesheuvel
2014-09-05 15:15 ` [Qemu-devel] [PATCH 5/6] hw/arm/boot: load DTB as a ROM image Ard Biesheuvel
2014-09-09 18:03   ` Peter Maydell
2014-09-05 15:15 ` [Qemu-devel] [PATCH 6/6] hw/arm/boot: enable DTB support when booting ELF images Ard Biesheuvel
2014-09-05 16:42   ` Ard Biesheuvel
2014-09-09 18:08   ` Peter Maydell
2014-09-09 18:15     ` Ard Biesheuvel [this message]
2014-09-09 18:17       ` Peter Maydell
2014-09-09 18:20         ` Ard Biesheuvel

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='CAKv+Gu9s7x1-zf+AZOvEDe+acOdMiKt6yBsr8=UQO8ebL9UtNQ@mail.gmail.com' \
    --to=ard.biesheuvel@linaro.org \
    --cc=christoffer.dall@linaro.org \
    --cc=fu.wei@linaro.org \
    --cc=peter.maydell@linaro.org \
    --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.