[PATCH 060/112] ARM: pbl: add 64K segment alignment for PE/COFF
Ahmad Fatoum
a.fatoum at pengutronix.de
Mon Jan 22 11:18:13 PST 2024
On 08.01.24 09:05, Sascha Hauer wrote:
> On Wed, Jan 03, 2024 at 07:12:20PM +0100, Ahmad Fatoum wrote:
>> An EFI stubbed ARM64 kernel can be booted either via EFI or via the
>> normal boot protocol. We'll want barebox to be able to behave the same,
>> so extend section alignment to enable this.
>
> This description reads as if it would change something, but at this
> point this patch only introduces unused defines. They are first used in
> 086/112.
>
> Does it hurt to move the usage of PBL_SEGMENT_ALIGN and PECOFF_EDATA_PADDING
> to this patch? If not, I'd suggest doing so to make the intention of
> this patch clearer.
Ok, done.
>
> Sascha
>
>>
>> Signed-off-by: Ahmad Fatoum <a.fatoum at pengutronix.de>
>> ---
>> arch/arm/include/asm/memory.h | 20 ++++++++++++++++++++
>> arch/arm/lib/pbl.lds.S | 18 ++++++++++++++++++
>> 2 files changed, 38 insertions(+)
>>
>> diff --git a/arch/arm/include/asm/memory.h b/arch/arm/include/asm/memory.h
>> index 23fbbd8438a1..765b089beb59 100644
>> --- a/arch/arm/include/asm/memory.h
>> +++ b/arch/arm/include/asm/memory.h
>> @@ -3,6 +3,9 @@
>> #ifndef __ASM_ARM_MEMORY_H
>> #define __ASM_ARM_MEMORY_H
>>
>> +#include <linux/sizes.h>
>> +
>> +#ifndef __ASSEMBLY__
>> #include <memory.h>
>>
>> #include <linux/const.h>
>> @@ -13,4 +16,21 @@ static inline int arm_add_mem_device(const char* name, resource_size_t start,
>> return barebox_add_memory_bank(name, start, size);
>> }
>>
>> +#endif
>> +
>> +
>> +/*
>> + * Alignment of barebox PBL segments (e.g. .text, .data).
>> + *
>> + * 4 B granule: Same flat rwx mapping for everything
>> + * 4 KB granule: 16 level 3 entries, with contiguous bit
>> + * 16 KB granule: 4 level 3 entries, without contiguous bit
>> + * 64 KB granule: 1 level 3 entry
>> + */
>> +#ifdef CONFIG_EFI_PAYLOAD
>> +#define PBL_SEGMENT_ALIGN SZ_64K
>> +#else
>> +#define PBL_SEGMENT_ALIGN 4
>> +#endif
>> +
>> #endif /* __ASM_ARM_MEMORY_H */
>> diff --git a/arch/arm/lib/pbl.lds.S b/arch/arm/lib/pbl.lds.S
>> index cafb27b2d55e..95929d7558bc 100644
>> --- a/arch/arm/lib/pbl.lds.S
>> +++ b/arch/arm/lib/pbl.lds.S
>> @@ -5,6 +5,24 @@
>> #include <asm/barebox.lds.h>
>> #include <asm-generic/memory_layout.h>
>> #include <asm-generic/pointer.h>
>> +#include <asm/memory.h>
>> +
>> +/*
>> + * The size of the PE/COFF section that covers the barebox 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 must be 4 KB aligned, because that's what the adrp instructions
>> + * expects, so padding out _edata to a 0x200 aligned boundary should be
>> + * sufficient.
>> + */
>> +PECOFF_FILE_ALIGNMENT = 0x200;
>> +
>> +#ifdef CONFIG_EFI_STUB
>> +#define PECOFF_EDATA_PADDING \
>> + .pecoff_edata_padding : { BYTE(0); . = ALIGN(PECOFF_FILE_ALIGNMENT); }
>> +#else
>> +#define PECOFF_EDATA_PADDING
>> +#endif
>>
>> #ifdef CONFIG_PBL_RELOCATABLE
>> #define BASE 0x0
>> --
>> 2.39.2
>>
>>
>>
>
--
Pengutronix e.K. | |
Steuerwalder Str. 21 | http://www.pengutronix.de/ |
31137 Hildesheim, Germany | Phone: +49-5121-206917-0 |
Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |
More information about the barebox
mailing list