2023-05-19 10:43:48

by Peter Zijlstra

[permalink] [raw]
Subject: [PATCH v2 00/13] local_clock() vs noinstr

Hi All,

latest version of the local_clock_noinstr() patches.

Most of the changes are in Hyper-V and x86/vdso/gettimeofday; Michael has been
very helpful navigating the Hyper-V spec and fixing their sched_clock
implementation.

---
arch/arm64/include/asm/arch_timer.h | 8 +----
arch/arm64/include/asm/io.h | 12 +++----
arch/loongarch/include/asm/loongarch.h | 2 +-
arch/loongarch/kernel/time.c | 6 ++--
arch/s390/include/asm/timex.h | 13 ++++---
arch/s390/kernel/time.c | 5 +++
arch/x86/include/asm/mshyperv.h | 5 +++
arch/x86/include/asm/vdso/gettimeofday.h | 41 ++++++++++++++++------
arch/x86/kernel/kvmclock.c | 4 +--
arch/x86/kernel/tsc.c | 38 +++++++++++++++-----
arch/x86/kvm/x86.c | 7 ++--
arch/x86/xen/time.c | 3 +-
drivers/clocksource/arm_arch_timer.c | 60 ++++++++++++++++++++++++--------
drivers/clocksource/hyperv_timer.c | 44 ++++++++++++++---------
drivers/cpuidle/cpuidle.c | 8 ++---
drivers/cpuidle/poll_state.c | 4 +--
include/clocksource/hyperv_timer.h | 24 +++++--------
include/linux/math64.h | 2 +-
include/linux/rbtree_latch.h | 2 +-
include/linux/sched/clock.h | 17 ++++++++-
include/linux/seqlock.h | 15 ++++----
kernel/printk/printk.c | 2 +-
kernel/sched/clock.c | 19 ++++++----
kernel/time/sched_clock.c | 24 +++++++++----
kernel/time/timekeeping.c | 4 +--
25 files changed, 242 insertions(+), 127 deletions(-)



2023-05-19 18:52:37

by Michael Kelley (LINUX)

[permalink] [raw]
Subject: RE: [PATCH v2 00/13] local_clock() vs noinstr

From: Peter Zijlstra <[email protected]> Sent: Friday, May 19, 2023 3:21 AM
>
> Hi All,
>
> latest version of the local_clock_noinstr() patches.
>
> Most of the changes are in Hyper-V and x86/vdso/gettimeofday; Michael has been
> very helpful navigating the Hyper-V spec and fixing their sched_clock
> implementation.
>
> ---
> arch/arm64/include/asm/arch_timer.h | 8 +----
> arch/arm64/include/asm/io.h | 12 +++----
> arch/loongarch/include/asm/loongarch.h | 2 +-
> arch/loongarch/kernel/time.c | 6 ++--
> arch/s390/include/asm/timex.h | 13 ++++---
> arch/s390/kernel/time.c | 5 +++
> arch/x86/include/asm/mshyperv.h | 5 +++
> arch/x86/include/asm/vdso/gettimeofday.h | 41 ++++++++++++++++------
> arch/x86/kernel/kvmclock.c | 4 +--
> arch/x86/kernel/tsc.c | 38 +++++++++++++++-----
> arch/x86/kvm/x86.c | 7 ++--
> arch/x86/xen/time.c | 3 +-
> drivers/clocksource/arm_arch_timer.c | 60 ++++++++++++++++++++++++--------
> drivers/clocksource/hyperv_timer.c | 44 ++++++++++++++---------
> drivers/cpuidle/cpuidle.c | 8 ++---
> drivers/cpuidle/poll_state.c | 4 +--
> include/clocksource/hyperv_timer.h | 24 +++++--------
> include/linux/math64.h | 2 +-
> include/linux/rbtree_latch.h | 2 +-
> include/linux/sched/clock.h | 17 ++++++++-
> include/linux/seqlock.h | 15 ++++----
> kernel/printk/printk.c | 2 +-
> kernel/sched/clock.c | 19 ++++++----
> kernel/time/sched_clock.c | 24 +++++++++----
> kernel/time/timekeeping.c | 4 +--
> 25 files changed, 242 insertions(+), 127 deletions(-)

Based on linux-next20230519, tested the full series in a Hyper-V
VM on x86/x64. Did mainly a basic smoke test. Sched clock
appears to work correctly. Verified correct operation of the TSC page
clocksource and the MSR-based clocksource. Verified that vDSO
gettimeofday() works with the Hyper-V TSC page clocksource and
is correctly disabled with the Hyper-V MSR-based clocksource.
Tested in a normal VM and in an "SEV-SNP with vTOM" VM.

Tested-by: Michael Kelley <[email protected]> # Hyper-V