struct kvm_sregs *sregs)
 {
        int mmu_reset_needed = 0;
-       int pending_vec, max_bits;
+       int pending_vec, max_bits, idx;
        struct desc_ptr dt;
 
        dt.size = sregs->idt.limit;
        kvm_x86_ops->set_cr4(vcpu, sregs->cr4);
        if (sregs->cr4 & X86_CR4_OSXSAVE)
                update_cpuid(vcpu);
+
+       idx = srcu_read_lock(&vcpu->kvm->srcu);
        if (!is_long_mode(vcpu) && is_pae(vcpu)) {
                load_pdptrs(vcpu, vcpu->arch.walk_mmu, kvm_read_cr3(vcpu));
                mmu_reset_needed = 1;
        }
+       srcu_read_unlock(&vcpu->kvm->srcu, idx);
 
        if (mmu_reset_needed)
                kvm_mmu_reset_context(vcpu);