aboutsummaryrefslogtreecommitdiffstats
path: root/common/recipes-kernel/linux/linux-yocto-4.14.71/4970-drm-amdgpu-change-ring-priority-after-pushing-the-jo.patch
diff options
context:
space:
mode:
Diffstat (limited to 'common/recipes-kernel/linux/linux-yocto-4.14.71/4970-drm-amdgpu-change-ring-priority-after-pushing-the-jo.patch')
-rw-r--r--common/recipes-kernel/linux/linux-yocto-4.14.71/4970-drm-amdgpu-change-ring-priority-after-pushing-the-jo.patch81
1 files changed, 81 insertions, 0 deletions
diff --git a/common/recipes-kernel/linux/linux-yocto-4.14.71/4970-drm-amdgpu-change-ring-priority-after-pushing-the-jo.patch b/common/recipes-kernel/linux/linux-yocto-4.14.71/4970-drm-amdgpu-change-ring-priority-after-pushing-the-jo.patch
new file mode 100644
index 00000000..6e5d9eb1
--- /dev/null
+++ b/common/recipes-kernel/linux/linux-yocto-4.14.71/4970-drm-amdgpu-change-ring-priority-after-pushing-the-jo.patch
@@ -0,0 +1,81 @@
+From cb06803a0142639a485a174eb881ab80713e7872 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Christian=20K=C3=B6nig?= <christian.koenig@amd.com>
+Date: Mon, 16 Jul 2018 14:58:48 +0200
+Subject: [PATCH 4970/5725] drm/amdgpu: change ring priority after pushing the
+ job (v2)
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Pushing a job can change the ring assignment of an entity.
+
+v2: squash in:
+"drm/amdgpu: fix job priority handling" (Christian)
+
+Signed-off-by: Christian König <christian.koenig@amd.com>
+Reviewed-by: Chunming Zhou <david1.zhou@amd.com>
+Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
+---
+ drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c | 6 +++++-
+ drivers/gpu/drm/amd/amdgpu/amdgpu_job.c | 8 ++++++--
+ 2 files changed, 11 insertions(+), 3 deletions(-)
+
+diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
+index 0e31215..8f2991b 100644
+--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
+@@ -1211,6 +1211,7 @@ static int amdgpu_cs_submit(struct amdgpu_cs_parser *p,
+ {
+ struct amdgpu_ring *ring = p->ring;
+ struct drm_sched_entity *entity = &p->ctx->rings[ring->idx].entity;
++ enum drm_sched_priority priority;
+ struct amdgpu_job *job;
+ unsigned i;
+ uint64_t seq;
+@@ -1258,11 +1259,14 @@ static int amdgpu_cs_submit(struct amdgpu_cs_parser *p,
+ job->uf_sequence = seq;
+
+ amdgpu_job_free_resources(job);
+- amdgpu_ring_priority_get(p->ring, job->base.s_priority);
+
+ trace_amdgpu_cs_ioctl(job);
++ priority = job->base.s_priority;
+ drm_sched_entity_push_job(&job->base, entity);
+
++ ring = to_amdgpu_ring(entity->sched);
++ amdgpu_ring_priority_get(ring, priority);
++
+ ttm_eu_fence_buffer_objects(&p->ticket, &p->validated, p->fence);
+ amdgpu_mn_unlock(p->mn);
+
+diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_job.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_job.c
+index f92437f..1250aae 100644
+--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_job.c
++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_job.c
+@@ -126,7 +126,8 @@ void amdgpu_job_free(struct amdgpu_job *job)
+ int amdgpu_job_submit(struct amdgpu_job *job, struct drm_sched_entity *entity,
+ void *owner, struct dma_fence **f)
+ {
+- struct amdgpu_ring *ring = to_amdgpu_ring(entity->sched);
++ enum drm_sched_priority priority;
++ struct amdgpu_ring *ring;
+ int r;
+
+ if (!f)
+@@ -139,9 +140,12 @@ int amdgpu_job_submit(struct amdgpu_job *job, struct drm_sched_entity *entity,
+ job->owner = owner;
+ *f = dma_fence_get(&job->base.s_fence->finished);
+ amdgpu_job_free_resources(job);
+- amdgpu_ring_priority_get(ring, job->base.s_priority);
++ priority = job->base.s_priority;
+ drm_sched_entity_push_job(&job->base, entity);
+
++ ring = to_amdgpu_ring(entity->sched);
++ amdgpu_ring_priority_get(ring, priority);
++
+ return 0;
+ }
+
+--
+2.7.4
+