Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1452360 > unrolled thread
| Started by | Bogdan Mirea <Bogdan-Stefan_mirea@mentor.com> |
|---|---|
| First post | 2016-07-29 12:00 +0200 |
| Last post | 2016-07-29 12:00 +0200 |
| Articles | 1 — 1 participant |
Back to article view | Back to linux.kernel
[PATCH] Added "Preserve Boot Time Support" Bogdan Mirea <Bogdan-Stefan_mirea@mentor.com> - 2016-07-29 12:00 +0200
| From | Bogdan Mirea <Bogdan-Stefan_mirea@mentor.com> |
|---|---|
| Date | 2016-07-29 12:00 +0200 |
| Subject | [PATCH] Added "Preserve Boot Time Support" |
| Message-ID | <s0cKj-2Vf-11@gated-at.bofh.it> |
This option enables Boot Time Preservation between Bootloader and Linux Kernel. It is based on the idea that the Bootloader (or any other early firmware) will start the HW Timer and Linux Kernel will count the time starting with the cycles elapsed since timer start. Signed-off-by: Bogdan Mirea <Bogdan-Stefan_mirea@mentor.com> --- kernel/time/Kconfig | 8 ++++++++ kernel/time/sched_clock.c | 6 ++++++ 2 files changed, 14 insertions(+) diff --git a/kernel/time/Kconfig b/kernel/time/Kconfig index 4008d9f..d001839 100644 --- a/kernel/time/Kconfig +++ b/kernel/time/Kconfig @@ -193,5 +193,13 @@ config HIGH_RES_TIMERS hardware is not capable then this option only increases the size of the kernel image. +config BOOT_TIME_PRESERVE + bool "Preserve Boot Time Support" + help + This option enables Boot Time Preservation between Bootloader and + Linux Kernel. It is based on the idea that the Bootloader (or any + other early firmware) will start the HW Timer and Linux Kernel will + count the time starting with the cycles elapsed since timer start. + endmenu endif diff --git a/kernel/time/sched_clock.c b/kernel/time/sched_clock.c index a26036d..1d6e35a 100644 --- a/kernel/time/sched_clock.c +++ b/kernel/time/sched_clock.c @@ -193,7 +193,13 @@ sched_clock_register(u64 (*read)(void), int bits, unsigned long rate) /* Update epoch for new counter and update 'epoch_ns' from old counter*/ new_epoch = read(); cyc = cd.actual_read_sched_clock(); + +#ifdef CONFIG_BOOT_TIME_PRESERVE + ns = rd.epoch_ns + cyc_to_ns((new_epoch - rd.epoch_cyc) & new_mask, new_mult, new_shift); +#else ns = rd.epoch_ns + cyc_to_ns((cyc - rd.epoch_cyc) & rd.sched_clock_mask, rd.mult, rd.shift); +#endif /* CONFIG_BOOT_TIME_PRESERVE */ + cd.actual_read_sched_clock = read; rd.read_sched_clock = read; -- 1.9.1
Back to top | Article view | linux.kernel
csiph-web