Hi Wolfgang, On Thu, Feb 21, 2013 at 4:04 AM, Wolfgang Denk <w...@denx.de> wrote: > Dear Simon Glass, > > In message <1361379515-23802-17-git-send-email-...@chromium.org> you wrote: >> Some hashing commands permit saving the hash in an environment variable, >> and verifying a hash from there. But the crc32 command does not support >> this. In order to permit crc32 to use the generic hashing infrastructure, >> add a flag to select which behaviour to use. > > <nitpick> > > ... >> + /* >> + * If environment variables are allowed, then we assume that 'dest' >> + * is an environment variable, unless it starts with *, in which >> + * case we assume it is an address. If not allowed, it ia always an > > s/it ia/it is/ > > </nitpick> > > What's the impact of these changes on the memory footprint?
Overall it is pretty neutral, although there are some variations. For powerpc the overall affect is to save an average of 13.9 bytes across the whole image. arm does a bit better: 24: hash: Use lower case for hash algorithm names sandbox: sandbox x86: (for 1/1 boards) all -74.0 data +16.0 rodata +10.0 text -100.0 m68k: (for 41/50 boards) all -44.7 bss +0.5 data +0.8 rodata -1.0 text -44.9 powerpc: (for 633/635 boards) all -13.9 bss +14.4 data -3.6 rodata -19.6 text -5.1 sandbox: (for 1/1 boards) all +24336.0 bss +48.0 data +168.0 rodata +432.0 text +23688.0 sh: (for 16/21 boards) all +18.8 rodata -1.2 text +20.0 nios2: (for 3/3 boards) all +277.3 text +277.3 microblaze: (for 1/1 boards) all -832.0 bss +8.0 data -16.0 rodata -120.0 text -704.0 arm: (for 292/292 boards) all -277.8 bss +0.4 data +0.3 rodata -3.8 spl/u-boot-spl:all -0.2 spl/u-boot-spl:rodata -0.1 spl/u-boot-spl:text -0.1 text -274.7 nds32: (for 3/3 boards) all -116.0 data +4.0 rodata -16.0 text -104.0 Bad boards define CONFIG_CMD_CRC32 along with CONFIG_CRC32_VERIFY, thus bringing in the hash code, but they don't enable the hash command or have sha1, so this is the worst case. Good boards benefit from the getenv/setenv helpers and use the small version of the hash code (since they only define CONFIG_CMD_CRC32). The vast majority of boards show a slight improvement overall. This is the worst powerpc board: powerpc: (for 2/2 boards) all +284.5 bss +12.0 rodata -13.5 text +286.0 stxxtc : all +941 bss +24 data +16 rodata +89 text +812 u-boot: add: 8/0, grow: 3/-10 bytes: 1254/-432 (822) function old new delta hash_command - 740 +740 show_hash - 108 +108 simple_itoa - 104 +104 crc32_wd_buf - 76 +76 setenv_hex - 64 +64 setenv_ulong - 52 +52 do_mem_mtest 468 512 +44 static.local - 22 +22 do_mem_loop 268 288 +20 hash_algo - 16 +16 do_mem_cmp 356 364 +8 do_mem_mw 224 220 -4 set_working_fdt_addr 68 52 -16 load_serial_ymodem 288 272 -16 load_serial 504 488 -16 do_load_serial_bin 1812 1796 -16 do_imgextract 656 620 -36 NetLoop 784 748 -36 do_bootm 1216 1164 -52 do_mem_cp 344 288 -56 do_mem_crc 308 124 -184 This is the best powerpc board: P2041RDB_SRIO_PCIE_BOOT: all -372 data -16 rodata -116 text -240 u-boot: add: 5/-1, grow: 2/-15 bytes: 446/-640 (-194) function old new delta hash_command - 176 +176 simple_itoa - 104 +104 setenv_hex - 64 +64 setenv_ulong - 52 +52 static.local - 22 +22 do_mem_loop 268 288 +20 do_mem_cmp 324 332 +8 do_mem_mw 224 220 -4 set_working_fdt_addr 68 52 -16 load_serial_ymodem 228 212 -16 load_serial 460 444 -16 hash_algo 16 - -16 fm_init_common 1336 1320 -16 do_load_serial_bin 1812 1796 -16 do_load 460 444 -16 do_imgextract 864 828 -36 NetLoop 780 744 -36 nand_print_and_set_info 224 172 -52 do_bootm 1236 1184 -52 do_setexpr 436 376 -60 do_mem_cp 244 156 -88 do_mem_crc 184 88 -96 do_mem_mtest 1400 1296 -104 This is tricky because I am trying to bring in a generic infrastructure for hashing and make use of it everywhere, but unfortunately those boards that don't really make much use of it still have to pay a price. That said, only 15 powerpc boards are in the 'bad' camp and none is as bad as stxxtc. There is also some saving to be had by changing simple_itoa() to use the existing put_dec() if we want to. Overall I'm hoping that the crc32 patch is worth the trouble. Regards, Simon > > Best regards, > > Wolfgang Denk > > -- > DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel > HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany > Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: w...@denx.de > Let us not look back in anger or forward in fear, but around in > awareness. - James Thurber _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot