public inbox for kvm@vger.kernel.org
 help / color / mirror / Atom feed
From: isaku.yamahata@intel.com
To: kvm@vger.kernel.org, linux-kernel@vger.kernel.org
Cc: isaku.yamahata@intel.com, isaku.yamahata@gmail.com,
	Paolo Bonzini <pbonzini@redhat.com>,
	Sean Christopherson <seanjc@google.com>,
	Kai Huang <kai.huang@intel.com>, Chao Gao <chao.gao@intel.com>,
	Will Deacon <will@kernel.org>
Subject: [PATCH v2 00/19] KVM hardware enable/disable reorganize
Date: Tue, 30 Aug 2022 05:01:15 -0700	[thread overview]
Message-ID: <cover.1661860550.git.isaku.yamahata@intel.com> (raw)

From: Isaku Yamahata <isaku.yamahata@intel.com>

This patch series is to implement the suggestion by Sean Christopherson [1]
to reorganize enable/disable cpu virtualization feature by replacing
the arch-generic current enable/disable logic with PM related hooks. And
convert kvm/x86 to use new hooks.

- Untable x86 hardware enable logic, snapshot MSRs for user return notifier,
  enabling cpu virtualization on cpu online and platform resume. and real
  enabling of CPU virtualization feature
- Introduce hooks related to PM.
- Convert kvm/x86 code to user those hooks.
- Split out hardware enabling/disabling logic into a separate file.  Compile
  it for non-x86 code.  Once conversion of other KVM archs is done, this file
  can be dropped.
- Delete cpus_hardware_enabled. 17/18 and 18/18

[1] https://lore.kernel.org/kvm/YvU+6fdkHaqQiKxp@google.com/

Changes from v1:
- Add a patch "KVM: Rename and move CPUHP_AP_KVM_STARTING to ONLINE section"
  to make online/offline callback to run thread context to use mutex instead
  of spin lock
- fixes pointed by Chao Gao

Chao Gao (3):
  KVM: x86: Move check_processor_compatibility from init ops to runtime
    ops
  Partially revert "KVM: Pass kvm_init()'s opaque param to additional
    arch funcs"
  KVM: Rename and move CPUHP_AP_KVM_STARTING to ONLINE section

Isaku Yamahata (16):
  KVM: x86: Drop kvm_user_return_msr_cpu_online()
  KVM: x86: Use this_cpu_ptr() instead of
    per_cpu_ptr(smp_processor_id())
  KVM: Drop kvm_count_lock and instead protect kvm_usage_count with
    kvm_lock
  KVM: Add arch hooks for PM events with empty stub
  KVM: x86: Move TSC fixup logic to KVM arch resume callback
  KVM: Add arch hook when VM is added/deleted
  KVM: Move out KVM arch PM hooks and hardware enable/disable logic
  KVM: kvm_arch.c: Remove _nolock post fix
  KVM: kvm_arch.c: Remove a global variable, hardware_enable_failed
  KVM: Do processor compatibility check on cpu online and resume
  KVM: x86: Duplicate arch callbacks related to pm events
  KVM: Eliminate kvm_arch_post_init_vm()
  KVM: x86: Delete kvm_arch_hardware_enable/disable()
  KVM: Add config to not compile kvm_arch.c
  RFC: KVM: x86: Remove cpus_hardware_enabled and related sanity check
  RFC: KVM: Remove cpus_hardware_enabled and related sanity check

 Documentation/virt/kvm/locking.rst |  14 +--
 arch/arm64/kvm/arm.c               |   2 +-
 arch/mips/kvm/mips.c               |   2 +-
 arch/powerpc/kvm/powerpc.c         |   2 +-
 arch/riscv/kvm/main.c              |   2 +-
 arch/s390/kvm/kvm-s390.c           |   2 +-
 arch/x86/include/asm/kvm-x86-ops.h |   1 +
 arch/x86/include/asm/kvm_host.h    |   2 +-
 arch/x86/kvm/Kconfig               |   1 +
 arch/x86/kvm/svm/svm.c             |   4 +-
 arch/x86/kvm/vmx/vmx.c             |  14 +--
 arch/x86/kvm/x86.c                 | 192 +++++++++++++++++++++-------
 include/linux/cpuhotplug.h         |   2 +-
 include/linux/kvm_host.h           |  14 ++-
 virt/kvm/Kconfig                   |   3 +
 virt/kvm/Makefile.kvm              |   3 +
 virt/kvm/kvm_arch.c                | 126 +++++++++++++++++++
 virt/kvm/kvm_main.c                | 193 +++++++++--------------------
 18 files changed, 373 insertions(+), 206 deletions(-)
 create mode 100644 virt/kvm/kvm_arch.c

-- 
2.25.1


             reply	other threads:[~2022-08-30 12:02 UTC|newest]

Thread overview: 30+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-08-30 12:01 isaku.yamahata [this message]
2022-08-30 12:01 ` [PATCH v2 01/19] KVM: x86: Drop kvm_user_return_msr_cpu_online() isaku.yamahata
2022-09-01  5:29   ` Chao Gao
2022-09-01 14:12     ` Sean Christopherson
2022-09-01 17:49       ` Isaku Yamahata
2022-08-30 12:01 ` [PATCH v2 02/19] KVM: x86: Use this_cpu_ptr() instead of per_cpu_ptr(smp_processor_id()) isaku.yamahata
2022-09-01  5:56   ` Chao Gao
2022-08-30 12:01 ` [PATCH v2 03/19] KVM: x86: Move check_processor_compatibility from init ops to runtime ops isaku.yamahata
2022-08-30 12:01 ` [PATCH v2 04/19] Partially revert "KVM: Pass kvm_init()'s opaque param to additional arch funcs" isaku.yamahata
2022-08-30 22:39   ` Huang, Kai
2022-09-01 18:01     ` Isaku Yamahata
2022-08-30 12:01 ` [PATCH v2 05/19] KVM: Rename and move CPUHP_AP_KVM_STARTING to ONLINE section isaku.yamahata
2022-09-01  5:59   ` Chao Gao
2022-09-01  6:18   ` Chao Gao
2022-09-01 10:58     ` Huang, Kai
2022-09-01 16:52       ` Isaku Yamahata
2022-08-30 12:01 ` [PATCH v2 06/19] KVM: Drop kvm_count_lock and instead protect kvm_usage_count with kvm_lock isaku.yamahata
2022-08-30 12:01 ` [PATCH v2 07/19] KVM: Add arch hooks for PM events with empty stub isaku.yamahata
2022-08-30 12:01 ` [PATCH v2 08/19] KVM: x86: Move TSC fixup logic to KVM arch resume callback isaku.yamahata
2022-08-30 12:01 ` [PATCH v2 09/19] KVM: Add arch hook when VM is added/deleted isaku.yamahata
2022-08-30 12:01 ` [PATCH v2 10/19] KVM: Move out KVM arch PM hooks and hardware enable/disable logic isaku.yamahata
2022-08-30 12:01 ` [PATCH v2 11/19] KVM: kvm_arch.c: Remove _nolock post fix isaku.yamahata
2022-08-30 12:01 ` [PATCH v2 12/19] KVM: kvm_arch.c: Remove a global variable, hardware_enable_failed isaku.yamahata
2022-08-30 12:01 ` [PATCH v2 13/19] KVM: Do processor compatibility check on cpu online and resume isaku.yamahata
2022-08-30 12:01 ` [PATCH v2 14/19] KVM: x86: Duplicate arch callbacks related to pm events isaku.yamahata
2022-08-30 12:01 ` [PATCH v2 15/19] KVM: Eliminate kvm_arch_post_init_vm() isaku.yamahata
2022-08-30 12:01 ` [PATCH v2 16/19] KVM: x86: Delete kvm_arch_hardware_enable/disable() isaku.yamahata
2022-08-30 12:01 ` [PATCH v2 17/19] KVM: Add config to not compile kvm_arch.c isaku.yamahata
2022-08-30 12:01 ` [PATCH v2 18/19] RFC: KVM: x86: Remove cpus_hardware_enabled and related sanity check isaku.yamahata
2022-08-30 12:01 ` [PATCH v2 19/19] RFC: KVM: " isaku.yamahata

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=cover.1661860550.git.isaku.yamahata@intel.com \
    --to=isaku.yamahata@intel.com \
    --cc=chao.gao@intel.com \
    --cc=isaku.yamahata@gmail.com \
    --cc=kai.huang@intel.com \
    --cc=kvm@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=pbonzini@redhat.com \
    --cc=seanjc@google.com \
    --cc=will@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox