[CI 11/11] debug
Tvrtko Ursulin
tvrtko.ursulin at linux.intel.com
Wed Feb 15 10:52:52 UTC 2023
From: Tvrtko Ursulin <tvrtko.ursulin at intel.com>
Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin at intel.com>
---
drivers/dma-buf/dma-fence-chain.c | 13 ++++++++++++-
drivers/dma-buf/st-dma-fence-chain.c | 12 ++++++++++--
2 files changed, 22 insertions(+), 3 deletions(-)
diff --git a/drivers/dma-buf/dma-fence-chain.c b/drivers/dma-buf/dma-fence-chain.c
index a0d920576ba6..25e12785ac82 100644
--- a/drivers/dma-buf/dma-fence-chain.c
+++ b/drivers/dma-buf/dma-fence-chain.c
@@ -125,10 +125,15 @@ static void dma_fence_chain_irq_work(struct irq_work *work)
chain = container_of(work, typeof(*chain), work);
+ trace_printk("chain %llx:%llu\n",
+ chain->base.context, chain->base.seqno);
/* Try to rearm the callback */
- if (!dma_fence_chain_enable_signaling(&chain->base))
+ if (!dma_fence_chain_enable_signaling(&chain->base)) {
/* Ok, we are done. No more unsignaled fences left */
+ trace_printk("chain %llx:%llu DONE\n",
+ chain->base.context, chain->base.seqno);
dma_fence_signal(&chain->base);
+ }
dma_fence_put(&chain->base);
}
@@ -137,6 +142,9 @@ static void dma_fence_chain_cb(struct dma_fence *f, struct dma_fence_cb *cb)
struct dma_fence_chain *chain;
chain = container_of(cb, typeof(*chain), cb);
+ trace_printk("chain %llx:%llu f %llx:%llu\n",
+ chain->base.context, chain->base.seqno,
+ f->context, f->seqno);
init_irq_work(&chain->work, dma_fence_chain_irq_work);
irq_work_queue(&chain->work);
dma_fence_put(f);
@@ -152,6 +160,9 @@ static bool dma_fence_chain_enable_signaling(struct dma_fence *fence)
dma_fence_get(f);
if (!dma_fence_add_callback(f, &head->cb, dma_fence_chain_cb)) {
+ trace_printk("chain %llx:%llu f %llx:%llu\n",
+ head->base.context, head->base.seqno,
+ f->context, f->seqno);
dma_fence_put(fence);
return true;
}
diff --git a/drivers/dma-buf/st-dma-fence-chain.c b/drivers/dma-buf/st-dma-fence-chain.c
index c0979c8049b5..3bce877ddf0b 100644
--- a/drivers/dma-buf/st-dma-fence-chain.c
+++ b/drivers/dma-buf/st-dma-fence-chain.c
@@ -562,9 +562,14 @@ static int signal_backward(void *arg)
static int __wait_fence_chains(void *arg)
{
struct fence_chains *fc = arg;
+ long ret;
- if (dma_fence_wait(fc->tail, false))
+ ret = dma_fence_wait_timeout(fc->tail, false, HZ * 5);
+ if (ret <= 0) {
+ trace_printk("**** ret=%ld ****\n", ret);
+ ftrace_dump(DUMP_ALL);
return -EIO;
+ }
return 0;
}
@@ -618,8 +623,11 @@ static int wait_backward(void *arg)
get_task_struct(tsk);
yield_to(tsk, true);
- for (i = fc.chain_length; i--; )
+ for (i = fc.chain_length; i--; ) {
+ trace_printk("signal %llx:%llu (%u)\n",
+ fc.fences[i]->context, fc.fences[i]->seqno, fc.fences[i]->waitcount);
dma_fence_signal(fc.fences[i]);
+ }
err = kthread_stop(tsk);
put_task_struct(tsk);
--
2.34.1
More information about the Intel-gfx-trybot
mailing list