[PATCH] sunxi-common: support loading compressed kernel images on ARMv8
Samuel Holland
samuel at sholland.org
Sun Apr 18 09:21:48 CEST 2021
Andre,
On 4/17/21 1:23 PM, Andre Przywara wrote:
> On Sat, 17 Apr 2021 12:47:23 -0500 Samuel Holland <samuel at sholland.org> wrote:
>> On 3/31/21 10:39 AM, Andre Przywara wrote:
>>> On 20/02/2021 12:14, Nicolas Boulenguez wrote:
>>>
>>> Hi Arnaud,
>>>
>>>> From: Arnaud Ferraris <arnaud.ferraris at gmail.com>
>>>
>>> as mentioned before, this looks useful, so can you re-send this with a
>>> commit message and your Signed-off-by:?
>>
>> It looks like you picked up this patch regardless?
>
> Yes, I asked him twice, without any reply. At the end I figured that
> the danger of a copyright infringement is low given the nature of the
> change, and I didn't feel this should block this useful feature. The
> alternative would be to have sent it as a patch of mine, but I felt
> that I should preserve his authorship, so took the patch anyway.
> I got a reply from him on another patch, and it's not his first U-Boot
> patch, so I think it's just an oversight (from the sender of the patch?)
>
> Chen-Yu asked about the feature lately, so if you think that approach
> is dodgy, we can revert it and take another version of the patch.
Okay, I'll trust your judgement here.
>>> Also I was wondering if you could increase the COMP_SIZE? The 64MB look
>>> rather arbitrary and maybe unnecessarily limiting. I think we could go
>>> up till 0xfa00000, but maybe should stop at 0xf800000, to leave some
>>> space for further extensions?
>>
>> And you changed KERNEL_COMP_SIZE to 0xb000000. How does that work when
>> U-Boot itself is at 0x4a000000 (KERNEL_COMP_ADDR_R + 0x6000000)?
>
> It's not anymore at this time, that's just the load address, and it
> relocates itself to the end of DRAM very early. So basically the whole
> memory except the very end is available.
>
> Btw, the reason we confine everything to below 0x50000000 is just that
> we need to concatenate the base (0x4....) with that offset, and cannot
> use arithmetic, because that doesn't work in the Makefiles.
Ah, that makes sense. So we're assuming that U-Boot relocates itself
above 0x50000000, and so nothing important remains inside the address
range used by sunxi-common.h.
Thanks for the explanation,
Samuel
> Cheers,
> Andre
>
>>>> ---
>>>> include/configs/sunxi-common.h | 15 +++++++++++++++
>>>> 1 file changed, 15 insertions(+)
>>>>
>>>> diff --git a/include/configs/sunxi-common.h b/include/configs/sunxi-common.h
>>>> index 5b0bec0561..227284cd29 100644
>>>> --- a/include/configs/sunxi-common.h
>>>> +++ b/include/configs/sunxi-common.h
>>>> @@ -291,6 +291,8 @@ extern int soft_i2c_gpio_scl;
>>>> */
>>>> #define BOOTM_SIZE __stringify(0xa000000)
>>>> #define KERNEL_ADDR_R __stringify(SDRAM_OFFSET(0080000))
>>>> +#define KERNEL_COMP_ADDR_R __stringify(SDRAM_OFFSET(4000000))
>>>> +#define KERNEL_COMP_SIZE __stringify(0x4000000)
>>>> #define FDT_ADDR_R __stringify(SDRAM_OFFSET(FA00000))
>>>> #define SCRIPT_ADDR_R __stringify(SDRAM_OFFSET(FC00000))
>>>> #define PXEFILE_ADDR_R __stringify(SDRAM_OFFSET(FD00000))
>>>> @@ -332,6 +334,18 @@ extern int soft_i2c_gpio_scl;
>>>> "pxefile_addr_r=" PXEFILE_ADDR_R "\0" \
>>>> "ramdisk_addr_r=" RAMDISK_ADDR_R "\0"
>>>>
>>>> +#ifdef CONFIG_ARM64
>>>> +
>>>> +#define MEM_LAYOUT_ENV_EXTRA_SETTINGS \
>>>> + "kernel_comp_addr_r=" KERNEL_COMP_ADDR_R "\0" \
>>>> + "kernel_comp_size=" KERNEL_COMP_SIZE "\0"
>>>> +
>>>> +#else
>>>> +
>>>> +#define MEM_LAYOUT_ENV_EXTRA_SETTINGS ""
>>
>> This can be defined to nothing. No empty string is needed.
>>
>>>> +
>>>> +#endif
>>>> +
>>>> #define DFU_ALT_INFO_RAM \
>>>> "dfu_alt_info_ram=" \
>>>> "kernel ram " KERNEL_ADDR_R " 0x1000000;" \
>>>> @@ -487,6 +501,7 @@ extern int soft_i2c_gpio_scl;
>>>> #define CONFIG_EXTRA_ENV_SETTINGS \
>>>> CONSOLE_ENV_SETTINGS \
>>>> MEM_LAYOUT_ENV_SETTINGS \
>>>> + MEM_LAYOUT_ENV_EXTRA_SETTINGS \
>>>> DFU_ALT_INFO_RAM \
>>>> "fdtfile=" FDTFILE "\0" \
>>>> "console=ttyS0,115200\0" \
>>>>
>>>
>>
>
More information about the U-Boot
mailing list