[coreboot-gerrit] Patch merged into coreboot/master: e3260a0 cbfstool: Restructure around support for reading/writing portions of files

gerrit at coreboot.org gerrit at coreboot.org
Fri May 8 20:25:22 CEST 2015


the following patch was just integrated into master:
commit e3260a042f438cedb446c5e7b3dc6f55a3b9aa95
Author: Sol Boucher <solb at chromium.org>
Date:   Wed Mar 25 13:40:08 2015 -0700

    cbfstool: Restructure around support for reading/writing portions of files
    
    The buffer API that cbfstool uses to read and write files only directly supports
    one-shot operations on whole files. This adds an intermediate partitioned_file
    module that sits on top of the buffer system and has an awareness of FMAP
    entries. It provides an easy way to get a buffer for an individual region of a
    larger image file based on FMAP section name, as well as incrementally write
    those smaller buffers back to the backing file at the appropriate offset. The
    module has two distinct modes of operation:
    - For new images whose layout is described exclusively by an FMAP section, all
    the aforementioned functionality will be available.
    - For images in the current format, where the CBFS master header serves as the
    root of knowledge of the image's size and layout, the module falls back to a
    legacy operation mode, where it only allows manipulation of the entire image
    as one unit, but exposes this support through the same interface by mapping
    the region named SECTION_NAME_PRIMARY_CBFS ("COREBOOT") to the whole file.
    
    The tool is presently only ported onto the new module running in legacy mode:
    higher-level support for true "partitioned" images will be forthcoming. However,
    as part of this change, the crusty cbfs_image_from_file() and
    cbfs_image_write_file() abstractions are removed and replaced with a single
    cbfs_image function, cbfs_image_from_buffer(), as well as centralized image
    reading/writing directly in cbfstool's main() function. This reduces the
    boilerplate required to implement each new action, makes the create action much
    more similar to the others, and will make implementing additional actions and
    adding in support for the new format much easier.
    
    BUG=chromium:470407
    TEST=Build panther and nyan_big coreboot.rom images with and without this patch
    and diff their hexdumps. Ensure that no differences occur at different locations
    from the diffs between subsequent builds of an identical source tree. Then flash
    a full new build onto nyan_big and watch it boot normally.
    BRANCH=None
    
    Change-Id: I25578c7b223bc8434c3074cb0dd8894534f8c500
    Signed-off-by: Sol Boucher <solb at chromium.org>
    Original-Commit-Id: 7e1c96a48e7a27fc6b90289d35e6e169d5e7ad20
    Original-Change-Id: Ia4a1a4c48df42b9ec2d6b9471b3a10eb7b24bb39
    Original-Signed-off-by: Sol Boucher <solb at chromium.org>
    Original-Reviewed-on: https://chromium-review.googlesource.com/265581
    Original-Reviewed-by: Aaron Durbin <adurbin at chromium.org>
    Reviewed-on: http://review.coreboot.org/10134
    Tested-by: build bot (Jenkins)
    Reviewed-by: Patrick Georgi <pgeorgi at google.com>


See http://review.coreboot.org/10134 for details.

-gerrit



More information about the coreboot-gerrit mailing list