Lines Matching refs:objs

122 	struct virtio_gpu_object_array *objs;  in virtio_gpu_gem_object_open()  local
132 objs = virtio_gpu_array_alloc(1); in virtio_gpu_gem_object_open()
133 if (!objs) in virtio_gpu_gem_object_open()
135 virtio_gpu_array_add_obj(objs, obj); in virtio_gpu_gem_object_open()
138 objs); in virtio_gpu_gem_object_open()
149 struct virtio_gpu_object_array *objs; in virtio_gpu_gem_object_close() local
154 objs = virtio_gpu_array_alloc(1); in virtio_gpu_gem_object_close()
155 if (!objs) in virtio_gpu_gem_object_close()
157 virtio_gpu_array_add_obj(objs, obj); in virtio_gpu_gem_object_close()
160 objs); in virtio_gpu_gem_object_close()
166 struct virtio_gpu_object_array *objs; in virtio_gpu_array_alloc() local
168 objs = kmalloc(struct_size(objs, objs, nents), GFP_KERNEL); in virtio_gpu_array_alloc()
169 if (!objs) in virtio_gpu_array_alloc()
172 objs->nents = 0; in virtio_gpu_array_alloc()
173 objs->total = nents; in virtio_gpu_array_alloc()
174 return objs; in virtio_gpu_array_alloc()
177 static void virtio_gpu_array_free(struct virtio_gpu_object_array *objs) in virtio_gpu_array_free() argument
179 kfree(objs); in virtio_gpu_array_free()
185 struct virtio_gpu_object_array *objs; in virtio_gpu_array_from_handles() local
188 objs = virtio_gpu_array_alloc(nents); in virtio_gpu_array_from_handles()
189 if (!objs) in virtio_gpu_array_from_handles()
193 objs->objs[i] = drm_gem_object_lookup(drm_file, handles[i]); in virtio_gpu_array_from_handles()
194 if (!objs->objs[i]) { in virtio_gpu_array_from_handles()
195 objs->nents = i; in virtio_gpu_array_from_handles()
196 virtio_gpu_array_put_free(objs); in virtio_gpu_array_from_handles()
200 objs->nents = i; in virtio_gpu_array_from_handles()
201 return objs; in virtio_gpu_array_from_handles()
204 void virtio_gpu_array_add_obj(struct virtio_gpu_object_array *objs, in virtio_gpu_array_add_obj() argument
207 if (WARN_ON_ONCE(objs->nents == objs->total)) in virtio_gpu_array_add_obj()
211 objs->objs[objs->nents] = obj; in virtio_gpu_array_add_obj()
212 objs->nents++; in virtio_gpu_array_add_obj()
215 int virtio_gpu_array_lock_resv(struct virtio_gpu_object_array *objs) in virtio_gpu_array_lock_resv() argument
220 if (objs->nents == 1) { in virtio_gpu_array_lock_resv()
221 ret = dma_resv_lock_interruptible(objs->objs[0]->resv, NULL); in virtio_gpu_array_lock_resv()
223 ret = drm_gem_lock_reservations(objs->objs, objs->nents, in virtio_gpu_array_lock_resv()
224 &objs->ticket); in virtio_gpu_array_lock_resv()
229 for (i = 0; i < objs->nents; ++i) { in virtio_gpu_array_lock_resv()
230 ret = dma_resv_reserve_fences(objs->objs[i]->resv, 1); in virtio_gpu_array_lock_resv()
232 virtio_gpu_array_unlock_resv(objs); in virtio_gpu_array_lock_resv()
239 void virtio_gpu_array_unlock_resv(struct virtio_gpu_object_array *objs) in virtio_gpu_array_unlock_resv() argument
241 if (objs->nents == 1) { in virtio_gpu_array_unlock_resv()
242 dma_resv_unlock(objs->objs[0]->resv); in virtio_gpu_array_unlock_resv()
244 drm_gem_unlock_reservations(objs->objs, objs->nents, in virtio_gpu_array_unlock_resv()
245 &objs->ticket); in virtio_gpu_array_unlock_resv()
249 void virtio_gpu_array_add_fence(struct virtio_gpu_object_array *objs, in virtio_gpu_array_add_fence() argument
254 for (i = 0; i < objs->nents; i++) in virtio_gpu_array_add_fence()
255 dma_resv_add_fence(objs->objs[i]->resv, fence, in virtio_gpu_array_add_fence()
259 void virtio_gpu_array_put_free(struct virtio_gpu_object_array *objs) in virtio_gpu_array_put_free() argument
263 if (!objs) in virtio_gpu_array_put_free()
266 for (i = 0; i < objs->nents; i++) in virtio_gpu_array_put_free()
267 drm_gem_object_put(objs->objs[i]); in virtio_gpu_array_put_free()
268 virtio_gpu_array_free(objs); in virtio_gpu_array_put_free()
272 struct virtio_gpu_object_array *objs) in virtio_gpu_array_put_free_delayed() argument
275 list_add_tail(&objs->next, &vgdev->obj_free_list); in virtio_gpu_array_put_free_delayed()
284 struct virtio_gpu_object_array *objs; in virtio_gpu_array_put_free_work() local
288 objs = list_first_entry(&vgdev->obj_free_list, in virtio_gpu_array_put_free_work()
290 list_del(&objs->next); in virtio_gpu_array_put_free_work()
292 virtio_gpu_array_put_free(objs); in virtio_gpu_array_put_free_work()