drm/i915/request: Remove the hook from await_execution
This was only ever used for FENCE_SUBMIT automatic engine selection which was removed in the previous commit. Signed-off-by: Jason Ekstrand <jason@jlekstrand.net> Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch> Link: https://patchwork.freedesktop.org/patch/msgid/20210708154835.528166-12-jason@jlekstrand.net
This commit is contained in:
parent
dd4f1bbae8
commit
5ac545b8b0
3 changed files with 9 additions and 40 deletions
|
@ -3483,8 +3483,7 @@ i915_gem_do_execbuffer(struct drm_device *dev,
|
||||||
if (in_fence) {
|
if (in_fence) {
|
||||||
if (args->flags & I915_EXEC_FENCE_SUBMIT)
|
if (args->flags & I915_EXEC_FENCE_SUBMIT)
|
||||||
err = i915_request_await_execution(eb.request,
|
err = i915_request_await_execution(eb.request,
|
||||||
in_fence,
|
in_fence);
|
||||||
NULL);
|
|
||||||
else
|
else
|
||||||
err = i915_request_await_dma_fence(eb.request,
|
err = i915_request_await_dma_fence(eb.request,
|
||||||
in_fence);
|
in_fence);
|
||||||
|
|
|
@ -49,7 +49,6 @@
|
||||||
struct execute_cb {
|
struct execute_cb {
|
||||||
struct irq_work work;
|
struct irq_work work;
|
||||||
struct i915_sw_fence *fence;
|
struct i915_sw_fence *fence;
|
||||||
void (*hook)(struct i915_request *rq, struct dma_fence *signal);
|
|
||||||
struct i915_request *signal;
|
struct i915_request *signal;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -180,17 +179,6 @@ static void irq_execute_cb(struct irq_work *wrk)
|
||||||
kmem_cache_free(global.slab_execute_cbs, cb);
|
kmem_cache_free(global.slab_execute_cbs, cb);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void irq_execute_cb_hook(struct irq_work *wrk)
|
|
||||||
{
|
|
||||||
struct execute_cb *cb = container_of(wrk, typeof(*cb), work);
|
|
||||||
|
|
||||||
cb->hook(container_of(cb->fence, struct i915_request, submit),
|
|
||||||
&cb->signal->fence);
|
|
||||||
i915_request_put(cb->signal);
|
|
||||||
|
|
||||||
irq_execute_cb(wrk);
|
|
||||||
}
|
|
||||||
|
|
||||||
static __always_inline void
|
static __always_inline void
|
||||||
__notify_execute_cb(struct i915_request *rq, bool (*fn)(struct irq_work *wrk))
|
__notify_execute_cb(struct i915_request *rq, bool (*fn)(struct irq_work *wrk))
|
||||||
{
|
{
|
||||||
|
@ -517,17 +505,12 @@ static bool __request_in_flight(const struct i915_request *signal)
|
||||||
static int
|
static int
|
||||||
__await_execution(struct i915_request *rq,
|
__await_execution(struct i915_request *rq,
|
||||||
struct i915_request *signal,
|
struct i915_request *signal,
|
||||||
void (*hook)(struct i915_request *rq,
|
|
||||||
struct dma_fence *signal),
|
|
||||||
gfp_t gfp)
|
gfp_t gfp)
|
||||||
{
|
{
|
||||||
struct execute_cb *cb;
|
struct execute_cb *cb;
|
||||||
|
|
||||||
if (i915_request_is_active(signal)) {
|
if (i915_request_is_active(signal))
|
||||||
if (hook)
|
|
||||||
hook(rq, &signal->fence);
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
|
||||||
|
|
||||||
cb = kmem_cache_alloc(global.slab_execute_cbs, gfp);
|
cb = kmem_cache_alloc(global.slab_execute_cbs, gfp);
|
||||||
if (!cb)
|
if (!cb)
|
||||||
|
@ -537,12 +520,6 @@ __await_execution(struct i915_request *rq,
|
||||||
i915_sw_fence_await(cb->fence);
|
i915_sw_fence_await(cb->fence);
|
||||||
init_irq_work(&cb->work, irq_execute_cb);
|
init_irq_work(&cb->work, irq_execute_cb);
|
||||||
|
|
||||||
if (hook) {
|
|
||||||
cb->hook = hook;
|
|
||||||
cb->signal = i915_request_get(signal);
|
|
||||||
cb->work.func = irq_execute_cb_hook;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Register the callback first, then see if the signaler is already
|
* Register the callback first, then see if the signaler is already
|
||||||
* active. This ensures that if we race with the
|
* active. This ensures that if we race with the
|
||||||
|
@ -1253,7 +1230,7 @@ emit_semaphore_wait(struct i915_request *to,
|
||||||
goto await_fence;
|
goto await_fence;
|
||||||
|
|
||||||
/* Only submit our spinner after the signaler is running! */
|
/* Only submit our spinner after the signaler is running! */
|
||||||
if (__await_execution(to, from, NULL, gfp))
|
if (__await_execution(to, from, gfp))
|
||||||
goto await_fence;
|
goto await_fence;
|
||||||
|
|
||||||
if (__emit_semaphore_wait(to, from, from->fence.seqno))
|
if (__emit_semaphore_wait(to, from, from->fence.seqno))
|
||||||
|
@ -1284,16 +1261,14 @@ static int intel_timeline_sync_set_start(struct intel_timeline *tl,
|
||||||
|
|
||||||
static int
|
static int
|
||||||
__i915_request_await_execution(struct i915_request *to,
|
__i915_request_await_execution(struct i915_request *to,
|
||||||
struct i915_request *from,
|
struct i915_request *from)
|
||||||
void (*hook)(struct i915_request *rq,
|
|
||||||
struct dma_fence *signal))
|
|
||||||
{
|
{
|
||||||
int err;
|
int err;
|
||||||
|
|
||||||
GEM_BUG_ON(intel_context_is_barrier(from->context));
|
GEM_BUG_ON(intel_context_is_barrier(from->context));
|
||||||
|
|
||||||
/* Submit both requests at the same time */
|
/* Submit both requests at the same time */
|
||||||
err = __await_execution(to, from, hook, I915_FENCE_GFP);
|
err = __await_execution(to, from, I915_FENCE_GFP);
|
||||||
if (err)
|
if (err)
|
||||||
return err;
|
return err;
|
||||||
|
|
||||||
|
@ -1406,9 +1381,7 @@ i915_request_await_external(struct i915_request *rq, struct dma_fence *fence)
|
||||||
|
|
||||||
int
|
int
|
||||||
i915_request_await_execution(struct i915_request *rq,
|
i915_request_await_execution(struct i915_request *rq,
|
||||||
struct dma_fence *fence,
|
struct dma_fence *fence)
|
||||||
void (*hook)(struct i915_request *rq,
|
|
||||||
struct dma_fence *signal))
|
|
||||||
{
|
{
|
||||||
struct dma_fence **child = &fence;
|
struct dma_fence **child = &fence;
|
||||||
unsigned int nchild = 1;
|
unsigned int nchild = 1;
|
||||||
|
@ -1441,8 +1414,7 @@ i915_request_await_execution(struct i915_request *rq,
|
||||||
|
|
||||||
if (dma_fence_is_i915(fence))
|
if (dma_fence_is_i915(fence))
|
||||||
ret = __i915_request_await_execution(rq,
|
ret = __i915_request_await_execution(rq,
|
||||||
to_request(fence),
|
to_request(fence));
|
||||||
hook);
|
|
||||||
else
|
else
|
||||||
ret = i915_request_await_external(rq, fence);
|
ret = i915_request_await_external(rq, fence);
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
|
@ -1468,7 +1440,7 @@ await_request_submit(struct i915_request *to, struct i915_request *from)
|
||||||
&from->submit,
|
&from->submit,
|
||||||
I915_FENCE_GFP);
|
I915_FENCE_GFP);
|
||||||
else
|
else
|
||||||
return __i915_request_await_execution(to, from, NULL);
|
return __i915_request_await_execution(to, from);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
|
|
|
@ -352,9 +352,7 @@ int i915_request_await_object(struct i915_request *to,
|
||||||
int i915_request_await_dma_fence(struct i915_request *rq,
|
int i915_request_await_dma_fence(struct i915_request *rq,
|
||||||
struct dma_fence *fence);
|
struct dma_fence *fence);
|
||||||
int i915_request_await_execution(struct i915_request *rq,
|
int i915_request_await_execution(struct i915_request *rq,
|
||||||
struct dma_fence *fence,
|
struct dma_fence *fence);
|
||||||
void (*hook)(struct i915_request *rq,
|
|
||||||
struct dma_fence *signal));
|
|
||||||
|
|
||||||
void i915_request_add(struct i915_request *rq);
|
void i915_request_add(struct i915_request *rq);
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue