lkml.org 
[lkml]   [2021]   [Apr]   [26]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    From
    Subject[RFC PATCH 0/6] x86/kvm: Virtual suspend time injection support
    Date

    Hi,

    This patch series adds virtual suspend time injection support to KVM.

    Before this change, if the host goes into suspended state while the
    guest is running, the guest will experience a time jump after the host's
    resume. This can confuse some services in the guest since they can't
    detect if the system went into suspend or not by comparing
    CLOCK_BOOTTIME and CLOCK_MONOTONIC.

    To solve this problem, we wanted to add a way to adjust the guest clocks
    without actually suspending the guests. However, there was no way to
    modify a gap between CLOCK_BOOTTIME and CLOCK_MONOTONIC without actually
    suspending the guests. Therefore, this series introduce a new struct
    called kvm_host_suspend_time to share the suspend time between host and
    guest and a mechanism to inject a suspend time to the guest while
    keeping
    monotonicity of the clocks.

    Could you take a look and let me know how we can improve the patches if
    they are doing something wrong?

    Thanks,

    Hikaru Nishida



    Hikaru Nishida (6):
    x86/kvm: Reserve KVM_FEATURE_HOST_SUSPEND_TIME and
    MSR_KVM_HOST_SUSPEND_TIME
    x86/kvm: Add a struct and constants for virtual suspend time injection
    x86/kvm: Add CONFIG_KVM_VIRT_SUSPEND_TIMING
    x86/kvm: Add a host side support for virtual suspend time injection
    x86/kvm: Add CONFIG_KVM_VIRT_SUSPEND_TIMING_GUEST
    x86/kvm: Add a guest side support for virtual suspend time injection

    Documentation/virt/kvm/cpuid.rst | 3 +
    Documentation/virt/kvm/msr.rst | 29 +++++++++
    arch/x86/Kconfig | 13 ++++
    arch/x86/include/asm/kvm_host.h | 5 ++
    arch/x86/include/asm/kvm_para.h | 9 +++
    arch/x86/include/uapi/asm/kvm_para.h | 6 ++
    arch/x86/kernel/kvmclock.c | 25 ++++++++
    arch/x86/kvm/Kconfig | 13 ++++
    arch/x86/kvm/cpuid.c | 4 ++
    arch/x86/kvm/x86.c | 89 +++++++++++++++++++++++++++-
    include/linux/kvm_host.h | 7 +++
    include/linux/timekeeper_internal.h | 4 ++
    kernel/time/timekeeping.c | 31 ++++++++++
    13 files changed, 237 insertions(+), 1 deletion(-)

    --
    2.31.1.498.g6c1eba8ee3d-goog

    \
     
     \ /
      Last update: 2021-04-26 11:10    [W:3.702 / U:0.036 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site