All of lore.kernel.org
 help / color / mirror / Atom feed
From: Mark Rutland <mark.rutland@arm.com>
To: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Cc: "matt.fleming@intel.com" <matt.fleming@intel.com>,
	"yi.li@linaro.org" <yi.li@linaro.org>,
	Catalin Marinas <Catalin.Marinas@arm.com>,
	Will Deacon <Will.Deacon@arm.com>,
	"leif.lindholm@linaro.org" <leif.lindholm@linaro.org>,
	"roy.franz@linaro.org" <roy.franz@linaro.org>,
	"linux-efi@vger.kernel.org" <linux-efi@vger.kernel.org>,
	"msalter@redhat.com" <msalter@redhat.com>,
	"dyoung@redhat.com" <dyoung@redhat.com>,
	"linux-arm-kernel@lists.infradead.org"
	<linux-arm-kernel@lists.infradead.org>
Subject: Re: [PATCH 02/10] arm64/efi: set PE/COFF section alignment to 4 KB
Date: Wed, 22 Oct 2014 15:49:08 +0100	[thread overview]
Message-ID: <20141022144908.GD4010@leverpostej> (raw)
In-Reply-To: <1413987713-30528-3-git-send-email-ard.biesheuvel@linaro.org>

On Wed, Oct 22, 2014 at 03:21:45PM +0100, Ard Biesheuvel wrote:
> Position independent AArch64 code needs to be linked and loaded at the
> same relative offset from a 4 KB boundary, or adrp/add and adrp/ldr
> pairs will not work correctly. (This is how PC relative symbol
> references with a 4 GB reach are emitted)
> 
> We need to declare this in the PE/COFF header, otherwise the PE/COFF
> loader may load the Image and invoke the stub at an offset which
> violates this rule.
> 
> Reviewed-by: Roy Franz <roy.franz@linaro.org>
> Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>

Acked-by: Mark Rutland <mark.rutland@arm.com>

Mark.

> ---
> v2: added comment explaining '.align 12' in head.S
> ---
>  arch/arm64/kernel/head.S | 12 ++++++++++--
>  1 file changed, 10 insertions(+), 2 deletions(-)
> 
> diff --git a/arch/arm64/kernel/head.S b/arch/arm64/kernel/head.S
> index 8c06c9d269d2..8ae84d8c2a8c 100644
> --- a/arch/arm64/kernel/head.S
> +++ b/arch/arm64/kernel/head.S
> @@ -161,7 +161,7 @@ optional_header:
>  
>  extra_header_fields:
>  	.quad	0				// ImageBase
> -	.long	0x20				// SectionAlignment
> +	.long	0x1000				// SectionAlignment
>  	.long	0x8				// FileAlignment
>  	.short	0				// MajorOperatingSystemVersion
>  	.short	0				// MinorOperatingSystemVersion
> @@ -228,7 +228,15 @@ section_table:
>  	.short	0		// NumberOfRelocations  (0 for executables)
>  	.short	0		// NumberOfLineNumbers  (0 for executables)
>  	.long	0xe0500020	// Characteristics (section flags)
> -	.align 5
> +
> +	/*
> +	 * EFI will load stext onwards at the 4k section alignment
> +	 * described in the PE/COFF header. To ensure that instruction
> +	 * sequences using an adrp and a :lo12: immediate will function
> +	 * correctly at this alignment, we must ensure that stext is
> +	 * placed at a 4k boundary in the Image to begin with.
> +	 */
> +	.align 12
>  #endif
>  
>  ENTRY(stext)
> -- 
> 1.8.3.2
> 
> 

WARNING: multiple messages have this Message-ID (diff)
From: mark.rutland@arm.com (Mark Rutland)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 02/10] arm64/efi: set PE/COFF section alignment to 4 KB
Date: Wed, 22 Oct 2014 15:49:08 +0100	[thread overview]
Message-ID: <20141022144908.GD4010@leverpostej> (raw)
In-Reply-To: <1413987713-30528-3-git-send-email-ard.biesheuvel@linaro.org>

On Wed, Oct 22, 2014 at 03:21:45PM +0100, Ard Biesheuvel wrote:
> Position independent AArch64 code needs to be linked and loaded at the
> same relative offset from a 4 KB boundary, or adrp/add and adrp/ldr
> pairs will not work correctly. (This is how PC relative symbol
> references with a 4 GB reach are emitted)
> 
> We need to declare this in the PE/COFF header, otherwise the PE/COFF
> loader may load the Image and invoke the stub at an offset which
> violates this rule.
> 
> Reviewed-by: Roy Franz <roy.franz@linaro.org>
> Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>

Acked-by: Mark Rutland <mark.rutland@arm.com>

Mark.

> ---
> v2: added comment explaining '.align 12' in head.S
> ---
>  arch/arm64/kernel/head.S | 12 ++++++++++--
>  1 file changed, 10 insertions(+), 2 deletions(-)
> 
> diff --git a/arch/arm64/kernel/head.S b/arch/arm64/kernel/head.S
> index 8c06c9d269d2..8ae84d8c2a8c 100644
> --- a/arch/arm64/kernel/head.S
> +++ b/arch/arm64/kernel/head.S
> @@ -161,7 +161,7 @@ optional_header:
>  
>  extra_header_fields:
>  	.quad	0				// ImageBase
> -	.long	0x20				// SectionAlignment
> +	.long	0x1000				// SectionAlignment
>  	.long	0x8				// FileAlignment
>  	.short	0				// MajorOperatingSystemVersion
>  	.short	0				// MinorOperatingSystemVersion
> @@ -228,7 +228,15 @@ section_table:
>  	.short	0		// NumberOfRelocations  (0 for executables)
>  	.short	0		// NumberOfLineNumbers  (0 for executables)
>  	.long	0xe0500020	// Characteristics (section flags)
> -	.align 5
> +
> +	/*
> +	 * EFI will load stext onwards at the 4k section alignment
> +	 * described in the PE/COFF header. To ensure that instruction
> +	 * sequences using an adrp and a :lo12: immediate will function
> +	 * correctly at this alignment, we must ensure that stext is
> +	 * placed at a 4k boundary in the Image to begin with.
> +	 */
> +	.align 12
>  #endif
>  
>  ENTRY(stext)
> -- 
> 1.8.3.2
> 
> 

  reply	other threads:[~2014-10-22 14:49 UTC|newest]

Thread overview: 66+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-10-22 14:21 [PATCH 00/10] arm64 EFI patches for 3.19 Ard Biesheuvel
2014-10-22 14:21 ` Ard Biesheuvel
     [not found] ` <1413987713-30528-1-git-send-email-ard.biesheuvel-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
2014-10-22 14:21   ` [PATCH 01/10] arm64/efi: efistub: jump to 'stext' directly, not through the header Ard Biesheuvel
2014-10-22 14:21     ` Ard Biesheuvel
     [not found]     ` <1413987713-30528-2-git-send-email-ard.biesheuvel-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
2014-10-22 14:47       ` Mark Rutland
2014-10-22 14:47         ` Mark Rutland
2014-10-22 14:21   ` [PATCH 02/10] arm64/efi: set PE/COFF section alignment to 4 KB Ard Biesheuvel
2014-10-22 14:21     ` Ard Biesheuvel
2014-10-22 14:49     ` Mark Rutland [this message]
2014-10-22 14:49       ` Mark Rutland
2014-10-22 14:21   ` [PATCH 03/10] arm64/efi: set PE/COFF file alignment to 512 bytes Ard Biesheuvel
2014-10-22 14:21     ` Ard Biesheuvel
2014-10-22 14:21   ` [PATCH 04/10] arm64/efi: reserve regions of type ACPI_MEMORY_NVS Ard Biesheuvel
2014-10-22 14:21     ` Ard Biesheuvel
     [not found]     ` <1413987713-30528-5-git-send-email-ard.biesheuvel-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
2014-10-22 16:15       ` Mark Rutland
2014-10-22 16:15         ` Mark Rutland
2014-10-22 16:33         ` Ard Biesheuvel
2014-10-22 16:33           ` Ard Biesheuvel
     [not found]           ` <CAKv+Gu9pUY766Wf8cVfNtmjS8mXAB9PZswrRdgsKmz8+AOXrww-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2014-10-28 10:17             ` Ard Biesheuvel
2014-10-28 10:17               ` Ard Biesheuvel
2014-10-22 14:21   ` [PATCH 05/10] arm64/efi: drop redundant set_bit(EFI_CONFIG_TABLES) Ard Biesheuvel
2014-10-22 14:21     ` Ard Biesheuvel
     [not found]     ` <1413987713-30528-6-git-send-email-ard.biesheuvel-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
2014-10-27 12:22       ` Will Deacon
2014-10-27 12:22         ` Will Deacon
2014-10-22 14:21   ` [PATCH 06/10] arm64/efi: use UEFI memory map unconditionally if available Ard Biesheuvel
2014-10-22 14:21     ` Ard Biesheuvel
     [not found]     ` <1413987713-30528-7-git-send-email-ard.biesheuvel-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
2014-10-22 17:06       ` Mark Salter
2014-10-22 17:06         ` Mark Salter
     [not found]         ` <1413997616.2985.74.camel-PDpCo7skNiwAicBL8TP8PQ@public.gmane.org>
2014-10-22 17:20           ` Ard Biesheuvel
2014-10-22 17:20             ` Ard Biesheuvel
     [not found]             ` <CAKv+Gu-zy-3uGtq4a9EmRBLDsG5Q0vf32_=g7+x0p4HyrXEhxg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2014-10-22 17:29               ` Mark Salter
2014-10-22 17:29                 ` Mark Salter
2014-10-23 15:54           ` Mark Rutland
2014-10-23 15:54             ` Mark Rutland
2014-10-23 16:19             ` Mark Salter
2014-10-23 16:19               ` Mark Salter
     [not found]               ` <1414081198.6829.12.camel-PDpCo7skNiwAicBL8TP8PQ@public.gmane.org>
2014-10-23 18:41                 ` Ard Biesheuvel
2014-10-23 18:41                   ` Ard Biesheuvel
2014-10-23 19:14                 ` Mark Rutland
2014-10-23 19:14                   ` Mark Rutland
2014-10-23 19:23                   ` Ard Biesheuvel
2014-10-23 19:23                     ` Ard Biesheuvel
2014-10-22 14:21   ` [PATCH 07/10] efi: dmi: add support for SMBIOS 3.0 UEFI configuration table Ard Biesheuvel
2014-10-22 14:21     ` Ard Biesheuvel
     [not found]     ` <1413987713-30528-8-git-send-email-ard.biesheuvel-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
2014-10-27 15:26       ` Matt Fleming
2014-10-27 15:26         ` Matt Fleming
     [not found]         ` <20141027152611.GN12020-HNK1S37rvNbeXh+fF434Mdi2O/JbrIOy@public.gmane.org>
2014-10-27 15:33           ` Ard Biesheuvel
2014-10-27 15:33             ` Ard Biesheuvel
2014-10-22 14:21   ` [PATCH 08/10] dmi: add support for SMBIOS 3.0 64-bit entry point Ard Biesheuvel
2014-10-22 14:21     ` Ard Biesheuvel
2014-10-22 14:21   ` [PATCH 09/10] arm64: dmi: Add SMBIOS/DMI support Ard Biesheuvel
2014-10-22 14:21     ` Ard Biesheuvel
2014-10-22 14:21   ` [PATCH 10/10] arm64: dmi: set DMI string as dump stack arch description Ard Biesheuvel
2014-10-22 14:21     ` Ard Biesheuvel
     [not found]     ` <1413987713-30528-11-git-send-email-ard.biesheuvel-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
2014-10-27 12:24       ` Will Deacon
2014-10-27 12:24         ` Will Deacon
     [not found]         ` <20141027122451.GT8768-5wv7dgnIgG8@public.gmane.org>
2014-10-27 12:57           ` Ard Biesheuvel
2014-10-27 12:57             ` Ard Biesheuvel
2014-10-27 11:50   ` [PATCH 00/10] arm64 EFI patches for 3.19 Will Deacon
2014-10-27 11:50     ` Will Deacon
     [not found]     ` <20141027115055.GM8768-5wv7dgnIgG8@public.gmane.org>
2014-10-27 12:03       ` Ard Biesheuvel
2014-10-27 12:03         ` Ard Biesheuvel
     [not found]         ` <CAKv+Gu_0uobUr2Ytzg7p8W4akK-c=qnFxhzuy4mbgfxnKjBG2Q-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2014-10-27 17:45           ` Matt Fleming
2014-10-27 17:45             ` Matt Fleming
     [not found]             ` <1414431927.7122.471.camel-ZqTwcBeJ+wsBof6jY8KHXm7IUlhRatedral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
2014-10-28 12:38               ` Will Deacon
2014-10-28 12:38                 ` Will Deacon

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=20141022144908.GD4010@leverpostej \
    --to=mark.rutland@arm.com \
    --cc=Catalin.Marinas@arm.com \
    --cc=Will.Deacon@arm.com \
    --cc=ard.biesheuvel@linaro.org \
    --cc=dyoung@redhat.com \
    --cc=leif.lindholm@linaro.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-efi@vger.kernel.org \
    --cc=matt.fleming@intel.com \
    --cc=msalter@redhat.com \
    --cc=roy.franz@linaro.org \
    --cc=yi.li@linaro.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.