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