[RFC PATCH v3 00/19] RFC: nested AVIC

Maxim Levitsky
2022-04-27T20:03:36Z

This is V3 of my nested AVIC patches.

I fixed few more bugs, and I also split the cod insto smaller patches.

Review is welcome!

Best regards,
Maxim Levitsky

Maxim Levitsky (19):
KVM: x86: document AVIC/APICv inhibit reasons
KVM: x86: inhibit APICv/AVIC when the guest and/or host changes apic
id/base from the defaults.
KVM: x86: SVM: remove avic's broken code that updated APIC ID
KVM: x86: mmu: allow to enable write tracking externally
x86: KVMGT: use kvm_page_track_write_tracking_enable
KVM: x86: mmu: add gfn_in_memslot helper
KVM: x86: mmu: tweak fast path for emulation of access to nested NPT
pages
KVM: x86: SVM: move avic state to separate struct
KVM: x86: nSVM: add nested AVIC tracepoints
KVM: x86: nSVM: implement AVIC's physid/logid table access helpers
KVM: x86: nSVM: implement shadowing of AVIC's physical id table
KVM: x86: nSVM: make nested AVIC physid write tracking be aware of the
host scheduling
KVM: x86: nSVM: wire nested AVIC to nested guest entry/exit
KVM: x86: rename .set_apic_access_page_addr to reload_apic_access_page
KVM: x86: nSVM: add code to reload AVIC physid table when it is
invalidated
KVM: x86: nSVM: implement support for nested AVIC vmexits
KVM: x86: nSVM: implement nested AVIC doorbell emulation
KVM: x86: SVM/nSVM: add optional non strict AVIC doorbell mode
KVM: x86: nSVM: expose the nested AVIC to the guest

arch/x86/include/asm/kvm-x86-ops.h | 2 +-
arch/x86/include/asm/kvm_host.h | 23 +-
arch/x86/include/asm/kvm_page_track.h | 1 +
arch/x86/kvm/Kconfig | 3 -
arch/x86/kvm/lapic.c | 25 +-
arch/x86/kvm/lapic.h | 8 +
arch/x86/kvm/mmu.h | 8 +-
arch/x86/kvm/mmu/mmu.c | 21 +-
arch/x86/kvm/mmu/page_track.c | 10 +-
arch/x86/kvm/svm/avic.c | 985 +++++++++++++++++++++++---
arch/x86/kvm/svm/nested.c | 141 +++-
arch/x86/kvm/svm/svm.c | 39 +-
arch/x86/kvm/svm/svm.h | 166 ++++-
arch/x86/kvm/trace.h | 157 +++-
arch/x86/kvm/vmx/vmx.c | 8 +-
arch/x86/kvm/x86.c | 19 +-
drivers/gpu/drm/i915/Kconfig | 1 -
drivers/gpu/drm/i915/gvt/kvmgt.c | 5 +
include/linux/kvm_host.h | 10 +-
19 files changed, 1507 insertions(+), 125 deletions(-)

--
2.26.3