Lines Matching refs:objs
119 struct virtio_gpu_object_array *objs;
124 objs = virtio_gpu_array_alloc(1);
125 if (!objs)
127 virtio_gpu_array_add_obj(objs, obj);
130 objs);
139 struct virtio_gpu_object_array *objs;
144 objs = virtio_gpu_array_alloc(1);
145 if (!objs)
147 virtio_gpu_array_add_obj(objs, obj);
150 objs);
155 struct virtio_gpu_object_array *objs;
156 size_t size = sizeof(*objs) + sizeof(objs->objs[0]) * nents;
158 objs = kmalloc(size, GFP_KERNEL);
159 if (!objs)
162 objs->nents = 0;
163 objs->total = nents;
164 return objs;
167 static void virtio_gpu_array_free(struct virtio_gpu_object_array *objs)
169 kfree(objs);
175 struct virtio_gpu_object_array *objs;
178 objs = virtio_gpu_array_alloc(nents);
179 if (!objs)
183 objs->objs[i] = drm_gem_object_lookup(drm_file, handles[i]);
184 if (!objs->objs[i]) {
185 objs->nents = i;
186 virtio_gpu_array_put_free(objs);
190 objs->nents = i;
191 return objs;
194 void virtio_gpu_array_add_obj(struct virtio_gpu_object_array *objs,
197 if (WARN_ON_ONCE(objs->nents == objs->total))
201 objs->objs[objs->nents] = obj;
202 objs->nents++;
205 int virtio_gpu_array_lock_resv(struct virtio_gpu_object_array *objs)
209 if (objs->nents == 1) {
210 ret = dma_resv_lock_interruptible(objs->objs[0]->resv, NULL);
212 ret = drm_gem_lock_reservations(objs->objs, objs->nents,
213 &objs->ticket);
218 void virtio_gpu_array_unlock_resv(struct virtio_gpu_object_array *objs)
220 if (objs->nents == 1) {
221 dma_resv_unlock(objs->objs[0]->resv);
223 drm_gem_unlock_reservations(objs->objs, objs->nents,
224 &objs->ticket);
228 void virtio_gpu_array_add_fence(struct virtio_gpu_object_array *objs,
233 for (i = 0; i < objs->nents; i++)
234 dma_resv_add_excl_fence(objs->objs[i]->resv, fence);
237 void virtio_gpu_array_put_free(struct virtio_gpu_object_array *objs)
241 for (i = 0; i < objs->nents; i++)
242 drm_gem_object_put_unlocked(objs->objs[i]);
243 virtio_gpu_array_free(objs);
247 struct virtio_gpu_object_array *objs)
250 list_add_tail(&objs->next, &vgdev->obj_free_list);
259 struct virtio_gpu_object_array *objs;
263 objs = list_first_entry(&vgdev->obj_free_list,
265 list_del(&objs->next);
267 virtio_gpu_array_put_free(objs);