Lines Matching refs:objs
114 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);
141 struct virtio_gpu_object_array *objs;
146 objs = virtio_gpu_array_alloc(1);
147 if (!objs)
149 virtio_gpu_array_add_obj(objs, obj);
152 objs);
158 struct virtio_gpu_object_array *objs;
160 objs = kmalloc(struct_size(objs, objs, nents), GFP_KERNEL);
161 if (!objs)
164 objs->nents = 0;
165 objs->total = nents;
166 return objs;
169 static void virtio_gpu_array_free(struct virtio_gpu_object_array *objs)
171 kfree(objs);
177 struct virtio_gpu_object_array *objs;
180 objs = virtio_gpu_array_alloc(nents);
181 if (!objs)
185 objs->objs[i] = drm_gem_object_lookup(drm_file, handles[i]);
186 if (!objs->objs[i]) {
187 objs->nents = i;
188 virtio_gpu_array_put_free(objs);
192 objs->nents = i;
193 return objs;
196 void virtio_gpu_array_add_obj(struct virtio_gpu_object_array *objs,
199 if (WARN_ON_ONCE(objs->nents == objs->total))
203 objs->objs[objs->nents] = obj;
204 objs->nents++;
207 int virtio_gpu_array_lock_resv(struct virtio_gpu_object_array *objs)
211 if (objs->nents == 1) {
212 ret = dma_resv_lock_interruptible(objs->objs[0]->resv, NULL);
214 ret = drm_gem_lock_reservations(objs->objs, objs->nents,
215 &objs->ticket);
220 void virtio_gpu_array_unlock_resv(struct virtio_gpu_object_array *objs)
222 if (objs->nents == 1) {
223 dma_resv_unlock(objs->objs[0]->resv);
225 drm_gem_unlock_reservations(objs->objs, objs->nents,
226 &objs->ticket);
230 void virtio_gpu_array_add_fence(struct virtio_gpu_object_array *objs,
235 for (i = 0; i < objs->nents; i++)
236 dma_resv_add_excl_fence(objs->objs[i]->resv, fence);
239 void virtio_gpu_array_put_free(struct virtio_gpu_object_array *objs)
243 for (i = 0; i < objs->nents; i++)
244 drm_gem_object_put(objs->objs[i]);
245 virtio_gpu_array_free(objs);
249 struct virtio_gpu_object_array *objs)
252 list_add_tail(&objs->next, &vgdev->obj_free_list);
261 struct virtio_gpu_object_array *objs;
265 objs = list_first_entry(&vgdev->obj_free_list,
267 list_del(&objs->next);
269 virtio_gpu_array_put_free(objs);