aboutsummaryrefslogtreecommitdiffstats
path: root/common/recipes-kernel/linux/linux-yocto-4.14.71/5063-drm-amdgpu-Add-job-pipe-sync-dependecy-trace.patch
diff options
context:
space:
mode:
Diffstat (limited to 'common/recipes-kernel/linux/linux-yocto-4.14.71/5063-drm-amdgpu-Add-job-pipe-sync-dependecy-trace.patch')
-rw-r--r--common/recipes-kernel/linux/linux-yocto-4.14.71/5063-drm-amdgpu-Add-job-pipe-sync-dependecy-trace.patch80
1 files changed, 80 insertions, 0 deletions
diff --git a/common/recipes-kernel/linux/linux-yocto-4.14.71/5063-drm-amdgpu-Add-job-pipe-sync-dependecy-trace.patch b/common/recipes-kernel/linux/linux-yocto-4.14.71/5063-drm-amdgpu-Add-job-pipe-sync-dependecy-trace.patch
new file mode 100644
index 00000000..88684898
--- /dev/null
+++ b/common/recipes-kernel/linux/linux-yocto-4.14.71/5063-drm-amdgpu-Add-job-pipe-sync-dependecy-trace.patch
@@ -0,0 +1,80 @@
+From 88e0afe158ccce5ee07721f00eb5cff2105b2715 Mon Sep 17 00:00:00 2001
+From: Andrey Grodzovsky <andrey.grodzovsky@amd.com>
+Date: Tue, 31 Jul 2018 10:52:25 -0400
+Subject: [PATCH 5063/5725] drm/amdgpu: Add job pipe sync dependecy trace
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+It's useful to trace any dependency a job has on prevoius
+jobs.
+
+Signed-off-by: Andrey Grodzovsky <andrey.grodzovsky@amd.com>
+Reviewed-by: Christian König <christian.koenig@amd.com>
+Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
+---
+ drivers/gpu/drm/amd/amdgpu/amdgpu_ib.c | 5 +++++
+ drivers/gpu/drm/amd/amdgpu/amdgpu_trace.h | 24 ++++++++++++++++++++++++
+ 2 files changed, 29 insertions(+)
+
+diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ib.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ib.c
+index 360ec43..96f69eb 100644
+--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ib.c
++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ib.c
+@@ -32,6 +32,7 @@
+ #include <drm/amdgpu_drm.h>
+ #include "amdgpu.h"
+ #include "atom.h"
++#include "amdgpu_trace.h"
+
+ #define AMDGPU_IB_TEST_TIMEOUT msecs_to_jiffies(1000)
+
+@@ -174,6 +175,10 @@ int amdgpu_ib_schedule(struct amdgpu_ring *ring, unsigned num_ibs,
+ ((tmp = amdgpu_sync_get_fence(&job->sched_sync, NULL)) ||
+ amdgpu_vm_need_pipeline_sync(ring, job))) {
+ need_pipe_sync = true;
++
++ if (tmp)
++ trace_amdgpu_ib_pipe_sync(job, tmp);
++
+ dma_fence_put(tmp);
+ }
+
+diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_trace.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_trace.h
+index 7206a00..8c2dab2 100644
+--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_trace.h
++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_trace.h
+@@ -462,6 +462,30 @@ TRACE_EVENT(amdgpu_bo_move,
+ __entry->new_placement, __entry->bo_size)
+ );
+
++TRACE_EVENT(amdgpu_ib_pipe_sync,
++ TP_PROTO(struct amdgpu_job *sched_job, struct dma_fence *fence),
++ TP_ARGS(sched_job, fence),
++ TP_STRUCT__entry(
++ __field(const char *,name)
++ __field(uint64_t, id)
++ __field(struct dma_fence *, fence)
++ __field(uint64_t, ctx)
++ __field(unsigned, seqno)
++ ),
++
++ TP_fast_assign(
++ __entry->name = sched_job->base.sched->name;
++ __entry->id = sched_job->base.id;
++ __entry->fence = fence;
++ __entry->ctx = fence->context;
++ __entry->seqno = fence->seqno;
++ ),
++ TP_printk("job ring=%s, id=%llu, need pipe sync to fence=%p, context=%llu, seq=%u",
++ __entry->name, __entry->id,
++ __entry->fence, __entry->ctx,
++ __entry->seqno)
++);
++
+ #undef AMDGPU_JOB_GET_TIMELINE_NAME
+ #endif
+
+--
+2.7.4
+