elog: calculate year correctly in timestamp
This CL uses a 16-bit value (instead of an 8-bit value) for the year.
This is needed because the function internally does a "year % 100", so
the year should not be truncated to 8-bit before applying the modulo.
This fixes a regression introduced in commit e929a75
.
BUG=b:200538760
TEST=deployed coreboot. Manually verified that year is correct using
"elogtool list"
TEST=test_that -b $BOARD $DUT firmware_EventLog
Change-Id: I17578ff99af5b31b216ac53c22e53b1b70df5084
Signed-off-by: Ricardo Quesada <ricardoq@google.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/57816
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Furquan Shaikh <furquan@google.com>
This commit is contained in:
parent
10f2faacea
commit
425fdeb2f9
|
@ -50,7 +50,7 @@ const void *event_get_data(const struct event_header *event)
|
|||
|
||||
/* Populate timestamp in event header with given time. */
|
||||
void elog_fill_timestamp(struct event_header *event, uint8_t sec, uint8_t min,
|
||||
uint8_t hour, uint8_t mday, uint8_t mon, uint8_t year)
|
||||
uint8_t hour, uint8_t mday, uint8_t mon, uint16_t year)
|
||||
{
|
||||
event->second = bin2bcd(sec);
|
||||
event->minute = bin2bcd(min);
|
||||
|
|
|
@ -318,7 +318,7 @@ enum cb_err elog_verify_header(const struct elog_header *header);
|
|||
const struct event_header *elog_get_next_event(const struct event_header *event);
|
||||
const void *event_get_data(const struct event_header *event);
|
||||
void elog_fill_timestamp(struct event_header *event, uint8_t sec, uint8_t min,
|
||||
uint8_t hour, uint8_t mday, uint8_t mon, uint8_t year);
|
||||
uint8_t hour, uint8_t mday, uint8_t mon, uint16_t year);
|
||||
/* Update the checksum at the last byte. */
|
||||
void elog_update_checksum(struct event_header *event, uint8_t checksum);
|
||||
/* Simple byte checksum for events. */
|
||||
|
|
Loading…
Reference in New Issue