[coreboot-gerrit] Patch merged into coreboot/master: 4fbac46 cbmem: Unify CBMEM init tasks with CBMEM_INIT_HOOK() API

gerrit at coreboot.org gerrit at coreboot.org
Tue Jun 9 17:22:21 CEST 2015


the following patch was just integrated into master:
commit 4fbac465246d3cdfc91d4331be5a567f8783cc6f
Author: Kyösti Mälkki <kyosti.malkki at gmail.com>
Date:   Wed Jan 7 04:48:43 2015 +0200

    cbmem: Unify CBMEM init tasks with CBMEM_INIT_HOOK() API
    
    Squashed and adjusted two changes from chromium.git. Covers
    CBMEM init for ROMTAGE and RAMSTAGE.
    
    cbmem: Unify random on-CBMEM-init tasks under common CBMEM_INIT_HOOK() API
    
    There are several use cases for performing a certain task when CBMEM is
    first set up (usually to migrate some data into it that was previously
    kept in BSS/SRAM/hammerspace), and unfortunately we handle each of them
    differently: timestamp migration is called explicitly from
    cbmem_initialize(), certain x86-chipset-specific tasks use the
    CAR_MIGRATION() macro to register a hook, and the CBMEM console is
    migrated through a direct call from romstage (on non-x86 and SandyBridge
    boards).
    
    This patch decouples the CAR_MIGRATION() hook mechanism from
    cache-as-RAM and rechristens it to CBMEM_INIT_HOOK(), which is a clearer
    description of what it really does. All of the above use cases are
    ported to this new, consistent model, allowing us to have one less line
    of boilerplate in non-CAR romstages.
    
    BRANCH=None
    BUG=None
    TEST=Built and booted on Nyan_Blaze and Falco with and without
    CONFIG_CBMEM_CONSOLE. Confirmed that 'cbmem -c' shows the full log after
    boot (and the resume log after S3 resume on Falco). Compiled for Parrot,
    Stout and Lumpy.
    
    Original-Change-Id: I1681b372664f5a1f15c3733cbd32b9b11f55f8ea
    Signed-off-by: Julius Werner <jwerner at chromium.org>
    Reviewed-on: https://chromium-review.googlesource.com/232612
    Reviewed-by: Aaron Durbin <adurbin at chromium.org>
    
    cbmem: Extend hooks to ramstage, fix timestamp synching
    
    Commit 7dd5bbd71 (cbmem: Unify random on-CBMEM-init tasks under common
    CBMEM_INIT_HOOK() API) inadvertently broke ramstage timestamps since
    timestamp_sync() was no longer called there. Oops.
    
    This patch fixes the issue by extending the CBMEM_INIT_HOOK() mechanism
    to the cbmem_initialize() call in ramstage. The macro is split into
    explicit ROMSTAGE_/RAMSTAGE_ versions to make the behavior as clear as
    possible and prevent surprises (although just using a single macro and
    relying on the Makefiles to link an object into all appropriate stages
    would also work).
    
    This allows us to get rid of the explicit cbmemc_reinit() in ramstage
    (which I somehow accounted for in the last patch without realizing that
    timestamps work exactly the same way...), and replace the older and less
    flexible cbmem_arch_init() mechanism.
    
    Also added a size assertion for the pre-RAM CBMEM console to memlayout
    that could prevent a very unlikely buffer overflow I just noticed.
    
    BRANCH=None
    BUG=None
    TEST=Booted on Pinky and Falco, confirmed that ramstage timestamps once
    again show up. Compile-tested for Rambi and Samus.
    
    Original-Change-Id: If907266c3f20dc3d599b5c968ea5b39fe5c00e9c
    Signed-off-by: Julius Werner <jwerner at chromium.org>
    Reviewed-on: https://chromium-review.googlesource.com/233533
    Reviewed-by: Aaron Durbin <adurbin at chromium.org>
    
    Change-Id: I1be89bafacfe85cba63426e2d91f5d8d4caa1800
    Signed-off-by: Kyösti Mälkki <kyosti.malkki at gmail.com>
    Signed-off-by: Marc Jones <marc.jones at se-eng.com>
    Reviewed-on: http://review.coreboot.org/7878
    Tested-by: build bot (Jenkins)
    Reviewed-by: Aaron Durbin <adurbin at chromium.org>


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

-gerrit



More information about the coreboot-gerrit mailing list