Lines Matching defs:kvm

11 #include <linux/kvm.h>
35 static struct kvmppc_spapr_tce_table *kvmppc_find_table(struct kvm *kvm,
40 list_for_each_entry_lockless(stt, &kvm->arch.spapr_tce_tables, list)
80 extern void kvm_spapr_tce_release_iommu_group(struct kvm *kvm,
89 list_for_each_entry_rcu(stt, &kvm->arch.spapr_tce_tables, list) {
108 extern long kvm_spapr_tce_attach_iommu_group(struct kvm *kvm, int tablefd,
124 list_for_each_entry_rcu(stt, &kvm->arch.spapr_tce_tables, list) {
262 struct kvm *kvm = stt->kvm;
264 mutex_lock(&kvm->lock);
266 mutex_unlock(&kvm->lock);
276 account_locked_vm(kvm->mm,
279 kvm_put_kvm(stt->kvm);
291 int kvm_vm_ioctl_create_spapr_tce(struct kvm *kvm,
296 struct mm_struct *mm = kvm->mm;
318 stt->kvm = kvm;
322 mutex_lock(&kvm->lock);
326 list_for_each_entry(siter, &kvm->arch.spapr_tce_tables, list) {
333 kvm_get_kvm(kvm);
335 ret = anon_inode_getfd("kvm-spapr-tce", &kvm_spapr_tce_fops,
339 list_add_rcu(&stt->list, &kvm->arch.spapr_tce_tables);
341 kvm_put_kvm_no_destroy(kvm);
343 mutex_unlock(&kvm->lock);
354 static long kvmppc_tce_to_ua(struct kvm *kvm, unsigned long tce,
360 memslot = __gfn_to_memslot(kvm_memslots(kvm), gfn);
385 if (kvmppc_tce_to_ua(stt->kvm, tce, &ua))
394 mem = mm_iommu_lookup(stt->kvm->mm, ua, 1ULL << shift);
450 static long kvmppc_tce_iommu_mapped_dec(struct kvm *kvm,
460 mem = mm_iommu_lookup(kvm->mm, be64_to_cpu(*pua), pgsize);
471 static long kvmppc_tce_iommu_do_unmap(struct kvm *kvm,
478 if (WARN_ON_ONCE(iommu_tce_xchg_no_kill(kvm->mm, tbl, entry, &hpa,
485 ret = kvmppc_tce_iommu_mapped_dec(kvm, tbl, entry);
487 iommu_tce_xchg_no_kill(kvm->mm, tbl, entry, &hpa, &dir);
492 static long kvmppc_tce_iommu_unmap(struct kvm *kvm,
501 ret = kvmppc_tce_iommu_do_unmap(kvm, tbl, io_entry + i);
511 static long kvmppc_tce_iommu_do_map(struct kvm *kvm, struct iommu_table *tbl,
524 mem = mm_iommu_lookup(kvm->mm, ua, 1ULL << tbl->it_page_shift);
535 ret = iommu_tce_xchg_no_kill(kvm->mm, tbl, entry, &hpa, &dir);
542 kvmppc_tce_iommu_mapped_dec(kvm, tbl, entry);
549 static long kvmppc_tce_iommu_map(struct kvm *kvm,
561 ret = kvmppc_tce_iommu_do_map(kvm, tbl,
584 stt = kvmppc_find_table(vcpu->kvm, liobn);
592 idx = srcu_read_lock(&vcpu->kvm->srcu);
600 if ((dir != DMA_NONE) && kvmppc_tce_to_ua(vcpu->kvm, tce, &ua)) {
609 ret = kvmppc_tce_iommu_unmap(vcpu->kvm, stt,
612 ret = kvmppc_tce_iommu_map(vcpu->kvm, stt, stit->tbl,
617 kvmppc_clear_tce(vcpu->kvm->mm, stt, stit->tbl, entry);
625 srcu_read_unlock(&vcpu->kvm->srcu, idx);
642 stt = kvmppc_find_table(vcpu->kvm, liobn);
661 idx = srcu_read_lock(&vcpu->kvm->srcu);
662 if (kvmppc_tce_to_ua(vcpu->kvm, tce_list, &ua)) {
697 if (kvmppc_tce_to_ua(vcpu->kvm, tce, &ua)) {
703 ret = kvmppc_tce_iommu_map(vcpu->kvm, stt,
708 kvmppc_clear_tce(vcpu->kvm->mm, stt, stit->tbl,
718 srcu_read_unlock(&vcpu->kvm->srcu, idx);
732 stt = kvmppc_find_table(vcpu->kvm, liobn);
748 ret = kvmppc_tce_iommu_unmap(vcpu->kvm, stt,
758 kvmppc_clear_tce(vcpu->kvm->mm, stt, stit->tbl, entry + i);
778 stt = kvmppc_find_table(vcpu->kvm, liobn);