[U-Boot] [PATCH v2 00/37] binman: Add CBFS support

Simon Glass sjg at chromium.org
Mon Jul 8 19:18:19 UTC 2019


CBFS (Coreboot Filesystem) is a simple ROM-based filesystem used for
locating data needed during booting. It has particular features for x86
such as defining a boot block at the top of the ROM image. At run-time,
boot loaders can locate files in the ROM by searching for a header and
magic strings in the ROM.

It is common to have multiple, separate CBFSs in the ROM.

Binman provides its own way of locating data, typically with a device
tree built into the image, or linker symbols when space is short. But it
is useful to be able to create images containing CBFSs with binman, since
it allows all image structure to defined in one place, rather than spread
out over multiple cbfstool invocations, etc.

The approach taken here is to directly create the CBFS in binman rather
than calling out to cbfstool. The latter is quite slow for multiple
invocations and the tool itself has no tests.

Also included is ifwitool lifted from coreboot, which is needed to package
images for Intel apollo lake SoCs. This seems easier than implementing
this functionality in binman.

Tests are provided for new binman functionality, although ifwitool has no
tests and is tested only by invocation from binman.

This series does not support all CBFS features, just raw binaries and Elf
files (called 'stages' in CBFS).

Changes in v2:
- Deal with travis's old lz4 version by skipping tests as necessary
- Install lzma tool in travis
- Skip use of cbfstool in tests if it is not available

Simon Glass (37):
  x86: Add ifwitool for Intel Integrated Firmware Image
  cbfs: Add an enum and comment for the magic number
  cbfs: Rename checksum to attributes_offset
  tools: Drop duplicate raise_on_error argument
  binman: Fix comment in bsection.GetEntries()
  binman: Correct two typos in function names in ftest
  binman: Add coverage tools info for Python 3
  patman: Add a way to set the search path for tools
  binman: Add a --toolpath option to set the tool search path
  binman: Add missing comments to bsection
  binman: Add missing comments toentry
  binman: Tidy up help for --indir
  binman: Use a better error for missing Intel descriptor
  binman: Detect skipped tests
  binman: Add a function to create a sample ELF file
  binman: Add a function to decode an ELF file
  binman: Ensure that coverage has access to site packages
  binman: Assume Intel descriptor is at the start of the image
  binman: Don't assume there is an ME region
  binman: Update entry.SetOffsetSize to be optional
  binman: Allow text directly in the node
  patman: Add functions to compress and decompress data
  binman: Use the tools.Decompress method
  binman: Drop unnecessary debug handling
  binman: Use tools compression function for blob handling
  binman: Correct comment in u_boot_spl_elf
  binman: Support ELF files for TPL
  binman: Fix up the _DoTestFile() function -u argument
  binman: Allow verbosity control when running tests
  binman: Allow preserving test directories
  binman: Pass the toolpath to tests
  patman: Add a function to write ifwitool
  binman: Add a utility library for coreboot CBFS
  binman: Add support for CBFS entries
  binman: Add support for Intel IFWI entries
  binman: Pad empty areas of the CBFS with files
  binman: Add support for fixed-offset files in CBFS

 .travis.yml                                   |    3 +-
 fs/cbfs/cbfs.c                                |    4 +-
 include/cbfs.h                                |   16 +-
 test/run                                      |    9 +-
 tools/Makefile                                |    3 +
 tools/binman/README                           |   25 +-
 tools/binman/README.entries                   |  204 +-
 tools/binman/binman.py                        |   52 +-
 tools/binman/bsection.py                      |   42 +-
 tools/binman/cbfs_util.py                     |  861 ++++++
 tools/binman/cbfs_util_test.py                |  625 +++++
 tools/binman/cmdline.py                       |    8 +-
 tools/binman/control.py                       |    3 +
 tools/binman/elf.py                           |  174 ++
 tools/binman/elf_test.py                      |   41 +
 tools/binman/entry.py                         |   38 +-
 tools/binman/etype/blob.py                    |   16 +-
 tools/binman/etype/cbfs.py                    |  205 ++
 tools/binman/etype/intel_descriptor.py        |   16 +-
 tools/binman/etype/intel_ifwi.py              |  100 +
 tools/binman/etype/intel_me.py                |    2 +
 tools/binman/etype/text.py                    |   23 +-
 tools/binman/etype/u_boot_spl_elf.py          |    2 +-
 tools/binman/etype/u_boot_tpl_elf.py          |   24 +
 tools/binman/ftest.py                         |  266 +-
 tools/binman/test/066_text.dts                |    5 +
 tools/binman/test/096_elf.dts                 |    2 +
 tools/binman/test/102_cbfs_raw.dts            |   20 +
 tools/binman/test/103_cbfs_raw_ppc.dts        |   21 +
 tools/binman/test/104_cbfs_stage.dts          |   19 +
 tools/binman/test/105_cbfs_raw_compress.dts   |   26 +
 tools/binman/test/106_cbfs_bad_arch.dts       |   15 +
 tools/binman/test/107_cbfs_no_size.dts        |   13 +
 tools/binman/test/108_cbfs_no_contents.dts    |   17 +
 tools/binman/test/109_cbfs_bad_compress.dts   |   18 +
 tools/binman/test/110_cbfs_name.dts           |   24 +
 tools/binman/test/111_x86-rom-ifwi.dts        |   29 +
 tools/binman/test/112_x86-rom-ifwi-nodesc.dts |   28 +
 tools/binman/test/113_x86-rom-ifwi-nodata.dts |   29 +
 tools/binman/test/114_cbfs_offset.dts         |   26 +
 tools/binman/test/fitimage.bin.gz             |  Bin 0 -> 8418 bytes
 tools/binman/test/ifwi.bin.gz                 |  Bin 0 -> 1884 bytes
 tools/ifwitool.c                              | 2314 +++++++++++++++++
 tools/patman/command.py                       |    4 +-
 tools/patman/tools.py                         |  141 +-
 45 files changed, 5434 insertions(+), 79 deletions(-)
 create mode 100644 tools/binman/cbfs_util.py
 create mode 100755 tools/binman/cbfs_util_test.py
 create mode 100644 tools/binman/etype/cbfs.py
 create mode 100644 tools/binman/etype/intel_ifwi.py
 create mode 100644 tools/binman/etype/u_boot_tpl_elf.py
 create mode 100644 tools/binman/test/102_cbfs_raw.dts
 create mode 100644 tools/binman/test/103_cbfs_raw_ppc.dts
 create mode 100644 tools/binman/test/104_cbfs_stage.dts
 create mode 100644 tools/binman/test/105_cbfs_raw_compress.dts
 create mode 100644 tools/binman/test/106_cbfs_bad_arch.dts
 create mode 100644 tools/binman/test/107_cbfs_no_size.dts
 create mode 100644 tools/binman/test/108_cbfs_no_contents.dts
 create mode 100644 tools/binman/test/109_cbfs_bad_compress.dts
 create mode 100644 tools/binman/test/110_cbfs_name.dts
 create mode 100644 tools/binman/test/111_x86-rom-ifwi.dts
 create mode 100644 tools/binman/test/112_x86-rom-ifwi-nodesc.dts
 create mode 100644 tools/binman/test/113_x86-rom-ifwi-nodata.dts
 create mode 100644 tools/binman/test/114_cbfs_offset.dts
 create mode 100644 tools/binman/test/fitimage.bin.gz
 create mode 100644 tools/binman/test/ifwi.bin.gz
 create mode 100644 tools/ifwitool.c

-- 
2.22.0.410.gd8fdbe21b5-goog



More information about the U-Boot mailing list