[U-Boot] [PATCH] spl: fit: Enable GZIP compression also for no kernel partitions

York Sun york.sun at nxp.com
Thu Jul 26 16:23:14 UTC 2018


On 07/25/2018 11:52 PM, Michal Simek wrote:
> On 25.7.2018 23:18, York Sun wrote:
>> On 07/24/2018 10:58 PM, Michal Simek wrote:
>>> On 24.7.2018 18:26, York Sun wrote:
>>>> On 07/24/2018 06:07 AM, Michal Simek wrote:
>>>>> There is no reason to limit gzip usage only for OS_BOOT and kernel image
>>>>> type.
>>>>>
>>>>> Signed-off-by: Michal Simek <michal.simek at xilinx.com>
>>>>> ---
>>>>>
>>>>>  common/spl/spl_fit.c | 5 +----
>>>>>  1 file changed, 1 insertion(+), 4 deletions(-)
>>>>>
>>>>> diff --git a/common/spl/spl_fit.c b/common/spl/spl_fit.c
>>>>> index 9eabb1c1058b..dbf5ac33a845 100644
>>>>> --- a/common/spl/spl_fit.c
>>>>> +++ b/common/spl/spl_fit.c
>>>>> @@ -257,10 +257,7 @@ static int spl_load_fit_image(struct spl_load_info *info, ulong sector,
>>>>>  	board_fit_image_post_process(&src, &length);
>>>>>  #endif
>>>>>  
>>>>> -	if (IS_ENABLED(CONFIG_SPL_OS_BOOT)	&&
>>>>> -	    IS_ENABLED(CONFIG_SPL_GZIP)		&&
>>>>> -	    image_comp == IH_COMP_GZIP		&&
>>>>> -	    type == IH_TYPE_KERNEL) {
>>>>> +	if (IS_ENABLED(CONFIG_SPL_GZIP) && image_comp == IH_COMP_GZIP) {
>>>>>  		size = length;
>>>>>  		if (gunzip((void *)load_addr, CONFIG_SYS_BOOTM_LEN,
>>>>>  			   src, &size)) {
>>>>>
>>>>
>>>> This will uncompress ramdisk unnecessarily.
>>>
>>> Can you please share your its fragment? Also is there any other image
>>> which should be exclude?
>>
>> I used it for falcon boot. I guess the executable image should have "entry". In
>> my setup, only kernel image has "entry". Here is my its file.
>>
>> /dts-v1/;
>>
>> / {
>> 	description = "Image file for the LS1046A Linux Kernel";
>> 	#address-cells = <1>;
>>
>> 	images {
>> 		kernel at 1 {
>> 			description = "ARM64 Linux kernel";
>> 			data = /incbin/("./arch/arm64/boot/Image.gz");
>> 			type = "kernel";
>> 			arch = "arm64";
>> 			os = "linux";
>> 			compression = "gzip";
>> 			load = <0x80080000>;
>> 			entry = <0x80080000>;
>> 		};
>> 		fdt at 1 {
>> 			description = "Flattened Device Tree blob";
>> 			data = /incbin/("./fsl-ls1046ardb.dtb");
>> 			type = "flat_dt";
>> 			arch = "arm64";
>> 			compression = "none";
>> 			load = <0x90000000>;
>> 		};
>> 		ramdisk at 1 {
>> 			description = "Buildroot initramfs";
>>                         data = /incbin/("./rootfs.cpio.gz");
>> 			type = "ramdisk";
>> 			arch = "arm64";
>> 			os = "linux";
>> 			compression = "gzip";
> 
> I have tested full u-boot and there is also no uncompression for ramdisk
> when you put gzip compress there.
> I have even tried gzip compression for fdt with expectation that u-boot
> will uncompress it.
> 
> Based on doc/uImage.FIT/source_file_format.txt:
> 165  - compression : Compression used by included data. Supported
> compressions
> 166     are "gzip" and "bzip2". If no compression is used compression
> property
> 167     should be set to "none".
> 
> 
> Based on me this means that data inside fit are compressed and you are
> asking u-boot in boot to uncompress it. If you are not asking for that
> you should put none there.
> But it doesn't look like this is supported at all for fdt/ramdisk and it
> is only handled for OS.
> I see here two cases.
> 1. I want u-boot to uncompress my data in fit image (whatever it is)
> before passing control to OS that's why I putting there compression method.
> 2. I want OS to uncompress data but I want pass this data unchanged from
> u-boot to OS that's why I am putting compression method at "none"
> 
> I am expecting when you put "none" there than you will boot in falcon
> mode without any issue.

That will work. I can put "none" for the images I don't want U-Boot to
uncompress.

> 
> I have no problem to change this patch and include only kernel and fpga
> image but it sounds to me that we have gaps in implementation that not
> all images inside the fit image have the same range of functionalities.
> 
> Also I think that "load" entry is that one which matters not "entry".
> 

Not true here. The "entry" matters if you want to run it, for example
Linux kernel. It may be different from "load".

York


More information about the U-Boot mailing list