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