All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v5 00/30] KVM: hardware enable/disable reorganize
@ 2022-09-22 18:20 isaku.yamahata
  2022-09-22 18:20 ` [PATCH v5 01/30] KVM: x86: Drop kvm_user_return_msr_cpu_online() isaku.yamahata
                   ` (30 more replies)
  0 siblings, 31 replies; 48+ messages in thread
From: isaku.yamahata @ 2022-09-22 18:20 UTC (permalink / raw)
  To: linux-kernel, kvm, Paolo Bonzini, Sean Christopherson,
	Thomas Gleixner, Marc Zyngier, Will Deacon
  Cc: isaku.yamahata, isaku.yamahata, Kai Huang, Chao Gao, Atish Patra,
	Shaokun Zhang, Daniel Lezcano, Huang Ying, Huacai Chen,
	Dave Hansen, Borislav Petkov

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

I've updated the patch series based on Chao's review and eliminated
kvm_arch_pre_hardware_unsetup() and compatibility check on resume.

Those two patch are compile only tested.
- "KVM: arm64: Simplify the CPUHP logic"
- "RFC: KVM: powerpc: Move processor compatibility check to hardware setup"
- "RFC: KVM: Remove cpus_hardware_enabled and related sanity check"

Changes from v4:
- reorder/reorganize the patch.  Especially introduced one patch for each PM
  events. reboot, suspend, resume, and cpu online/offline.
- eliminated kvm_arch_pre_hardware_unsetup().
- removed compatibility check on resume
- "KVM: arm64: Simplify the CPUHP logic": fixed up signed-off-by and the link.
- "RFC: KVM: powerpc: Move processor compatibility check to hardware setup"
  move the comment in the code to the commit message.

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 kvm_arch_check_processor_compat()
- Delete cpus_hardware_enabled. 29/30 and 30/30

[1] https://lore.kernel.org/kvm/YvU+6fdkHaqQiKxp@google.com/
[2] https://lore.kernel.org/all/20220216031528.92558-1-chao.gao@intel.com/

Changes from v3:
- Updated "KVM: arm64: Simplify the CPUHP logic".
- add preempt_disable/enable() around hardware_enable/disable() to keep the
  assumption of the arch callback.
- Eliminated arch compat check callback, kvm_arch_check_processor_compat().

Changes from v2:
- Replace the first patch("KVM: x86: Drop kvm_user_return_msr_cpu_online()")
  with Sean's implementation
- Included all patches of "Improve KVM's interaction with CPU hotplug" [2]
  Until v2, Tried to cherry-pick the least patches of it. It turned out that
  all the patches are desirable.

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 (4):
  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
  KVM: Do compatibility checks on hotplugged CPUs

Isaku Yamahata (24):
  KVM: x86: Use this_cpu_ptr() instead of
    per_cpu_ptr(smp_processor_id())
  KVM: Provide more information in kernel log if hardware enabling fails
  KVM: Drop kvm_count_lock and instead protect kvm_usage_count with
    kvm_lock
  KVM: Add arch hooks when VM is added/deleted
  KVM: Add arch hook for reboot event
  KVM: Add arch hook for suspend
  KVM: Add arch hook for resume event
  KVM: Add arch hook for cpu online event
  KVM: Add arch hook for cpu offline event
  KVM: Remove on_each_cpu(hardware_disable_nolock) in kvm_exit()
  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: Introduce an arch wrapper to check all processor compatibility
  KVM: x86: Duplicate arch callbacks related to pm events and compat
    check
  KVM: x86: Move TSC fixup logic to KVM arch resume callback
  KVM: Eliminate kvm_arch_post_init_vm()
  KVM: Add config to not compile kvm_arch.c
  KVM: x86: Delete kvm_arch_hardware_enable/disable()
  KVM: x86: Make x86 processor compat check callback empty
  RFC: KVM: powerpc: Move processor compatibility check to hardware
    setup
  KVM: Eliminate kvm_arch_check_processor_compat()
  RFC: KVM: x86: Remove cpus_hardware_enabled and related sanity check
  RFC: KVM: Remove cpus_hardware_enabled and related sanity check

Marc Zyngier (1):
  KVM: arm64: Simplify the CPUHP logic

Sean Christopherson (1):
  KVM: x86: Drop kvm_user_return_msr_cpu_online()

 Documentation/virt/kvm/locking.rst |  14 +-
 arch/arm64/kvm/arch_timer.c        |  27 ++--
 arch/arm64/kvm/arm.c               |  18 ++-
 arch/arm64/kvm/vgic/vgic-init.c    |  19 +--
 arch/mips/kvm/mips.c               |   5 -
 arch/powerpc/kvm/powerpc.c         |   5 -
 arch/riscv/kvm/main.c              |   5 -
 arch/s390/kvm/kvm-s390.c           |   5 -
 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             |  24 ++--
 arch/x86/kvm/x86.c                 | 201 ++++++++++++++++++++++++----
 include/kvm/arm_arch_timer.h       |   4 +
 include/kvm/arm_vgic.h             |   4 +
 include/linux/cpuhotplug.h         |   5 +-
 include/linux/kvm_host.h           |  13 +-
 virt/kvm/Kconfig                   |   3 +
 virt/kvm/Makefile.kvm              |   3 +
 virt/kvm/kvm_arch.c                | 132 +++++++++++++++++++
 virt/kvm/kvm_main.c                | 205 +++++++++--------------------
 22 files changed, 443 insertions(+), 257 deletions(-)
 create mode 100644 virt/kvm/kvm_arch.c


base-commit: 521a547ced6477c54b4b0cc206000406c221b4d6
-- 
2.25.1


^ permalink raw reply	[flat|nested] 48+ messages in thread

end of thread, other threads:[~2022-11-02 19:00 UTC | newest]

Thread overview: 48+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-09-22 18:20 [PATCH v5 00/30] KVM: hardware enable/disable reorganize isaku.yamahata
2022-09-22 18:20 ` [PATCH v5 01/30] KVM: x86: Drop kvm_user_return_msr_cpu_online() isaku.yamahata
2022-09-22 18:20 ` [PATCH v5 02/30] KVM: x86: Use this_cpu_ptr() instead of per_cpu_ptr(smp_processor_id()) isaku.yamahata
2022-09-22 18:20 ` [PATCH v5 03/30] KVM: x86: Move check_processor_compatibility from init ops to runtime ops isaku.yamahata
2022-10-11 19:53   ` Sean Christopherson
2022-09-22 18:20 ` [PATCH v5 04/30] Partially revert "KVM: Pass kvm_init()'s opaque param to additional arch funcs" isaku.yamahata
2022-09-22 18:20 ` [PATCH v5 05/30] KVM: Provide more information in kernel log if hardware enabling fails isaku.yamahata
2022-10-12 19:45   ` Sean Christopherson
2022-09-22 18:20 ` [PATCH v5 06/30] KVM: arm64: Simplify the CPUHP logic isaku.yamahata
2022-09-22 18:20 ` [PATCH v5 07/30] KVM: Rename and move CPUHP_AP_KVM_STARTING to ONLINE section isaku.yamahata
2022-09-22 18:20 ` [PATCH v5 08/30] KVM: Do compatibility checks on hotplugged CPUs isaku.yamahata
2022-09-22 18:20 ` [PATCH v5 09/30] KVM: Drop kvm_count_lock and instead protect kvm_usage_count with kvm_lock isaku.yamahata
2022-10-12 20:14   ` Sean Christopherson
2022-09-22 18:20 ` [PATCH v5 10/30] KVM: Add arch hooks when VM is added/deleted isaku.yamahata
2022-10-04  0:16   ` Isaku Yamahata
2022-10-12 20:43   ` Sean Christopherson
2022-09-22 18:20 ` [PATCH v5 11/30] KVM: Add arch hook for reboot event isaku.yamahata
2022-10-12 20:47   ` Sean Christopherson
2022-09-22 18:20 ` [PATCH v5 12/30] KVM: Add arch hook for suspend isaku.yamahata
2022-09-22 18:20 ` [PATCH v5 13/30] KVM: Add arch hook for resume event isaku.yamahata
2022-09-22 18:20 ` [PATCH v5 14/30] KVM: Add arch hook for cpu online event isaku.yamahata
2022-09-22 18:20 ` [PATCH v5 15/30] KVM: Add arch hook for cpu offline event isaku.yamahata
2022-09-22 18:20 ` [PATCH v5 16/30] KVM: Remove on_each_cpu(hardware_disable_nolock) in kvm_exit() isaku.yamahata
2022-10-12 20:50   ` Sean Christopherson
2022-09-22 18:20 ` [PATCH v5 17/30] KVM: Move out KVM arch PM hooks and hardware enable/disable logic isaku.yamahata
2022-10-12 21:10   ` Sean Christopherson
2022-09-22 18:20 ` [PATCH v5 18/30] KVM: kvm_arch.c: Remove _nolock post fix isaku.yamahata
2022-09-22 18:20 ` [PATCH v5 19/30] KVM: kvm_arch.c: Remove a global variable, hardware_enable_failed isaku.yamahata
2022-09-22 18:20 ` [PATCH v5 20/30] KVM: Introduce an arch wrapper to check all processor compatibility isaku.yamahata
2022-09-22 18:20 ` [PATCH v5 21/30] KVM: x86: Duplicate arch callbacks related to pm events and compat check isaku.yamahata
2022-09-22 18:20 ` [PATCH v5 22/30] KVM: x86: Move TSC fixup logic to KVM arch resume callback isaku.yamahata
2022-09-22 18:20 ` [PATCH v5 23/30] KVM: Eliminate kvm_arch_post_init_vm() isaku.yamahata
2022-09-22 18:20 ` [PATCH v5 24/30] KVM: Add config to not compile kvm_arch.c isaku.yamahata
2022-09-22 18:20 ` [PATCH v5 25/30] KVM: x86: Delete kvm_arch_hardware_enable/disable() isaku.yamahata
2022-09-22 18:20 ` [PATCH v5 26/30] KVM: x86: Make x86 processor compat check callback empty isaku.yamahata
2022-09-22 18:20 ` [PATCH v5 27/30] RFC: KVM: powerpc: Move processor compatibility check to hardware setup isaku.yamahata
2022-09-22 18:20   ` isaku.yamahata
2022-09-23  6:58   ` Michael Ellerman
2022-09-23  6:58     ` Michael Ellerman
2022-09-27  0:40     ` Isaku Yamahata
2022-09-27  0:40       ` Isaku Yamahata
2022-09-22 18:20 ` [PATCH v5 28/30] KVM: Eliminate kvm_arch_check_processor_compat() isaku.yamahata
2022-09-22 18:20 ` [PATCH v5 29/30] RFC: KVM: x86: Remove cpus_hardware_enabled and related sanity check isaku.yamahata
2022-09-22 18:20 ` [PATCH v5 30/30] RFC: KVM: " isaku.yamahata
2022-10-13  0:25 ` [PATCH v5 00/30] KVM: hardware enable/disable reorganize Sean Christopherson
2022-10-14  4:04   ` Sean Christopherson
2022-11-02 18:02     ` Paolo Bonzini
2022-11-02 18:59       ` Sean Christopherson

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.