In this function, the TLB flushing comes before spin unlock, void kvm_mmu_slot_remove_write_access(struct kvm *kvm, int slot) { struct kvm_mmu_page *sp; spin_lock(&kvm->mmu_lock); kvm_flush_remote_tlbs(kvm); spin_unlock(&kvm->mmu_lock); } but in kvm_vm_ioctl_set_memory_alias(): spin_unlock(&kvm->mmu_lock); kvm_mmu_zap_all(kvm); it comes after inside kvm_mmu_zap_all(). Does it sound logical? -- Regards, Peter Teoh -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html