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