diff options
author | Brian Granaghan <granaghan@google.com> | 2022-12-15 15:00:10 -0800 |
---|---|---|
committer | Chromeos LUCI <chromeos-scoped@luci-project-accounts.iam.gserviceaccount.com> | 2023-01-06 20:18:14 +0000 |
commit | 658729d9e338f6a970e46e69dc4c638d8ac7ccae (patch) | |
tree | 91ac9a0c6fc854aad6b3951e3f15a2fab15201b3 | |
parent | ceea780fa94360688f72aaa37d058d019a486825 (diff) | |
download | chrome-ec-658729d9e338f6a970e46e69dc4c638d8ac7ccae.tar.gz |
gsctool: Add timestamp unreliable flag for dauntless.
This flag is set for logs that occur between a cold boot and AP
settings the base time. These logs will start with previous_timestamp+1
and have 1<<64 set to denote that the actual base time was unknown.
BUG=b:260779816
TEST=gsctool -a -L --dauntless with and without the unreliable timestamp
change in firmware
Signed-off-by: Brian Granaghan <granaghan@google.com>
Change-Id: Iac279a948c7f34ede711c3c334ec1410b34f040c
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/4112943
Reviewed-by: Edward Hill <ecgh@chromium.org>
Reviewed-by: Mary Ruthven <mruthven@chromium.org>
-rw-r--r-- | extra/usb_updater/gsctool.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/extra/usb_updater/gsctool.c b/extra/usb_updater/gsctool.c index c007692b32..9cfe6b5e23 100644 --- a/extra/usb_updater/gsctool.c +++ b/extra/usb_updater/gsctool.c @@ -3549,6 +3549,7 @@ struct parsed_flog_entry { uint64_t raw_timestamp; time_t timestamp; uint32_t event_type; + bool timestamp_reliable; }; static int pop_flog_dt(struct transfer_descriptor *td, @@ -3573,7 +3574,10 @@ static int pop_flog_dt(struct transfer_descriptor *td, memcpy(parsed_entry->payload, entry.evt.payload, parsed_entry->payload_size); parsed_entry->raw_timestamp = entry.evt.time; - parsed_entry->timestamp = parsed_entry->raw_timestamp / 1000; + parsed_entry->timestamp = + parsed_entry->raw_timestamp & ~(1ULL << 63)) / 1000; + parsed_entry->timestamp_reliable = + (parsed_entry->raw_timestamp >> 63) == 0; return rv; } @@ -3600,6 +3604,7 @@ static int pop_flog(struct transfer_descriptor *td, parsed_entry->payload_size); parsed_entry->raw_timestamp = entry.r.timestamp; parsed_entry->timestamp = entry.r.timestamp; + parsed_entry->timestamp_reliable = true; return rv; } @@ -3664,6 +3669,8 @@ static int process_get_flog(struct transfer_descriptor *td, uint64_t prev_stamp, } for (i = 0; i < entry.payload_size; i++) printf(" %02x", entry.payload[i]); + if (entry.timestamp_reliable == false) + printf(" -- TIMESTAMP UNRELIABLE!"); printf("\n"); retries = max_retries; } |