Re: [PATCH] KVM: x86: nSVM: fix switch to guest mmu

From: Paolo Bonzini
Date: Wed Dec 19 2018 - 16:21:11 EST


On 19/12/18 17:25, Vitaly Kuznetsov wrote:
> Recent optimizations in MMU code broke nested SVM with NPT in L1
> completely: when we do nested_svm_{,un}init_mmu_context() we want
> to switch from TDP MMU to shadow MMU, both init_kvm_tdp_mmu() and
> kvm_init_shadow_mmu() check if re-configuration is needed by looking
> at cache source data. The data, however, doesn't change - it's only
> the type of the MMU which changes. We end up not re-initializing
> guest MMU as shadow and everything goes off the rails.
>
> The issue could have been fixed by putting MMU type into extended MMU
> role but this is not really needed. We can just split root and guest MMUs
> the exact same way we did for nVMX, their types never change in the
> lifetime of a vCPU.
>
> There is still room for improvement: currently, we reset all MMU roots
> when switching from L1 to L2 and back and this is not needed.
>
> Fixes: 7dcd57552008 ("x86/kvm/mmu: check if tdp/shadow MMU reconfiguration is needed")
> Signed-off-by: Vitaly Kuznetsov <vkuznets@xxxxxxxxxx>

I'm queueing this to kvm-master. Radim, please pick the other patches
from him to kvm/next and let me know when you're done---the tree is
yours; I'll handle the merge window pull request.

Paolo