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
219 if (objs->nents == 1) { in virtio_gpu_array_lock_resv()
220 ret = dma_resv_lock_interruptible(objs->objs[0]->resv, NULL); in virtio_gpu_array_lock_resv()
222 ret = drm_gem_lock_reservations(objs->objs, objs->nents, in virtio_gpu_array_lock_resv()
223 &objs->ticket); in virtio_gpu_array_lock_resv()
228 void virtio_gpu_array_unlock_resv(struct virtio_gpu_object_array *objs) in virtio_gpu_array_unlock_resv() argument
230 if (objs->nents == 1) { in virtio_gpu_array_unlock_resv()
231 dma_resv_unlock(objs->objs[0]->resv); in virtio_gpu_array_unlock_resv()
233 drm_gem_unlock_reservations(objs->objs, objs->nents, in virtio_gpu_array_unlock_resv()
234 &objs->ticket); in virtio_gpu_array_unlock_resv()
238 void virtio_gpu_array_add_fence(struct virtio_gpu_object_array *objs, in virtio_gpu_array_add_fence() argument
243 for (i = 0; i < objs->nents; i++) in virtio_gpu_array_add_fence()
244 dma_resv_add_excl_fence(objs->objs[i]->resv, fence); in virtio_gpu_array_add_fence()
247 void virtio_gpu_array_put_free(struct virtio_gpu_object_array *objs) in virtio_gpu_array_put_free() argument
251 for (i = 0; i < objs->nents; i++) in virtio_gpu_array_put_free()
252 drm_gem_object_put(objs->objs[i]); in virtio_gpu_array_put_free()
253 virtio_gpu_array_free(objs); in virtio_gpu_array_put_free()
257 struct virtio_gpu_object_array *objs) in virtio_gpu_array_put_free_delayed() argument
260 list_add_tail(&objs->next, &vgdev->obj_free_list); in virtio_gpu_array_put_free_delayed()
269 struct virtio_gpu_object_array *objs; in virtio_gpu_array_put_free_work() local
273 objs = list_first_entry(&vgdev->obj_free_list, in virtio_gpu_array_put_free_work()
275 list_del(&objs->next); in virtio_gpu_array_put_free_work()
277 virtio_gpu_array_put_free(objs); in virtio_gpu_array_put_free_work()