summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrian Granaghan <granaghan@google.com>2023-01-06 23:58:11 +0000
committerChromeos LUCI <chromeos-scoped@luci-project-accounts.iam.gserviceaccount.com>2023-04-27 21:38:48 +0000
commit67b864f3d23455d5f43fd49bdfe32a63d5766205 (patch)
treeb2b1284fc66f6ff81abddc2695db2649405ddb62
parent2f3d7ce7f56ae7e808f66b2adfdf35878564f115 (diff)
downloadchrome-ec-67b864f3d23455d5f43fd49bdfe32a63d5766205.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 Change-Id: Iff87e7ca12c72b79a7b939967f266461a672ca66 Signed-off-by: Brian Granaghan <granaghan@google.com> Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/4143817 Reviewed-by: Mary Ruthven <mruthven@chromium.org> (cherry picked from commit 8ffb055f80a09e9d3b6ad5a285e435cbcc0629ad) Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/4481581 Auto-Submit: Mary Ruthven <mruthven@chromium.org> Tested-by: Mary Ruthven <mruthven@chromium.org> Reviewed-by: Jett Rink <jettrink@chromium.org> Commit-Queue: Mary Ruthven <mruthven@chromium.org>
-rw-r--r--extra/usb_updater/gsctool.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/extra/usb_updater/gsctool.c b/extra/usb_updater/gsctool.c
index c007692b32..3d22f45725 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;
}