• Home
  • Raw
  • Download

Lines Matching refs:vfio_group

26 	struct vfio_group *vfio_group;  member
35 static struct vfio_group *kvm_vfio_group_get_external_user(struct file *filep) in kvm_vfio_group_get_external_user()
37 struct vfio_group *vfio_group; in kvm_vfio_group_get_external_user() local
38 struct vfio_group *(*fn)(struct file *); in kvm_vfio_group_get_external_user()
44 vfio_group = fn(filep); in kvm_vfio_group_get_external_user()
48 return vfio_group; in kvm_vfio_group_get_external_user()
51 static bool kvm_vfio_external_group_match_file(struct vfio_group *group, in kvm_vfio_external_group_match_file()
54 bool ret, (*fn)(struct vfio_group *, struct file *); in kvm_vfio_external_group_match_file()
67 static void kvm_vfio_group_put_external_user(struct vfio_group *vfio_group) in kvm_vfio_group_put_external_user() argument
69 void (*fn)(struct vfio_group *); in kvm_vfio_group_put_external_user()
75 fn(vfio_group); in kvm_vfio_group_put_external_user()
80 static void kvm_vfio_group_set_kvm(struct vfio_group *group, struct kvm *kvm) in kvm_vfio_group_set_kvm()
82 void (*fn)(struct vfio_group *, struct kvm *); in kvm_vfio_group_set_kvm()
93 static bool kvm_vfio_group_is_coherent(struct vfio_group *vfio_group) in kvm_vfio_group_is_coherent() argument
95 long (*fn)(struct vfio_group *, unsigned long); in kvm_vfio_group_is_coherent()
102 ret = fn(vfio_group, VFIO_DMA_CC_IOMMU); in kvm_vfio_group_is_coherent()
110 static int kvm_vfio_external_user_iommu_id(struct vfio_group *vfio_group) in kvm_vfio_external_user_iommu_id() argument
112 int (*fn)(struct vfio_group *); in kvm_vfio_external_user_iommu_id()
119 ret = fn(vfio_group); in kvm_vfio_external_user_iommu_id()
127 struct vfio_group *group) in kvm_vfio_group_get_iommu_group()
138 struct vfio_group *vfio_group) in kvm_spapr_tce_release_vfio_group() argument
140 struct iommu_group *grp = kvm_vfio_group_get_iommu_group(vfio_group); in kvm_spapr_tce_release_vfio_group()
166 if (!kvm_vfio_group_is_coherent(kvg->vfio_group)) { in kvm_vfio_update_coherency()
187 struct vfio_group *vfio_group; in kvm_vfio_set_group() local
203 vfio_group = kvm_vfio_group_get_external_user(f.file); in kvm_vfio_set_group()
206 if (IS_ERR(vfio_group)) in kvm_vfio_set_group()
207 return PTR_ERR(vfio_group); in kvm_vfio_set_group()
212 if (kvg->vfio_group == vfio_group) { in kvm_vfio_set_group()
214 kvm_vfio_group_put_external_user(vfio_group); in kvm_vfio_set_group()
222 kvm_vfio_group_put_external_user(vfio_group); in kvm_vfio_set_group()
227 kvg->vfio_group = vfio_group; in kvm_vfio_set_group()
233 kvm_vfio_group_set_kvm(vfio_group, dev->kvm); in kvm_vfio_set_group()
252 if (!kvm_vfio_external_group_match_file(kvg->vfio_group, in kvm_vfio_set_group()
260 kvg->vfio_group); in kvm_vfio_set_group()
262 kvm_vfio_group_set_kvm(kvg->vfio_group, NULL); in kvm_vfio_set_group()
263 kvm_vfio_group_put_external_user(kvg->vfio_group); in kvm_vfio_set_group()
281 struct vfio_group *vfio_group; in kvm_vfio_set_group() local
294 vfio_group = kvm_vfio_group_get_external_user(f.file); in kvm_vfio_set_group()
297 if (IS_ERR(vfio_group)) in kvm_vfio_set_group()
298 return PTR_ERR(vfio_group); in kvm_vfio_set_group()
300 grp = kvm_vfio_group_get_iommu_group(vfio_group); in kvm_vfio_set_group()
302 kvm_vfio_group_put_external_user(vfio_group); in kvm_vfio_set_group()
311 if (kvg->vfio_group != vfio_group) in kvm_vfio_set_group()
322 kvm_vfio_group_put_external_user(vfio_group); in kvm_vfio_set_group()
370 kvm_spapr_tce_release_vfio_group(dev->kvm, kvg->vfio_group); in kvm_vfio_destroy()
372 kvm_vfio_group_set_kvm(kvg->vfio_group, NULL); in kvm_vfio_destroy()
373 kvm_vfio_group_put_external_user(kvg->vfio_group); in kvm_vfio_destroy()