[coreboot-gerrit] Patch merged into coreboot/master: arch/x86: Include timestamp.c in all stages

gerrit at coreboot.org gerrit at coreboot.org
Thu May 19 18:26:07 CEST 2016


the following patch was just integrated into master:
commit 87c6097c8f3ec812101f302ce98d0e6a53c25bab
Author: Alexandru Gagniuc <alexandrux.gagniuc at intel.com>
Date:   Mon May 16 14:22:00 2016 -0700

    arch/x86: Include timestamp.c in all stages
    
    timestamp.c was not included in bootblock and postcar. This means that
    these two stages would use the weak implementation in lib/timestamp.c
    instead of the arch-specific implementation based on rdtsc.
    
    This resulted in using timer_monotonic_get() which resets the
    timestamps from 0. timer_monotonic_get() only provides per-stage
    incrementing semantics on x86 because lapic implementation has
    counting down values. A globally incrementing counter like rdtsc
    provides the semantics like every other non-x86.
    
    On the test configuration, the weak implementation of timestamp_get()
    returned zero, resulting in wrong timestamps coming from the bootblock,
    while romstage and ramstage used the arch implementation and returned
    correct timestamps.
    
    This is a great example of why weak functions are dangerous, and how
    easy it is to miss subtle yet strong interactions between subsystems
    and the coreboot buildsystem.
    
    Change-Id: I656f9bd58a6fc179d9dbbc496c5b684ea9288eb5
    Signed-off-by: Alexandru Gagniuc <alexandrux.gagniuc at intel.com>
    Reviewed-on: https://review.coreboot.org/14860
    Tested-by: build bot (Jenkins)
    Reviewed-by: Aaron Durbin <adurbin at chromium.org>


See https://review.coreboot.org/14860 for details.

-gerrit



More information about the coreboot-gerrit mailing list