[U-Boot] [PATCH 1/2] ARM: image: Add option for ignoring ep bit 3
Marek Vasut
marek.vasut at gmail.com
Mon Jun 4 16:27:32 UTC 2018
On 06/04/2018 02:59 AM, Tom Rini wrote:
> On Sat, Jun 02, 2018 at 11:36:00PM +0200, Marek Vasut wrote:
>
>> Add option to the booti_setup() which indicates to it that the caller
>> requires the image to be relocated to the beginning of the RAM and
>> that the information whether the image can be located anywhere in RAM
>> at 2 MiB aligned boundary or not is to be ignored. This is useful ie.
>> in case the Image is wrapped in another envelope, ie. fitImage and not
>> relocating it but moving it would corrupt the envelope.
>>
>> Signed-off-by: Marek Vasut <marek.vasut+renesas at gmail.com>
>> Cc: Bin Chen <bin.chen at linaro.org>
>> Cc: Masahiro Yamada <yamada.masahiro at socionext.com>
>> Cc: Tom Rini <trini at konsulko.com>
>> ---
>> arch/arm/lib/image.c | 5 +++--
>> cmd/booti.c | 2 +-
>> include/image.h | 4 +++-
>> 3 files changed, 7 insertions(+), 4 deletions(-)
>>
>> diff --git a/arch/arm/lib/image.c b/arch/arm/lib/image.c
>> index 1a04e2b875..08c7b8a54f 100644
>> --- a/arch/arm/lib/image.c
>> +++ b/arch/arm/lib/image.c
>> @@ -26,7 +26,8 @@ struct Image_header {
>> uint32_t res5;
>> };
>>
>> -int booti_setup(ulong image, ulong *relocated_addr, ulong *size)
>> +int booti_setup(ulong image, ulong *relocated_addr, ulong *size,
>> + int ignore_ep)
>
> This should be 'bool' not 'int'.
Which blows up a couple of things, so to keep this patch small, it's int.
>> {
>> struct Image_header *ih;
>> uint64_t dst;
>> @@ -63,7 +64,7 @@ int booti_setup(ulong image, ulong *relocated_addr, ulong *size)
>> * images->ep. Otherwise, relocate the image to the base of RAM
>> * since memory below it is not accessible via the linear mapping.
>> */
>> - if (le64_to_cpu(ih->flags) & BIT(3))
>> + if (!ignore_ep && (le64_to_cpu(ih->flags) & BIT(3)))
>> dst = image - text_offset;
>> else
>> dst = gd->bd->bi_dram[0].start;
>> diff --git a/cmd/booti.c b/cmd/booti.c
>> index 45fbb99b68..6d449b1995 100644
>> --- a/cmd/booti.c
>> +++ b/cmd/booti.c
>> @@ -37,7 +37,7 @@ static int booti_start(cmd_tbl_t *cmdtp, int flag, int argc,
>> debug("* kernel: cmdline image address = 0x%08lx\n", ld);
>> }
>>
>> - ret = booti_setup(ld, &relocated_addr, &image_size);
>> + ret = booti_setup(ld, &relocated_addr, &image_size, 0);
>> if (ret != 0)
>> return 1;
>>
>> diff --git a/include/image.h b/include/image.h
>> index 95d5934344..0f70f2a9d2 100644
>> --- a/include/image.h
>> +++ b/include/image.h
>> @@ -881,9 +881,11 @@ int bootz_setup(ulong image, ulong *start, ulong *end);
>> * @image: Address of image
>> * @start: Returns start address of image
>> * @size : Returns size image
>> + * @ignore_ep: Ignore image->ep field, always place image to RAM start
>
> First, to quote the kernel doc here:
> " Bit 3: Kernel physical placement
> 0 - 2MB aligned base should be as close as possible
> to the base of DRAM, since memory below it is not
> accessible via the linear mapping
> 1 - 2MB aligned base may be anywhere in physical
> memory"
>
> maybe call it "force_reloc_to_base" ? Or at least something about
> "force"
Hummm.
--
Best regards,
Marek Vasut
More information about the U-Boot
mailing list