linux-efi.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Roy Franz <roy.franz-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
To: Matt Fleming <matt-HNK1S37rvNbeXh+fF434Mdi2O/JbrIOy@public.gmane.org>
Cc: Linux Kernel Mailing List
	<linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
	linux-efi-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	matt.fleming-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org,
	Leif Lindholm
	<leif.lindholm-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>,
	Mark Salter <msalter-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
Subject: Re: [PATCH 08/17] Generalize relocate_kernel() for use by other architectures.
Date: Wed, 18 Sep 2013 09:31:21 -0700	[thread overview]
Message-ID: <CAFECyb849wjbL9SWhK74Y1dfjKFuYpNwf=c5PYe15VeLwz3AFQ@mail.gmail.com> (raw)
In-Reply-To: <20130918121240.GJ3409-HNK1S37rvNbeXh+fF434Mdi2O/JbrIOy@public.gmane.org>

On Wed, Sep 18, 2013 at 5:12 AM, Matt Fleming <matt-HNK1S37rvNbeXh+fF434Mdi2O/JbrIOy@public.gmane.org> wrote:
> On Mon, 16 Sep, at 09:11:24PM, Roy Franz wrote:
>> Rename relocate_kernel() to efi_relocate_kernel(), and take
>> parameters rather than x86 specific structure.  Add max_addr
>> argument as for ARM we have some address constraints that we
>> need to enforce when relocating the kernel.  Add alloc_size
>> parameter for use by ARM64 which uses an uncompressed kernel,
>> and needs to allocate space for BSS.
>>
>> Signed-off-by: Roy Franz <roy.franz-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
>> ---
>>  arch/x86/boot/compressed/eboot.c       |   12 ++++--
>>  drivers/firmware/efi/efi-stub-helper.c |   74 ++++++++++++++++++++++----------
>>  2 files changed, 60 insertions(+), 26 deletions(-)
>
> This commit breaks my ASUS machine.
>
>> -     /*
>> -      * The EFI firmware loader could have placed the kernel image
>> -      * anywhere in memory, but the kernel has various restrictions
>> -      * on the max physical address it can run at. Attempt to move
>> -      * the kernel to boot_params.pref_address, or as low as
>> -      * possible.
>> -      */
>
> [...]
>
>> +
>> +     /* The EFI firmware loader could have placed the kernel image
>> +      * anywhere in memory, but the kernel has restrictions on the
>> +      * anywhere in memory, but the kernel has restrictions on the
>> +      * max physical address it can run at.  Some architectures
>> +      * also have a prefered address, so first try to relocate
>> +      * to the preferred address.
>> +      */
>
> Please don't change the comment style of code in the future.
Sorry about that.
>
>> +     nr_pages = round_up(alloc_size, EFI_PAGE_SIZE) / EFI_PAGE_SIZE;
>> +     status = efi_call_phys4(sys_table_arg->boottime->allocate_pages,
>>                               EFI_ALLOCATE_ADDRESS, EFI_LOADER_DATA,
>> -                             nr_pages, &start);
>> +                             nr_pages, &efi_addr);
>> +     new_addr = efi_addr;
>> +     /* If preferred address allocation failed allocate as low as
>> +      * possible. */
>>       if (status != EFI_SUCCESS) {
>> -             status = efi_low_alloc(sys_table, hdr->init_size,
>> -                                hdr->kernel_alignment, &start);
>> -             if (status != EFI_SUCCESS)
>> -                     efi_printk(sys_table, "Failed to alloc mem for kernel\n");
>> +             status = efi_low_alloc(sys_table_arg, alloc_size, 0,
>> +                                    &new_addr);
>
> This is wrong. You've dropped the hdr->kernel_alignment argument, and
> the relaxed alignment of this allocation stops my machine from booting.
Dropping the alignment was an oversight, and my testing on OVMF didn't
catch that.  I'll add the alignment
and resend the series.

Thanks,
Roy

>
> --
> Matt Fleming, Intel Open Source Technology Center

  parent reply	other threads:[~2013-09-18 16:31 UTC|newest]

Thread overview: 30+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-09-17  4:11 [PATCH V4 00/17] ARM EFI stub common code Roy Franz
     [not found] ` <1379391093-27948-1-git-send-email-roy.franz-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
2013-09-17  4:11   ` [PATCH 01/17] EFI stub documentation updates Roy Franz
2013-09-17  4:11   ` [PATCH 07/17] Move relocate_kernel() to shared file Roy Franz
2013-09-17  4:11   ` [PATCH 13/17] Allow efi_free() to be called with size of 0, and do nothing in that case Roy Franz
2013-09-17  4:11   ` [PATCH 16/17] Fix types in EFI calls to match EFI function definitions Roy Franz
2013-09-17  4:11   ` [PATCH 17/17] resolve warnings found on ARM compile Roy Franz
2013-09-18 13:21   ` [PATCH V4 00/17] ARM EFI stub common code Matt Fleming
2013-09-20 14:32   ` H. Peter Anvin
2013-09-17  4:11 ` [PATCH 02/17] Add proper definitions for some EFI function pointers Roy Franz
2013-09-17  4:11 ` [PATCH 03/17] Move common EFI stub code from x86 arch code to common location Roy Franz
2013-09-17  4:11 ` [PATCH 04/17] Add system table pointer argument to shared functions Roy Franz
2013-09-17  4:11 ` [PATCH 05/17] Rename memory allocation/free functions Roy Franz
2013-09-17  4:11 ` [PATCH 06/17] Enforce minimum alignment of 1 page on allocations Roy Franz
2013-09-17  4:11 ` [PATCH 08/17] Generalize relocate_kernel() for use by other architectures Roy Franz
     [not found]   ` <1379391093-27948-9-git-send-email-roy.franz-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
2013-09-18 12:12     ` Matt Fleming
     [not found]       ` <20130918121240.GJ3409-HNK1S37rvNbeXh+fF434Mdi2O/JbrIOy@public.gmane.org>
2013-09-18 16:31         ` Roy Franz [this message]
2013-09-17  4:11 ` [PATCH 09/17] Move unicode to ASCII conversion to shared function Roy Franz
     [not found]   ` <1379391093-27948-10-git-send-email-roy.franz-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
2013-09-19  3:44     ` Adam Borowski
     [not found]       ` <20130919034406.GA26385-b9QjgO8OEXPVItvQsEIGlw@public.gmane.org>
2013-09-19  3:46         ` H. Peter Anvin
2013-09-19  4:48         ` Roy Franz
     [not found]           ` <CAFECyb-tTaCEqUHUh23MaJf-P42ZpodFKeNG=kE+vmmi-gyKrw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2013-09-19 23:02             ` Adam Borowski
2013-09-20  9:30               ` Matt Fleming
2013-09-20  9:27             ` Matt Fleming
     [not found]               ` <20130920092713.GD4785-HNK1S37rvNbeXh+fF434Mdi2O/JbrIOy@public.gmane.org>
2013-09-20 15:00                 ` H. Peter Anvin
     [not found]                   ` <523C62FC.8010907-YMNOUZJC4hwAvxtiuMwx3w@public.gmane.org>
2013-09-21 21:31                     ` Roy Franz
2013-09-17  4:11 ` [PATCH 10/17] Rename __get_map() to efi_get_memory_map() Roy Franz
2013-09-17  4:11 ` [PATCH 11/17] generalize efi_get_memory_map() Roy Franz
2013-09-17  4:11 ` [PATCH 12/17] use efi_get_memory_map() to get final map for x86 Roy Franz
2013-09-17  4:11 ` [PATCH 14/17] Generalize handle_ramdisks() and rename to handle_cmdline_files() Roy Franz
2013-09-17  4:11 ` [PATCH 15/17] Renames in handle_cmdline_files() to complete generalization Roy Franz

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='CAFECyb849wjbL9SWhK74Y1dfjKFuYpNwf=c5PYe15VeLwz3AFQ@mail.gmail.com' \
    --to=roy.franz-qsej5fyqhm4dnm+yrofe0a@public.gmane.org \
    --cc=leif.lindholm-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org \
    --cc=linux-efi-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=matt-HNK1S37rvNbeXh+fF434Mdi2O/JbrIOy@public.gmane.org \
    --cc=matt.fleming-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org \
    --cc=msalter-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.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).