[coreboot] Zero compression in v3 patch

Myles Watson myles at pel.cs.byu.edu
Thu Feb 14 18:13:16 CET 2008


This patch adds zero compression for bss segments.  One of the reasons
for this is that currently, if you select no compression, the bss
segment of filo takes up 153K with just zeroes.  With this patch, it
always takes up a lar header + 1 byte.  I left the one byte so that
the checksum wouldn't be broken.

This patch could have taken out the calloc in the compression area,
but since it only uses compile-time memory, I decided to keep this
simple.

I've included the results from lar -l for the four interesting cases.

Myles

Signed-off-by: Myles Watson <myles at pel.cs.byu.edu>

Using lzma compression (with the patch):
  normal/payload/segment0 (152704 bytes, zeroes compressed to 1 bytes
@0x50);loadaddress 0x0x10bd80 entry 0x0x109c84
  normal/payload/segment1 (48488 bytes, lzma compressed to 28098 bytes
@0xb0);loadaddress 0x0x100000 entry 0x0x109c84
  normal/payload/segment2 (72 bytes, lzma compressed to 47 bytes
@0x6ed0);loadaddress 0x0x131200 entry 0x0x109c84
  normal/option_table (932 bytes @0x6f50);loadaddress 0x0 entry 0x0
  normal/stage2/segment0 (191792 bytes, zeroes compressed to 1 bytes
@0x7350);loadaddress 0x0xb2a0 entry 0x0x2000
  normal/stage2/segment1 (28116 bytes, lzma compressed to 15008 bytes
@0x73b0);loadaddress 0x0x2000 entry 0x0x2000
  normal/stage2/segment2 (5308 bytes, lzma compressed to 313 bytes
@0xaea0);loadaddress 0x0x9de0 entry 0x0x2000
  normal/initram/segment0 (432 bytes @0xb030);loadaddress 0x0 entry 0x0x42
  bootblock (20480 bytes @0xfb000)
Total size = 65744 bytes (0x100d0)

Using lzma compression (before the patch):
  normal/payload/segment0 (152704 bytes, lzma compressed to 105 bytes
@0x50);loadaddress 0x0x10bd80 entry 0x0x109c84
  normal/payload/segment1 (48488 bytes, lzma compressed to 28098 bytes
@0x110);loadaddress 0x0x100000 entry 0x0x109c84
  normal/payload/segment2 (72 bytes, lzma compressed to 47 bytes
@0x6f30);loadaddress 0x0x131200 entry 0x0x109c84
  normal/option_table (932 bytes @0x6fb0);loadaddress 0x0 entry 0x0
  normal/stage2/segment0 (191792 bytes, lzma compressed to 110 bytes
@0x73b0);loadaddress 0x0xb2a0 entry 0x0x2000
  normal/stage2/segment1 (28116 bytes, lzma compressed to 15006 bytes
@0x7470);loadaddress 0x0x2000 entry 0x0x2000
  normal/stage2/segment2 (5308 bytes, lzma compressed to 313 bytes
@0xaf60);loadaddress 0x0x9de0 entry 0x0x2000
  normal/initram/segment0 (432 bytes @0xb0f0);loadaddress 0x0 entry 0x0x42
  bootblock (20480 bytes @0xfb000)
Total size = 65955 bytes (0x101a3)

Using no compression (before the patch):
  normal/payload/segment0 (152704 bytes @0x50);loadaddress 0x0x10bd80
entry 0x0x109c84
  normal/payload/segment1 (48488 bytes @0x25520);loadaddress
0x0x100000 entry 0x0x109c84
  normal/payload/segment2 (72 bytes @0x312e0);loadaddress 0x0x131200
entry 0x0x109c84
  normal/option_table (932 bytes @0x31380);loadaddress 0x0 entry 0x0
  normal/stage2/segment0 (191792 bytes @0x31780);loadaddress 0x0xb2a0
entry 0x0x2000
  normal/stage2/segment1 (28116 bytes @0x60500);loadaddress 0x0x2000
entry 0x0x2000
  normal/stage2/segment2 (5308 bytes @0x67330);loadaddress 0x0x9de0
entry 0x0x2000
  normal/initram/segment0 (432 bytes @0x68840);loadaddress 0x0 entry 0x0x42
  bootblock (20480 bytes @0xfb000)
Total size = 448756 bytes (0x6d8f4)

Using no compression (after the patch):
  normal/payload/segment0 (152704 bytes, zeroes compressed to 1 bytes
@0x50);loadaddress 0x0x10bd80 entry 0x0x109c84
  normal/payload/segment1 (48488 bytes @0xb0);loadaddress 0x0x100000
entry 0x0x109c84
  normal/payload/segment2 (72 bytes @0xbe70);loadaddress 0x0x131200
entry 0x0x109c84
  normal/option_table (932 bytes @0xbf10);loadaddress 0x0 entry 0x0
  normal/stage2/segment0 (191792 bytes, zeroes compressed to 1 bytes
@0xc310);loadaddress 0x0xb2a0 entry 0x0x2000
  normal/stage2/segment1 (28116 bytes @0xc370);loadaddress 0x0x2000
entry 0x0x2000
  normal/stage2/segment2 (5308 bytes @0x131a0);loadaddress 0x0x9de0
entry 0x0x2000
  normal/initram/segment0 (432 bytes @0x146b0);loadaddress 0x0 entry 0x0x42
  bootblock (20480 bytes @0xfb000)
Total size = 104262 bytes (0x19746)
-------------- next part --------------
A non-text attachment was scrubbed...
Name: zero_compression.patch
Type: text/x-patch
Size: 3346 bytes
Desc: not available
URL: <http://www.coreboot.org/pipermail/coreboot/attachments/20080214/84892480/attachment.patch>


More information about the coreboot mailing list