shared/efi-loader: remove check that uses absolute tick value
sd-boot uses rdtsc to set those timestamps. There is no guarantee that the tsc has any particular absolute value. On my VM: $ head /sys/firmware/efi/efivars/LoaderTime* ==> /sys/firmware/efi/efivars/LoaderTimeExecUSec-4a67b082-0a4c-41cf-b6c7-440b29bb8c4f <== 4397904074 ==> /sys/firmware/efi/efivars/LoaderTimeInitUSec-4a67b082-0a4c-41cf-b6c7-440b29bb8c4f <== 4396386839 ==> /sys/firmware/efi/efivars/LoaderTimeMenuUSec-4a67b082-0a4c-41cf-b6c7-440b29bb8c4f <== 4396392521 $ build/test-boot-timestamps ... LoaderTimeExecUSec=4396386839 too large, refusing. Failed to read EFI loader data: Input/output error Assertion 'q >= 0' failed at src/test/test-boot-timestamps.c:84, function main(). Aborting. (with patch) $ build/test-boot-timestamps ... EFI Loader: start=1h 13min 16.386s exit=1h 13min 17.904s duration=1.517s Firmware began 1h 13min 17.904074s before kernel. Loader began 1.517235s before kernel. Firmware began Tue 2020-05-26 11:04:13 CEST. Loader began Tue 2020-05-26 12:17:30 CEST. Kernel began Tue 2020-05-26 12:17:31 CEST.
This commit is contained in:
parent
24b4597064
commit
dde5c821bf
|
@ -531,15 +531,11 @@ int efi_loader_get_boot_usec(usec_t *firmware, usec_t *loader) {
|
|||
if (r < 0)
|
||||
return log_debug_errno(r, "Failed to read LoaderTimeExecUSec: %m");
|
||||
|
||||
if (y == 0 || y < x)
|
||||
if (y == 0 || y < x || y - x > USEC_PER_HOUR)
|
||||
return log_debug_errno(SYNTHETIC_ERRNO(EIO),
|
||||
"Bad LoaderTimeInitUSec=%"PRIu64", LoaderTimeExecUSec=%" PRIu64"; refusing.",
|
||||
x, y);
|
||||
|
||||
if (y > USEC_PER_HOUR)
|
||||
return log_debug_errno(SYNTHETIC_ERRNO(EIO),
|
||||
"LoaderTimeExecUSec=%"PRIu64" too large, refusing.", x);
|
||||
|
||||
*firmware = x;
|
||||
*loader = y;
|
||||
|
||||
|
|
Loading…
Reference in a new issue