|
|
Subscribe / Log in / New account

x86/kvm: Virtual suspend time injection support

From:  Hikaru Nishida <hikalium-AT-chromium.org>
To:  linux-kernel-AT-vger.kernel.org, dme-AT-dme.org, tglx-AT-linutronix.de, mlevitsk-AT-redhat.com, linux-AT-roeck-us.net, pbonzini-AT-redhat.com, vkuznets-AT-redhat.com, maz-AT-kernel.org, will-AT-kernel.org
Subject:  [RFC PATCH v3 0/5] x86/kvm: Virtual suspend time injection support
Date:  Wed, 20 Oct 2021 21:04:25 +0900
Message-ID:  <20211020120431.776494-1-hikalium@chromium.org>
Cc:  suleiman-AT-google.com, senozhatsky-AT-google.com, kvmarm-AT-lists.cs.columbia.edu, linux-arm-kernel-AT-lists.infradead.org, Hikaru Nishida <hikalium-AT-chromium.org>, Andy Lutomirski <luto-AT-kernel.org>, Arnd Bergmann <arnd-AT-arndb.de>, Borislav Petkov <bp-AT-alien8.de>, Dave Hansen <dave.hansen-AT-linux.intel.com>, Geert Uytterhoeven <geert-AT-linux-m68k.org>, "H. Peter Anvin" <hpa-AT-zytor.com>, Ingo Molnar <mingo-AT-kernel.org>, Ingo Molnar <mingo-AT-redhat.com>, Jim Mattson <jmattson-AT-google.com>, Joerg Roedel <joro-AT-8bytes.org>, John Stultz <john.stultz-AT-linaro.org>, Jonathan Corbet <corbet-AT-lwn.net>, Juergen Gross <jgross-AT-suse.com>, Kees Cook <keescook-AT-chromium.org>, Lai Jiangshan <laijs-AT-linux.alibaba.com>, Linus Walleij <linus.walleij-AT-linaro.org>, Peter Zijlstra <peterz-AT-infradead.org>, Sean Christopherson <seanjc-AT-google.com>, Stephen Boyd <sboyd-AT-kernel.org>, Wanpeng Li <wanpengli-AT-tencent.com>, kvm-AT-vger.kernel.org, linux-doc-AT-vger.kernel.org, x86-AT-kernel.org
Archive-link:  Article


Hi,

This patch series adds virtual suspend time injection support to KVM.
It is an updated version of the following series:
v2:
https://lore.kernel.org/kvm/20210806100710.2425336-1-hika...
v1:
https://lore.kernel.org/kvm/20210426090644.2218834-1-hika...

Please take a look again.

To kvm/arm64 folks:
I'm going to implement this mechanism to ARM64 as well but not
sure which function should be used to make an IRQ (like kvm_apic_set_irq
in x86) and if it is okay to use kvm_gfn_to_hva_cache /
kvm_write_guest_cached for sharing the suspend duration.
Please let me know if there is other suitable way or any suggestions.

Thanks,

Hikaru Nishida


Changes in v3:
- Used PM notifier instead of modifying timekeeping_resume()
  - This avoids holding kvm_lock under interrupt disabled context.
- Used KVM_REQ_* to make a request for vcpus.
- Reused HYPERVISOR_CALLBACK_VECTOR IRQ instead of adding a new one.
- Extracted arch-independent parts.
- Fixed other reviewed points.

Hikaru Nishida (5):
  timekeeping: Expose tk->offs_boot via ktime_get_offs_boot_ns
  kvm/x86: Include asm/pvclock.h in asm/kvmclock.h
  kvm/x86: virtual suspend time injection: Add common definitions
  kvm/x86: virtual suspend time injection: Implement host side
  kvm/x86: virtual suspend time injection: Implement guest side

 Documentation/virt/kvm/cpuid.rst     |   3 +
 Documentation/virt/kvm/msr.rst       |  30 ++++++++
 arch/x86/Kconfig                     |  13 ++++
 arch/x86/include/asm/idtentry.h      |   2 +-
 arch/x86/include/asm/kvm_host.h      |   2 +
 arch/x86/include/asm/kvmclock.h      |  11 +++
 arch/x86/include/uapi/asm/kvm_para.h |   6 ++
 arch/x86/kernel/kvm.c                |  14 +++-
 arch/x86/kernel/kvmclock.c           |  26 +++++++
 arch/x86/kvm/Kconfig                 |  13 ++++
 arch/x86/kvm/cpuid.c                 |   4 +
 arch/x86/kvm/x86.c                   | 109 +++++++++++++++++++++++++++
 arch/x86/mm/fault.c                  |   2 +-
 include/linux/kvm_host.h             |  48 ++++++++++++
 include/linux/timekeeper_internal.h  |   5 ++
 include/linux/timekeeping.h          |   6 ++
 kernel/time/timekeeping.c            |  56 ++++++++++++++
 virt/kvm/kvm_main.c                  |  88 +++++++++++++++++++++
 18 files changed, 432 insertions(+), 6 deletions(-)

-- 
2.33.0.1079.g6e70778dc9-goog



Copyright © 2021, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds