Message ID | 1412960335-22905-1-git-send-email-ard.biesheuvel@linaro.org |
---|---|
State | Superseded |
Headers | show |
On Fri, Oct 10, 2014 at 9:58 AM, Ard Biesheuvel <ard.biesheuvel@linaro.org> wrote: > Change our PE/COFF header to use the minimum file alignment of > 512 bytes (0x200), as mandated by the PE/COFF spec v8.3 > > Also update the linker script so that the Image file itself is also a > round multiple of FileAlignment. > > Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> > --- Signed-off-by: Roy Franz <roy.franz@linaro.org> > > Another one from the PE/COFF rabbit hole. I will follow up next week and repost > as a coherent series, once I have collected all the feedback. > > arch/arm64/kernel/head.S | 2 +- > arch/arm64/kernel/vmlinux.lds.S | 17 +++++++++++++++++ > 2 files changed, 18 insertions(+), 1 deletion(-) > > diff --git a/arch/arm64/kernel/head.S b/arch/arm64/kernel/head.S > index ba715ce3f7f1..e7e83b3128fd 100644 > --- a/arch/arm64/kernel/head.S > +++ b/arch/arm64/kernel/head.S > @@ -162,7 +162,7 @@ optional_header: > extra_header_fields: > .quad 0 // ImageBase > .long 0x1000 // SectionAlignment > - .long 0x8 // FileAlignment > + .long PECOFF_FILE_ALIGNMENT // FileAlignment > .short 0 // MajorOperatingSystemVersion > .short 0 // MinorOperatingSystemVersion > .short 0 // MajorImageVersion > diff --git a/arch/arm64/kernel/vmlinux.lds.S b/arch/arm64/kernel/vmlinux.lds.S > index edf8715ba39b..4596f46d0244 100644 > --- a/arch/arm64/kernel/vmlinux.lds.S > +++ b/arch/arm64/kernel/vmlinux.lds.S > @@ -32,6 +32,22 @@ jiffies = jiffies_64; > *(.hyp.text) \ > VMLINUX_SYMBOL(__hyp_text_end) = .; > > +/* > + * The size of the PE/COFF section that covers the kernel image, which > + * runs from stext to _edata, must be a round multiple of the PE/COFF > + * FileAlignment, which we set to its minimum value of 0x200. 'stext' > + * itself is 4 KB aligned, so padding out _edata to a 0x200 aligned > + * boundary should be sufficient. > + */ > +PECOFF_FILE_ALIGNMENT = 0x200; > + > +#ifdef CONFIG_EFI > +#define PECOFF_EDATA_PADDING \ > + .pecoff_edata_padding : { BYTE(0); . = ALIGN(PECOFF_FILE_ALIGNMENT); } > +#else > +#define PECOFF_EDATA_PADDING > +#endif > + > SECTIONS > { > /* > @@ -103,6 +119,7 @@ SECTIONS > _data = .; > _sdata = .; > RW_DATA_SECTION(64, PAGE_SIZE, THREAD_SIZE) > + PECOFF_EDATA_PADDING > _edata = .; > > BSS_SECTION(0, 0, 0) > -- > 1.8.3.2 >
On Fri, 10 Oct, at 10:07:48AM, Roy Franz wrote: > On Fri, Oct 10, 2014 at 9:58 AM, Ard Biesheuvel > <ard.biesheuvel@linaro.org> wrote: > > Change our PE/COFF header to use the minimum file alignment of > > 512 bytes (0x200), as mandated by the PE/COFF spec v8.3 > > > > Also update the linker script so that the Image file itself is also a > > round multiple of FileAlignment. > > > > Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> > > --- > > Signed-off-by: Roy Franz <roy.franz@linaro.org> Whut? Is there some patch authorship madness going on here? Who wrote the patch?
On 16 October 2014 15:52, Matt Fleming <matt@console-pimps.org> wrote: > On Fri, 10 Oct, at 10:07:48AM, Roy Franz wrote: >> On Fri, Oct 10, 2014 at 9:58 AM, Ard Biesheuvel >> <ard.biesheuvel@linaro.org> wrote: >> > Change our PE/COFF header to use the minimum file alignment of >> > 512 bytes (0x200), as mandated by the PE/COFF spec v8.3 >> > >> > Also update the linker script so that the Image file itself is also a >> > round multiple of FileAlignment. >> > >> > Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> >> > --- >> >> Signed-off-by: Roy Franz <roy.franz@linaro.org> > > Whut? Is there some patch authorship madness going on here? > > Who wrote the patch? > I wrote the patch, and I suppose Roy meant to ack it. Roy?
On Fri, Oct 10, 2014 at 05:58:55PM +0100, Ard Biesheuvel wrote: > Change our PE/COFF header to use the minimum file alignment of > 512 bytes (0x200), as mandated by the PE/COFF spec v8.3 > > Also update the linker script so that the Image file itself is also a > round multiple of FileAlignment. > > Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> > --- > > Another one from the PE/COFF rabbit hole. I will follow up next week and repost > as a coherent series, once I have collected all the feedback. If Matt is taking more patches in this series, here's my ack: Acked-by: Catalin Marinas <catalin.marinas@arm.com>
On Thu, Oct 16, 2014 at 9:06 AM, Ard Biesheuvel <ard.biesheuvel@linaro.org> wrote: > On 16 October 2014 15:52, Matt Fleming <matt@console-pimps.org> wrote: >> On Fri, 10 Oct, at 10:07:48AM, Roy Franz wrote: >>> On Fri, Oct 10, 2014 at 9:58 AM, Ard Biesheuvel >>> <ard.biesheuvel@linaro.org> wrote: >>> > Change our PE/COFF header to use the minimum file alignment of >>> > 512 bytes (0x200), as mandated by the PE/COFF spec v8.3 >>> > >>> > Also update the linker script so that the Image file itself is also a >>> > round multiple of FileAlignment. >>> > >>> > Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> >>> > --- >>> >>> Signed-off-by: Roy Franz <roy.franz@linaro.org> >> >> Whut? Is there some patch authorship madness going on here? >> >> Who wrote the patch? >> > > I wrote the patch, and I suppose Roy meant to ack it. > > Roy? > > -- > Ard. Sorry! Acked-by: Roy Franz <roy.franz@linaro.org>
On Fri, 10 Oct, at 06:58:55PM, Ard Biesheuvel wrote: > Change our PE/COFF header to use the minimum file alignment of > 512 bytes (0x200), as mandated by the PE/COFF spec v8.3 > > Also update the linker script so that the Image file itself is also a > round multiple of FileAlignment. > > Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> > --- > > Another one from the PE/COFF rabbit hole. I will follow up next week and repost > as a coherent series, once I have collected all the feedback. It appears a though next week never came. Should I pick up this version and apply ACK tags from the mailing list? Or are you planning on sending a larger series? It sounds like this should be tagged for stable, and placed into the EFI urgent queue?
On 21 October 2014 14:35, Matt Fleming <matt@console-pimps.org> wrote: > On Fri, 10 Oct, at 06:58:55PM, Ard Biesheuvel wrote: >> Change our PE/COFF header to use the minimum file alignment of >> 512 bytes (0x200), as mandated by the PE/COFF spec v8.3 >> >> Also update the linker script so that the Image file itself is also a >> round multiple of FileAlignment. >> >> Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> >> --- >> >> Another one from the PE/COFF rabbit hole. I will follow up next week and repost >> as a coherent series, once I have collected all the feedback. > > It appears a though next week never came. > > Should I pick up this version and apply ACK tags from the mailing list? > Or are you planning on sending a larger series? > > It sounds like this should be tagged for stable, and placed into the EFI > urgent queue? > I have a couple of patches like this one in my queue, and I don't think any of them are urgent. These alignment fixes etc are mainly for full compliance with the various specs, and there are no known issues being solved by them. I was going to wait for -rc1 and rebase on top of that, but it appears your branch hasn't been picked up?
diff --git a/arch/arm64/kernel/head.S b/arch/arm64/kernel/head.S index ba715ce3f7f1..e7e83b3128fd 100644 --- a/arch/arm64/kernel/head.S +++ b/arch/arm64/kernel/head.S @@ -162,7 +162,7 @@ optional_header: extra_header_fields: .quad 0 // ImageBase .long 0x1000 // SectionAlignment - .long 0x8 // FileAlignment + .long PECOFF_FILE_ALIGNMENT // FileAlignment .short 0 // MajorOperatingSystemVersion .short 0 // MinorOperatingSystemVersion .short 0 // MajorImageVersion diff --git a/arch/arm64/kernel/vmlinux.lds.S b/arch/arm64/kernel/vmlinux.lds.S index edf8715ba39b..4596f46d0244 100644 --- a/arch/arm64/kernel/vmlinux.lds.S +++ b/arch/arm64/kernel/vmlinux.lds.S @@ -32,6 +32,22 @@ jiffies = jiffies_64; *(.hyp.text) \ VMLINUX_SYMBOL(__hyp_text_end) = .; +/* + * The size of the PE/COFF section that covers the kernel image, which + * runs from stext to _edata, must be a round multiple of the PE/COFF + * FileAlignment, which we set to its minimum value of 0x200. 'stext' + * itself is 4 KB aligned, so padding out _edata to a 0x200 aligned + * boundary should be sufficient. + */ +PECOFF_FILE_ALIGNMENT = 0x200; + +#ifdef CONFIG_EFI +#define PECOFF_EDATA_PADDING \ + .pecoff_edata_padding : { BYTE(0); . = ALIGN(PECOFF_FILE_ALIGNMENT); } +#else +#define PECOFF_EDATA_PADDING +#endif + SECTIONS { /* @@ -103,6 +119,7 @@ SECTIONS _data = .; _sdata = .; RW_DATA_SECTION(64, PAGE_SIZE, THREAD_SIZE) + PECOFF_EDATA_PADDING _edata = .; BSS_SECTION(0, 0, 0)
Change our PE/COFF header to use the minimum file alignment of 512 bytes (0x200), as mandated by the PE/COFF spec v8.3 Also update the linker script so that the Image file itself is also a round multiple of FileAlignment. Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> --- Another one from the PE/COFF rabbit hole. I will follow up next week and repost as a coherent series, once I have collected all the feedback. arch/arm64/kernel/head.S | 2 +- arch/arm64/kernel/vmlinux.lds.S | 17 +++++++++++++++++ 2 files changed, 18 insertions(+), 1 deletion(-)