Lines Matching full:shared
41 * The reservation object provides a mechanism to manage shared and
44 * write operations) or N shared fences (read operations). The RCU
59 * reservation_object_reserve_shared - Reserve space to add a shared
91 fobj = krealloc(obj->staged, offsetof(typeof(*fobj), shared[max]), in reservation_object_reserve_shared()
118 old_fence = rcu_dereference_protected(fobj->shared[i], in reservation_object_add_shared_inplace()
123 RCU_INIT_POINTER(fobj->shared[i], fence); in reservation_object_add_shared_inplace()
142 RCU_INIT_POINTER(fobj->shared[signaled_idx], fence); in reservation_object_add_shared_inplace()
145 RCU_INIT_POINTER(fobj->shared[fobj->shared_count], fence); in reservation_object_add_shared_inplace()
166 RCU_INIT_POINTER(fobj->shared[0], fence); in reservation_object_add_shared_replace()
180 check = rcu_dereference_protected(old->shared[i], in reservation_object_add_shared_replace()
185 RCU_INIT_POINTER(fobj->shared[--k], check); in reservation_object_add_shared_replace()
187 RCU_INIT_POINTER(fobj->shared[j++], check); in reservation_object_add_shared_replace()
190 RCU_INIT_POINTER(fobj->shared[fobj->shared_count], fence); in reservation_object_add_shared_replace()
211 f = rcu_dereference_protected(fobj->shared[i], in reservation_object_add_shared_replace()
219 * reservation_object_add_shared_fence - Add a fence to a shared slot
221 * @fence: the shared fence to add
223 * Add a fence to a shared slot, obj->lock must be held, and
244 * @fence: the shared fence to add
271 /* inplace update, no shared fences */ in reservation_object_add_excl_fence()
273 dma_fence_put(rcu_dereference_protected(old->shared[i], in reservation_object_add_excl_fence()
302 size = offsetof(typeof(*src_list), shared[shared_count]); in reservation_object_copy_fences()
321 fence = rcu_dereference(src_list->shared[i]); in reservation_object_copy_fences()
337 rcu_assign_pointer(dst_list->shared[dst_list->shared_count++], fence); in reservation_object_copy_fences()
369 * reservation_object_get_fences_rcu - Get an object's shared and exclusive
373 * @pshared_count: the number of shared fences returned
374 * @pshared: the array of shared fence ptrs returned (array is krealloc'd to
379 * shared fences as well. Returns either zero or -ENOMEM.
386 struct dma_fence **shared = NULL; in reservation_object_get_fences_rcu() local
407 sz += sizeof(*shared) * fobj->shared_max; in reservation_object_get_fences_rcu()
410 sz += sizeof(*shared); in reservation_object_get_fences_rcu()
415 nshared = krealloc(shared, sz, in reservation_object_get_fences_rcu()
423 nshared = krealloc(shared, sz, GFP_KERNEL); in reservation_object_get_fences_rcu()
425 shared = nshared; in reservation_object_get_fences_rcu()
432 shared = nshared; in reservation_object_get_fences_rcu()
435 shared[i] = rcu_dereference(fobj->shared[i]); in reservation_object_get_fences_rcu()
436 if (!dma_fence_get_rcu(shared[i])) in reservation_object_get_fences_rcu()
441 shared[i] = fence_excl; in reservation_object_get_fences_rcu()
450 dma_fence_put(shared[i]); in reservation_object_get_fences_rcu()
461 kfree(shared); in reservation_object_get_fences_rcu()
462 shared = NULL; in reservation_object_get_fences_rcu()
466 *pshared = shared; in reservation_object_get_fences_rcu()
476 * shared and/or exclusive fences.
523 struct dma_fence *lfence = rcu_dereference(fobj->shared[i]); in reservation_object_wait_timeout_rcu()
612 struct dma_fence *fence = rcu_dereference(fobj->shared[i]); in reservation_object_test_signaled_rcu()