diff options
Diffstat (limited to 'meta-amdfalconx86/recipes-kernel/linux/linux-yocto/0463-drm-amdgpu-move-prepare-work-out-of-scheduler-to-cs_.patch')
-rw-r--r-- | meta-amdfalconx86/recipes-kernel/linux/linux-yocto/0463-drm-amdgpu-move-prepare-work-out-of-scheduler-to-cs_.patch | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/meta-amdfalconx86/recipes-kernel/linux/linux-yocto/0463-drm-amdgpu-move-prepare-work-out-of-scheduler-to-cs_.patch b/meta-amdfalconx86/recipes-kernel/linux/linux-yocto/0463-drm-amdgpu-move-prepare-work-out-of-scheduler-to-cs_.patch new file mode 100644 index 00000000..3cde731b --- /dev/null +++ b/meta-amdfalconx86/recipes-kernel/linux/linux-yocto/0463-drm-amdgpu-move-prepare-work-out-of-scheduler-to-cs_.patch @@ -0,0 +1,62 @@ +From c3b95d4f9e460704e184ded7af60b9c4898f6181 Mon Sep 17 00:00:00 2001 +From: Chunming Zhou <david1.zhou@amd.com> +Date: Fri, 14 Aug 2015 14:55:27 +0800 +Subject: [PATCH 0463/1050] drm/amdgpu: move prepare work out of scheduler to + cs_ioctl + +Signed-off-by: Chunming Zhou <david1.zhou@amd.com> +Reviewed-by: Christian K?nig <christian.koenig@amd.com> +--- + drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c | 21 ++++++++------------- + 1 file changed, 8 insertions(+), 13 deletions(-) + +diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c +index 07e3380..11edac7 100644 +--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c ++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c +@@ -533,12 +533,6 @@ static void amdgpu_cs_parser_fini(struct amdgpu_cs_parser *parser, int error, bo + amdgpu_cs_parser_fini_late(parser); + } + +-static int amdgpu_cs_parser_run_job(struct amdgpu_cs_parser *sched_job) +-{ +- amdgpu_cs_parser_fini_early(sched_job, 0, true); +- return 0; +-} +- + static int amdgpu_cs_parser_free_job(struct amdgpu_cs_parser *sched_job) + { + amdgpu_cs_parser_fini_late(sched_job); +@@ -904,14 +898,10 @@ int amdgpu_cs_ioctl(struct drm_device *dev, void *data, struct drm_file *filp) + if (amdgpu_enable_scheduler && parser->num_ibs) { + struct amdgpu_ring * ring = + amdgpu_cs_parser_get_ring(adev, parser); +- if (ring->is_pte_ring || (parser->bo_list && parser->bo_list->has_userptr)) { +- r = amdgpu_cs_parser_prepare_job(parser); +- if (r) +- goto out; +- } else +- parser->prepare_job = amdgpu_cs_parser_prepare_job; ++ r = amdgpu_cs_parser_prepare_job(parser); ++ if (r) ++ goto out; + parser->ring = ring; +- parser->run_job = amdgpu_cs_parser_run_job; + parser->free_job = amdgpu_cs_parser_free_job; + mutex_lock(&parser->job_lock); + r = amd_sched_push_job(ring->scheduler, +@@ -927,6 +917,11 @@ int amdgpu_cs_ioctl(struct drm_device *dev, void *data, struct drm_file *filp) + &parser->s_fence->base, + parser->s_fence->v_seq); + cs->out.handle = parser->s_fence->v_seq; ++ list_sort(NULL, &parser->validated, cmp_size_smaller_first); ++ ttm_eu_fence_buffer_objects(&parser->ticket, ++ &parser->validated, ++ &parser->s_fence->base); ++ + mutex_unlock(&parser->job_lock); + up_read(&adev->exclusive_lock); + return 0; +-- +1.9.1 + |