LKML Archive on lore.kernel.org
help / color / mirror / Atom feed
* [PATCH v3 00/12] My AVIC patch queue
@ 2021-08-02 18:33 Maxim Levitsky
  2021-08-02 18:33 ` [PATCH v3 01/12] Revert "KVM: x86/mmu: Allow zap gfn range to operate under the mmu read lock" Maxim Levitsky
                   ` (11 more replies)
  0 siblings, 12 replies; 29+ messages in thread
From: Maxim Levitsky @ 2021-08-02 18:33 UTC (permalink / raw)
  To: kvm
  Cc: Wanpeng Li, Thomas Gleixner, Joerg Roedel, Borislav Petkov,
	Sean Christopherson, Jim Mattson,
	maintainer:X86 ARCHITECTURE (32-BIT AND 64-BIT),
	open list:X86 ARCHITECTURE (32-BIT AND 64-BIT),
	Suravee Suthikulpanit, Vitaly Kuznetsov, Ingo Molnar,
	H. Peter Anvin, Paolo Bonzini, Maxim Levitsky

Hi!\r
\r
This is a series of bugfixes to the AVIC dynamic inhibition, which was\r
made while trying to fix bugs as much as possible in this area and trying\r
to make the AVIC+SYNIC conditional enablement work.\r
\r
* Patches 1-6 are code from Sean Christopherson which\r
  implement an alternative approach of inhibiting AVIC without\r
  disabling its memslot.\r
  Those patches are new in this version of the patchset.\r
\r
* Patches 7-8 in this series fix a race condition which can cause\r
  a lost write from a guest to APIC when the APIC write races\r
  the AVIC un-inhibition, and add a warning to catch this problem\r
  if it re-emerges again.\r
\r
  V3: moved the mutex to kvm.arch and added comment\r
\r
* Patch 9 is the patch from Vitaly about allowing AVIC with SYNC\r
  as long as the guest doesn’t use the AutoEOI feature. I only slightly\r
  changed it to expose the AutoEOI cpuid bit regardless of AVIC enablement.\r
\r
* Patch 10 is a new patch in this version, which is a refactoring that is now\r
  possible in SVM AVIC inhibition code, because the RCU lock is not dropped anymore.\r
\r
* Patch 11 fixes another issue I found in AVIC inhibit code:\r
\r
  Currently avic_vcpu_load/avic_vcpu_put are called on userspace entry/exit\r
  from KVM (aka kvm_vcpu_get/kvm_vcpu_put), and these functions update the\r
  "is running" bit in the AVIC physical ID remap table and update the\r
  target vCPU in iommu code.\r
\r
  However both of these functions don't do anything when AVIC is inhibited\r
  thus the "is running" bit will be kept enabled during the exit to userspace.\r
  This shouldn't be a big issue as the caller\r
  doesn't use the AVIC when inhibited but still inconsistent and can trigger\r
  a warning about this in avic_vcpu_load.\r
\r
  To be on the safe side I think it makes sense to call\r
  avic_vcpu_put/avic_vcpu_load when inhibiting/uninhibiting the AVIC.\r
  This will ensure that the work these functions do is matched.\r
\r
* Patch 12 (also new in this series) removes the pointless APIC base\r
  relocation from AVIC to make it consistent with the rest of KVM.\r
\r
  (both AVIC and APICv only support default base, while regular KVM,\r
  sort of support any APIC base as long as it is not RAM.\r
  If guest attempts to relocate APIC base to non RAM area,\r
  while APICv/AVIC are active, the new base will be non accelerated,\r
  while the default base will continue to be AVIC/APICv backed).\r
\r
Best regards,\r
	Maxim Levitsky\r
\r
Maxim Levitsky (10):\r
  KVM: x86/mmu: bump mmu notifier count in kvm_zap_gfn_range\r
  KVM: x86/mmu: rename try_async_pf to kvm_faultin_pfn\r
  KVM: x86/mmu: allow kvm_faultin_pfn to return page fault handling code\r
  KVM: x86/mmu: allow APICv memslot to be partially enabled\r
  KVM: x86: don't disable APICv memslot when inhibited\r
  KVM: x86: APICv: fix race in kvm_request_apicv_update on SVM\r
  KVM: SVM: add warning for mistmatch between AVIC state and AVIC access\r
    page state\r
  KVM: SVM: remove svm_toggle_avic_for_irq_window\r
  KVM: SVM: call avic_vcpu_load/avic_vcpu_put when enabling/disabling\r
    AVIC\r
  KVM: SVM: AVIC: drop unsupported AVIC base relocation code\r
\r
Sean Christopherson (1):\r
  Revert "KVM: x86/mmu: Allow zap gfn range to operate under the mmu\r
    read lock"\r
\r
Vitaly Kuznetsov (1):\r
  KVM: x86: hyper-v: Deactivate APICv only when AutoEOI feature is in\r
    use\r
\r
 arch/x86/include/asm/kvm-x86-ops.h |  1 -\r
 arch/x86/include/asm/kvm_host.h    |  7 ++-\r
 arch/x86/kvm/hyperv.c              | 27 ++++++++---\r
 arch/x86/kvm/mmu/mmu.c             | 69 ++++++++++++++++----------\r
 arch/x86/kvm/mmu/paging_tmpl.h     |  6 +--\r
 arch/x86/kvm/mmu/tdp_mmu.c         | 15 ++----\r
 arch/x86/kvm/mmu/tdp_mmu.h         | 11 ++---\r
 arch/x86/kvm/svm/avic.c            | 77 ++++++++++++------------------\r
 arch/x86/kvm/svm/svm.c             | 23 +++++----\r
 arch/x86/kvm/svm/svm.h             |  8 ----\r
 arch/x86/kvm/x86.c                 | 56 +++++++++++++---------\r
 include/linux/kvm_host.h           |  5 ++\r
 virt/kvm/kvm_main.c                |  7 ++-\r
 13 files changed, 166 insertions(+), 146 deletions(-)\r
\r
-- \r
2.26.3\r
\r


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

end of thread, other threads:[~2021-08-09 19:14 UTC | newest]

Thread overview: 29+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-08-02 18:33 [PATCH v3 00/12] My AVIC patch queue Maxim Levitsky
2021-08-02 18:33 ` [PATCH v3 01/12] Revert "KVM: x86/mmu: Allow zap gfn range to operate under the mmu read lock" Maxim Levitsky
2021-08-03  8:05   ` Paolo Bonzini
2021-08-03 15:11     ` Sean Christopherson
2021-08-03 17:29       ` Paolo Bonzini
2021-08-02 18:33 ` [PATCH v3 02/12] KVM: x86/mmu: bump mmu notifier count in kvm_zap_gfn_range Maxim Levitsky
2021-08-03  9:00   ` Paolo Bonzini
2021-08-02 18:33 ` [PATCH v3 03/12] KVM: x86/mmu: rename try_async_pf to kvm_faultin_pfn Maxim Levitsky
2021-08-03  9:00   ` Paolo Bonzini
2021-08-02 18:33 ` [PATCH v3 04/12] KVM: x86/mmu: allow kvm_faultin_pfn to return page fault handling code Maxim Levitsky
2021-08-03  9:00   ` Paolo Bonzini
2021-08-02 18:33 ` [PATCH v3 05/12] KVM: x86/mmu: allow APICv memslot to be partially enabled Maxim Levitsky
2021-08-03  9:12   ` Paolo Bonzini
2021-08-02 18:33 ` [PATCH v3 06/12] KVM: x86: don't disable APICv memslot when inhibited Maxim Levitsky
2021-08-03  8:44   ` Paolo Bonzini
2021-08-09 18:51     ` Maxim Levitsky
2021-08-09 19:14       ` Sean Christopherson
2021-08-02 18:33 ` [PATCH v3 07/12] KVM: x86: APICv: fix race in kvm_request_apicv_update on SVM Maxim Levitsky
2021-08-02 18:33 ` [PATCH v3 08/12] KVM: SVM: add warning for mistmatch between AVIC state and AVIC access page state Maxim Levitsky
2021-08-03  8:45   ` Paolo Bonzini
2021-08-02 18:33 ` [PATCH v3 09/12] KVM: x86: hyper-v: Deactivate APICv only when AutoEOI feature is in use Maxim Levitsky
2021-08-03  8:47   ` Paolo Bonzini
2021-08-03  9:01   ` Paolo Bonzini
2021-08-03  9:11   ` Paolo Bonzini
2021-08-02 18:33 ` [PATCH v3 10/12] KVM: SVM: remove svm_toggle_avic_for_irq_window Maxim Levitsky
2021-08-03  9:11   ` Paolo Bonzini
2021-08-02 18:33 ` [PATCH v3 11/12] KVM: SVM: call avic_vcpu_load/avic_vcpu_put when enabling/disabling AVIC Maxim Levitsky
2021-08-03  9:00   ` Paolo Bonzini
2021-08-02 18:33 ` [PATCH v3 12/12] KVM: SVM: AVIC: drop unsupported AVIC base relocation code Maxim Levitsky

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).