Lines Matching refs:deps

36 static void i915_deps_reset_fences(struct i915_deps *deps)  in i915_deps_reset_fences()  argument
38 if (deps->fences != &deps->single) in i915_deps_reset_fences()
39 kfree(deps->fences); in i915_deps_reset_fences()
40 deps->num_deps = 0; in i915_deps_reset_fences()
41 deps->fences_size = 1; in i915_deps_reset_fences()
42 deps->fences = &deps->single; in i915_deps_reset_fences()
50 void i915_deps_init(struct i915_deps *deps, gfp_t gfp) in i915_deps_init() argument
52 deps->fences = NULL; in i915_deps_init()
53 deps->gfp = gfp; in i915_deps_init()
54 i915_deps_reset_fences(deps); in i915_deps_init()
64 void i915_deps_fini(struct i915_deps *deps) in i915_deps_fini() argument
68 for (i = 0; i < deps->num_deps; ++i) in i915_deps_fini()
69 dma_fence_put(deps->fences[i]); in i915_deps_fini()
71 if (deps->fences != &deps->single) in i915_deps_fini()
72 kfree(deps->fences); in i915_deps_fini()
75 static int i915_deps_grow(struct i915_deps *deps, struct dma_fence *fence, in i915_deps_grow() argument
80 if (deps->num_deps >= deps->fences_size) { in i915_deps_grow()
81 unsigned int new_size = 2 * deps->fences_size; in i915_deps_grow()
85 new_fences = kmalloc_array(new_size, sizeof(*new_fences), deps->gfp); in i915_deps_grow()
89 memcpy(new_fences, deps->fences, in i915_deps_grow()
90 deps->fences_size * sizeof(*new_fences)); in i915_deps_grow()
91 swap(new_fences, deps->fences); in i915_deps_grow()
92 if (new_fences != &deps->single) in i915_deps_grow()
94 deps->fences_size = new_size; in i915_deps_grow()
96 deps->fences[deps->num_deps++] = dma_fence_get(fence); in i915_deps_grow()
116 i915_deps_fini(deps); in i915_deps_grow()
132 int i915_deps_sync(const struct i915_deps *deps, const struct ttm_operation_ctx *ctx) in i915_deps_sync() argument
134 struct dma_fence **fences = deps->fences; in i915_deps_sync()
138 for (i = 0; i < deps->num_deps; ++i, ++fences) { in i915_deps_sync()
176 int i915_deps_add_dependency(struct i915_deps *deps, in i915_deps_add_dependency() argument
189 i915_deps_fini(deps); in i915_deps_add_dependency()
193 for (i = 0; i < deps->num_deps; ++i) { in i915_deps_add_dependency()
194 struct dma_fence *entry = deps->fences[i]; in i915_deps_add_dependency()
201 deps->fences[i] = dma_fence_get(fence); in i915_deps_add_dependency()
207 return i915_deps_grow(deps, fence, ctx); in i915_deps_add_dependency()
222 int i915_deps_add_resv(struct i915_deps *deps, struct dma_resv *resv, in i915_deps_add_resv() argument
230 int ret = i915_deps_add_dependency(deps, fence, ctx); in i915_deps_add_resv()