diff options
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.patch | 81 |
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 + |