Lines Matching refs:shared
44 * The reservation object provides a mechanism to manage shared and
47 * write operations) or N shared fences (read operations). The RCU
66 list = kmalloc(offsetof(typeof(*list), shared[shared_max]), GFP_KERNEL);
70 list->shared_max = (ksize(list) - offsetof(typeof(*list), shared)) /
71 sizeof(*list->shared);
90 dma_fence_put(rcu_dereference_protected(list->shared[i], true));
176 * dma_resv_reserve_shared - Reserve space to add shared fences to
219 fence = rcu_dereference_protected(old->shared[i],
222 RCU_INIT_POINTER(new->shared[--k], fence);
224 RCU_INIT_POINTER(new->shared[j++], fence);
232 * active (unsignaled) shared fences. Individual fences and the
245 fence = rcu_dereference_protected(new->shared[i],
256 * dma_resv_add_shared_fence - Add a fence to a shared slot
258 * @fence: the shared fence to add
260 * Add a fence to a shared slot, obj->lock must be held, and
280 old = rcu_dereference_protected(fobj->shared[i],
292 RCU_INIT_POINTER(fobj->shared[i], fence);
304 * @fence: the shared fence to add
330 /* inplace update, no shared fences */
332 dma_fence_put(rcu_dereference_protected(old->shared[i],
378 fence = rcu_dereference(src_list->shared[i]);
394 rcu_assign_pointer(dst_list->shared[dst_list->shared_count++], fence);
420 * dma_resv_get_fences_rcu - Get an object's shared and exclusive
424 * @pshared_count: the number of shared fences returned
425 * @pshared: the array of shared fence ptrs returned (array is krealloc'd to
430 * shared fences as well. Returns either zero or -ENOMEM.
437 struct dma_fence **shared = NULL;
458 sz += sizeof(*shared) * fobj->shared_max;
461 sz += sizeof(*shared);
466 nshared = krealloc(shared, sz,
474 nshared = krealloc(shared, sz, GFP_KERNEL);
476 shared = nshared;
483 shared = nshared;
486 shared[i] = rcu_dereference(fobj->shared[i]);
487 if (!dma_fence_get_rcu(shared[i]))
494 dma_fence_put(shared[i]);
507 shared[shared_count++] = fence_excl;
510 kfree(shared);
511 shared = NULL;
515 *pshared = shared;
522 * shared and/or exclusive fences.
568 struct dma_fence *lfence = rcu_dereference(fobj->shared[i]);
654 struct dma_fence *fence = rcu_dereference(fobj->shared[i]);