[PATCH u-boot v2] Enable FIT image support and FDT loading for AST2400/AST2500

Cédric Le Goater clg at kaod.org
Thu Nov 3 03:55:55 AEDT 2016


On 11/02/2016 07:31 AM, Joel Stanley wrote:
> Hi Rick,
> 
> On Wed, Nov 2, 2016 at 3:56 PM, Rick Altherr <raltherr at google.com> wrote:
>> FIT is the modern u-boot native image format for kernels, device trees,
>> and ramdisks.  Enabling FIT only compiles in support for the image
>> format.  For these devices, the kernel+dtb and ramdisk are loaded from
>> separate locations in flash and can be any mix of legacy or FIT images.
>> When using FIT images, the dtb is stored as a separate entry that
>> requires CONFIG_OF_LIBFDT to load it into RAM and pass it to the kernel.
>>
>> Tested under qemu with both legacy and FIT kernel+dtb images for
>> palmetto and witherspoon.
> 
> The changes look good to me.
> 
> Is the FIT support in v2016.07 new enough for us? Is there any reason
> to move to a v2016.09 base?
> 
> It does introduce a warning in a hack we carry for loading the
> initramfs, which I think points to a legitimate issue:
> 
> common/image.c: In function ‘boot_get_ramdisk’:
> common/image.c:1078:4: warning: ‘rd_load’ may be used uninitialized in
> this function [-Wmaybe-uninitialized]
>     memmove ((void *)rd_load, (uchar *)rd_data, rd_len);
>     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> 
> This code an Aspeed hack we carry. It is required to copy the
> initramfs from flash. Cedric was doing some investigation into why we
> need the hack, and it appears to be an upstream bug.
>
> If I read the code correctly, prior to enabling FIT we only accepted
> IMAGE_FORMAT_LEGACY. If we move the hack to be part of that case we
> should be ok, as we don't need to do the hack when loading from FIT.
> 
> Can you try that and add a second patch to your series that moves the hack?

Yes. please try to remove the hack copying the ramdisk in ram or take
that patch : 

  https://github.com/legoater/u-boot/commit/e503c2f5f5ddc967307e373569c09a0bd0e87038

Thanks,

C. 

> Finally, I took a look at the impact on code size. I used
> arm-linux-gnueabi-gcc (Ubuntu 6.2.0-5ubuntu12) 6.2.0 20161005 from
> Ubuntu 16.10.
> 
> $ size u-boot
>    text   data    bss    dec    hex filename
>  151636   4576  61620 217832  352e8 u-boot
>  222302   7952  62768 293022  4789e u-boot
> 
> Wow, the FIT image is fatter. What does FIT support pull in that
> increases the code size so much?
> 
> The on disk size suggests that size isn't lying:
> 
> Unfit: 156012
> FIT: 230056
> 
> Did we expect the change to be that large?
> 
> This is not a blocker, as we currently set aside 384KB for u-boot.
> 
> Cheers,
> 
> Joel
> 
> 
>>
>> Signed-off-by: Rick Altherr <raltherr at google.com>
>> ---
>> Changes since v1:
>> - Fixed commit message grammar
>> - Clarified config option needed for FDT loading
>> ---
>>  configs/ast_g4_ncsi_defconfig | 3 +++
>>  configs/ast_g4_phy_defconfig  | 3 +++
>>  configs/ast_g5_ncsi_defconfig | 3 +++
>>  configs/ast_g5_phy_defconfig  | 3 +++
>>  4 files changed, 12 insertions(+)
>>
>> diff --git a/configs/ast_g4_ncsi_defconfig b/configs/ast_g4_ncsi_defconfig
>> index 4ee71c5..70cd3c2 100644
>> --- a/configs/ast_g4_ncsi_defconfig
>> +++ b/configs/ast_g4_ncsi_defconfig
>> @@ -3,5 +3,8 @@ CONFIG_TARGET_AST_G4=y
>>  CONFIG_SYS_PROMPT="ast# "
>>  CONFIG_CMD_DHCP=y
>>  CONFIG_CMD_PING=y
>> +CONFIG_FIT=y
>> +CONFIG_FIT_VERBOSE=y
>> +CONFIG_OF_LIBFDT=y
>>  CONFIG_SPI_FLASH=y
>>  CONFIG_SYS_NS16550=y
>> diff --git a/configs/ast_g4_phy_defconfig b/configs/ast_g4_phy_defconfig
>> index 61fd69b..468fbc4 100644
>> --- a/configs/ast_g4_phy_defconfig
>> +++ b/configs/ast_g4_phy_defconfig
>> @@ -4,5 +4,8 @@ CONFIG_ASPEED_NET_PHY=y
>>  CONFIG_SYS_PROMPT="ast# "
>>  CONFIG_CMD_DHCP=y
>>  CONFIG_CMD_PING=y
>> +CONFIG_FIT=y
>> +CONFIG_FIT_VERBOSE=y
>> +CONFIG_OF_LIBFDT=y
>>  CONFIG_SPI_FLASH=y
>>  CONFIG_SYS_NS16550=y
>> diff --git a/configs/ast_g5_ncsi_defconfig b/configs/ast_g5_ncsi_defconfig
>> index 6d11afb..8a9c297 100644
>> --- a/configs/ast_g5_ncsi_defconfig
>> +++ b/configs/ast_g5_ncsi_defconfig
>> @@ -3,5 +3,8 @@ CONFIG_TARGET_AST_G5=y
>>  CONFIG_SYS_PROMPT="ast# "
>>  CONFIG_CMD_DHCP=y
>>  CONFIG_CMD_PING=y
>> +CONFIG_FIT=y
>> +CONFIG_FIT_VERBOSE=y
>> +CONFIG_OF_LIBFDT=y
>>  CONFIG_SPI_FLASH=y
>>  CONFIG_SYS_NS16550=y
>> diff --git a/configs/ast_g5_phy_defconfig b/configs/ast_g5_phy_defconfig
>> index 20f62e0..fd450b9 100644
>> --- a/configs/ast_g5_phy_defconfig
>> +++ b/configs/ast_g5_phy_defconfig
>> @@ -4,5 +4,8 @@ CONFIG_ASPEED_NET_PHY=y
>>  CONFIG_SYS_PROMPT="ast# "
>>  CONFIG_CMD_DHCP=y
>>  CONFIG_CMD_PING=y
>> +CONFIG_FIT=y
>> +CONFIG_FIT_VERBOSE=y
>> +CONFIG_OF_LIBFDT=y
>>  CONFIG_SPI_FLASH=y
>>  CONFIG_SYS_NS16550=y
>> --
>> 2.8.0.rc3.226.g39d4020
>>
>> _______________________________________________
>> openbmc mailing list
>> openbmc at lists.ozlabs.org
>> https://lists.ozlabs.org/listinfo/openbmc



More information about the openbmc mailing list