On Thu, Mar 26, 2020 at 05:59:05PM +0100, Ard Biesheuvel wrote: > Update the PE/COFF metadata so that the UEFI image loader will load the > kernel image at an offset that allows it to execute in place. > > Signed-off-by: Ard Biesheuvel <ardb@xxxxxxxxxx> > --- > arch/arm64/kernel/efi-header.S | 2 +- > arch/arm64/kernel/image-vars.h | 7 +++++++ > 2 files changed, 8 insertions(+), 1 deletion(-) > > diff --git a/arch/arm64/kernel/efi-header.S b/arch/arm64/kernel/efi-header.S > index 914999ccaf8a..f9ee1c2a5fd6 100644 > --- a/arch/arm64/kernel/efi-header.S > +++ b/arch/arm64/kernel/efi-header.S > @@ -32,7 +32,7 @@ optional_header: > > extra_header_fields: > .quad 0 // ImageBase > - .long SZ_4K // SectionAlignment > + .long PECOFF_SECTION_ALIGNMENT // SectionAlignment > .long PECOFF_FILE_ALIGNMENT // FileAlignment > .short 0 // MajorOperatingSystemVersion > .short 0 // MinorOperatingSystemVersion > diff --git a/arch/arm64/kernel/image-vars.h b/arch/arm64/kernel/image-vars.h > index be0a63ffed23..7a7fa3ba7b2f 100644 > --- a/arch/arm64/kernel/image-vars.h > +++ b/arch/arm64/kernel/image-vars.h > @@ -15,6 +15,13 @@ > __efistub_kernel_size = _edata - _text; > __efistub_primary_entry_offset = primary_entry - _text; > > +#ifndef CONFIG_RELOCATABLE > +PECOFF_SECTION_ALIGNMENT = SZ_4K; > +#elif THREAD_ALIGN > SEGMENT_ALIGN > +PECOFF_SECTION_ALIGNMENT = THREAD_ALIGN; > +#else > +PECOFF_SECTION_ALIGNMENT = SEGMENT_ALIGN; > +#endif > > /* > * The EFI stub has its own symbol namespace prefixed by __efistub_, to > -- > 2.17.1 > The section virtual addresses and (possibly) size of image need to be updated to be a multiple of PECOFF_SECTION_ALIGNMENT, no?