Lines Matching defs:kvm

11 #include <linux/kvm.h>
36 static struct kvmppc_spapr_tce_table *kvmppc_find_table(struct kvm *kvm,
41 list_for_each_entry_lockless(stt, &kvm->arch.spapr_tce_tables, list)
81 void kvm_spapr_tce_release_iommu_group(struct kvm *kvm,
90 list_for_each_entry_rcu(stt, &kvm->arch.spapr_tce_tables, list) {
109 long kvm_spapr_tce_attach_iommu_group(struct kvm *kvm, int tablefd,
125 list_for_each_entry_rcu(stt, &kvm->arch.spapr_tce_tables, list) {
263 struct kvm *kvm = stt->kvm;
265 mutex_lock(&kvm->lock);
267 mutex_unlock(&kvm->lock);
277 account_locked_vm(kvm->mm,
280 kvm_put_kvm(stt->kvm);
292 int kvm_vm_ioctl_create_spapr_tce(struct kvm *kvm,
297 struct mm_struct *mm = kvm->mm;
319 stt->kvm = kvm;
323 mutex_lock(&kvm->lock);
327 list_for_each_entry(siter, &kvm->arch.spapr_tce_tables, list) {
334 kvm_get_kvm(kvm);
336 ret = anon_inode_getfd("kvm-spapr-tce", &kvm_spapr_tce_fops,
340 list_add_rcu(&stt->list, &kvm->arch.spapr_tce_tables);
342 kvm_put_kvm_no_destroy(kvm);
344 mutex_unlock(&kvm->lock);
355 static long kvmppc_tce_to_ua(struct kvm *kvm, unsigned long tce,
361 memslot = __gfn_to_memslot(kvm_memslots(kvm), gfn);
386 if (kvmppc_tce_to_ua(stt->kvm, tce, &ua))
395 mem = mm_iommu_lookup(stt->kvm->mm, ua, 1ULL << shift);
451 static long kvmppc_tce_iommu_mapped_dec(struct kvm *kvm,
461 mem = mm_iommu_lookup(kvm->mm, be64_to_cpu(*pua), pgsize);
472 static long kvmppc_tce_iommu_do_unmap(struct kvm *kvm,
479 if (WARN_ON_ONCE(iommu_tce_xchg_no_kill(kvm->mm, tbl, entry, &hpa,
486 ret = kvmppc_tce_iommu_mapped_dec(kvm, tbl, entry);
488 iommu_tce_xchg_no_kill(kvm->mm, tbl, entry, &hpa, &dir);
493 static long kvmppc_tce_iommu_unmap(struct kvm *kvm,
502 ret = kvmppc_tce_iommu_do_unmap(kvm, tbl, io_entry + i);
512 static long kvmppc_tce_iommu_do_map(struct kvm *kvm, struct iommu_table *tbl,
525 mem = mm_iommu_lookup(kvm->mm, ua, 1ULL << tbl->it_page_shift);
536 ret = iommu_tce_xchg_no_kill(kvm->mm, tbl, entry, &hpa, &dir);
543 kvmppc_tce_iommu_mapped_dec(kvm, tbl, entry);
550 static long kvmppc_tce_iommu_map(struct kvm *kvm,
562 ret = kvmppc_tce_iommu_do_map(kvm, tbl,
585 stt = kvmppc_find_table(vcpu->kvm, liobn);
593 idx = srcu_read_lock(&vcpu->kvm->srcu);
601 if ((dir != DMA_NONE) && kvmppc_tce_to_ua(vcpu->kvm, tce, &ua)) {
610 ret = kvmppc_tce_iommu_unmap(vcpu->kvm, stt,
613 ret = kvmppc_tce_iommu_map(vcpu->kvm, stt, stit->tbl,
618 kvmppc_clear_tce(vcpu->kvm->mm, stt, stit->tbl, entry);
626 srcu_read_unlock(&vcpu->kvm->srcu, idx);
643 stt = kvmppc_find_table(vcpu->kvm, liobn);
662 idx = srcu_read_lock(&vcpu->kvm->srcu);
663 if (kvmppc_tce_to_ua(vcpu->kvm, tce_list, &ua)) {
698 if (kvmppc_tce_to_ua(vcpu->kvm, tce, &ua)) {
704 ret = kvmppc_tce_iommu_map(vcpu->kvm, stt,
709 kvmppc_clear_tce(vcpu->kvm->mm, stt, stit->tbl,
719 srcu_read_unlock(&vcpu->kvm->srcu, idx);
733 stt = kvmppc_find_table(vcpu->kvm, liobn);
749 ret = kvmppc_tce_iommu_unmap(vcpu->kvm, stt,
759 kvmppc_clear_tce(vcpu->kvm->mm, stt, stit->tbl, entry + i);
779 stt = kvmppc_find_table(vcpu->kvm, liobn);