Projects
Mega:23.03
systemd
_service:tar_scm:backport-boot-timestamps-Disca...
Sign Up
Log In
Username
Password
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File _service:tar_scm:backport-boot-timestamps-Discard-firmware-init-time-when-runn.patch of Package systemd
From 9ee300a0b6429b7af73f40edfb2330cbbd7828f3 Mon Sep 17 00:00:00 2001 From: Jan Janssen <medhefgo@web.de> Date: Sun, 9 Jan 2022 14:22:15 +0100 Subject: [PATCH] boot-timestamps: Discard firmware init time when running in a VM Fixes: #22060 (cherry picked from commit f699bd81e8e18da2d2fc11e7fb7dce95f8bb3f9e) (cherry picked from commit 3c5c13f82c760c7067bb189484e1f672ff6713f6) Conflict:NA Reference:https://github.com/systemd/systemd/commit/9ee300a0b6429b7af73f40edfb2330cbbd7828f3 --- src/shared/boot-timestamps.c | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/src/shared/boot-timestamps.c b/src/shared/boot-timestamps.c index 8786e89c0e..e00b37aa32 100644 --- a/src/shared/boot-timestamps.c +++ b/src/shared/boot-timestamps.c @@ -5,11 +5,13 @@ #include "efi-loader.h" #include "macro.h" #include "time-util.h" +#include "virt.h" int boot_timestamps(const dual_timestamp *n, dual_timestamp *firmware, dual_timestamp *loader) { usec_t x = 0, y = 0, a; int r; dual_timestamp _n; + bool use_firmware = true; assert(firmware); assert(loader); @@ -24,6 +26,10 @@ int boot_timestamps(const dual_timestamp *n, dual_timestamp *firmware, dual_time r = efi_loader_get_boot_usec(&x, &y); if (r < 0) return r; + + /* If we are running in a VM, the init timestamp would + * be equivalent to the host uptime. */ + use_firmware = detect_vm() <= 0; } /* Let's convert this to timestamps where the firmware @@ -33,12 +39,14 @@ int boot_timestamps(const dual_timestamp *n, dual_timestamp *firmware, dual_time * the monotonic timestamps here as negative of the actual * value. */ - firmware->monotonic = y; - loader->monotonic = y - x; - - a = n->monotonic + firmware->monotonic; - firmware->realtime = n->realtime > a ? n->realtime - a : 0; + if (use_firmware) { + firmware->monotonic = y; + a = n->monotonic + firmware->monotonic; + firmware->realtime = n->realtime > a ? n->realtime - a : 0; + } else + firmware->monotonic = firmware->realtime = 0; + loader->monotonic = y - x; a = n->monotonic + loader->monotonic; loader->realtime = n->realtime > a ? n->realtime - a : 0; -- 2.33.0
Locations
Projects
Search
Status Monitor
Help
Open Build Service
OBS Manuals
API Documentation
OBS Portal
Reporting a Bug
Contact
Mailing List
Forums
Chat (IRC)
Twitter
Open Build Service (OBS)
is an
openSUSE project
.
浙ICP备2022010568号-2