diff options
Diffstat (limited to 'meta-amdfalconx86/recipes-kernel/linux/linux-yocto/0399-drm-amdgpu-add-amdgpu.sched_jobs-option.patch')
-rw-r--r-- | meta-amdfalconx86/recipes-kernel/linux/linux-yocto/0399-drm-amdgpu-add-amdgpu.sched_jobs-option.patch | 121 |
1 files changed, 121 insertions, 0 deletions
diff --git a/meta-amdfalconx86/recipes-kernel/linux/linux-yocto/0399-drm-amdgpu-add-amdgpu.sched_jobs-option.patch b/meta-amdfalconx86/recipes-kernel/linux/linux-yocto/0399-drm-amdgpu-add-amdgpu.sched_jobs-option.patch new file mode 100644 index 00000000..c57bf297 --- /dev/null +++ b/meta-amdfalconx86/recipes-kernel/linux/linux-yocto/0399-drm-amdgpu-add-amdgpu.sched_jobs-option.patch @@ -0,0 +1,121 @@ +From 1333f723fb6f1356a54135586f1ede44dcaa9652 Mon Sep 17 00:00:00 2001 +From: Jammy Zhou <Jammy.Zhou@amd.com> +Date: Thu, 30 Jul 2015 16:36:58 +0800 +Subject: [PATCH 0399/1050] drm/amdgpu: add amdgpu.sched_jobs option + +This option can be used to specify the max job number in the job queue, +and it is 16 by default. + +Signed-off-by: Jammy Zhou <Jammy.Zhou@amd.com> +Reviewed-by: Chunming Zhou <david1.zhou@amd.com> +--- + drivers/gpu/drm/amd/amdgpu/amdgpu.h | 1 + + drivers/gpu/drm/amd/amdgpu/amdgpu_ctx.c | 3 ++- + drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c | 4 ++++ + drivers/gpu/drm/amd/scheduler/gpu_scheduler.c | 6 ++++-- + drivers/gpu/drm/amd/scheduler/gpu_scheduler.h | 4 ++-- + 5 files changed, 13 insertions(+), 5 deletions(-) + +diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu.h b/drivers/gpu/drm/amd/amdgpu/amdgpu.h +index 0703fbf..4de1147 100644 +--- a/drivers/gpu/drm/amd/amdgpu/amdgpu.h ++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu.h +@@ -80,6 +80,7 @@ extern int amdgpu_deep_color; + extern int amdgpu_vm_size; + extern int amdgpu_vm_block_size; + extern int amdgpu_enable_scheduler; ++extern int amdgpu_sched_jobs; + + #define AMDGPU_WAIT_IDLE_TIMEOUT_IN_MS 3000 + #define AMDGPU_MAX_USEC_TIMEOUT 100000 /* 100 ms */ +diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ctx.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ctx.c +index a5d8242..58ce265 100644 +--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ctx.c ++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ctx.c +@@ -105,7 +105,8 @@ int amdgpu_ctx_alloc(struct amdgpu_device *adev, struct amdgpu_fpriv *fpriv, + rq = &adev->rings[i]->scheduler->kernel_rq; + r = amd_context_entity_init(adev->rings[i]->scheduler, + &ctx->rings[i].c_entity, +- NULL, rq, *id); ++ NULL, rq, *id, ++ amdgpu_sched_jobs); + if (r) + break; + } +diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c +index 8f33cef..319de44 100644 +--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c ++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c +@@ -76,6 +76,7 @@ int amdgpu_vm_size = 8; + int amdgpu_vm_block_size = -1; + int amdgpu_exp_hw_support = 0; + int amdgpu_enable_scheduler = 0; ++int amdgpu_sched_jobs = 16; + + MODULE_PARM_DESC(vramlimit, "Restrict VRAM for testing, in megabytes"); + module_param_named(vramlimit, amdgpu_vram_limit, int, 0600); +@@ -143,6 +144,9 @@ module_param_named(exp_hw_support, amdgpu_exp_hw_support, int, 0444); + MODULE_PARM_DESC(enable_scheduler, "enable SW GPU scheduler (1 = enable, 0 = disable ((default))"); + module_param_named(enable_scheduler, amdgpu_enable_scheduler, int, 0444); + ++MODULE_PARM_DESC(sched_jobs, "the max number of jobs supported in the sw queue (default 16)"); ++module_param_named(sched_jobs, amdgpu_sched_jobs, int, 0444); ++ + static struct pci_device_id pciidlist[] = { + #ifdef CONFIG_DRM_AMDGPU_CIK + /* Kaveri */ +diff --git a/drivers/gpu/drm/amd/scheduler/gpu_scheduler.c b/drivers/gpu/drm/amd/scheduler/gpu_scheduler.c +index 5799474..87993e0 100644 +--- a/drivers/gpu/drm/amd/scheduler/gpu_scheduler.c ++++ b/drivers/gpu/drm/amd/scheduler/gpu_scheduler.c +@@ -173,6 +173,7 @@ exit: + * @parent The parent entity of this amd_context_entity + * @rq The run queue this entity belongs + * @context_id The context id for this entity ++ * @jobs The max number of jobs in the job queue + * + * return 0 if succeed. negative error code on failure + */ +@@ -180,7 +181,8 @@ int amd_context_entity_init(struct amd_gpu_scheduler *sched, + struct amd_context_entity *entity, + struct amd_sched_entity *parent, + struct amd_run_queue *rq, +- uint32_t context_id) ++ uint32_t context_id, ++ uint32_t jobs) + { + uint64_t seq_ring = 0; + +@@ -196,7 +198,7 @@ int amd_context_entity_init(struct amd_gpu_scheduler *sched, + init_waitqueue_head(&entity->wait_queue); + init_waitqueue_head(&entity->wait_emit); + if(kfifo_alloc(&entity->job_queue, +- AMD_MAX_JOB_ENTRY_PER_CONTEXT * sizeof(void *), ++ jobs * sizeof(void *), + GFP_KERNEL)) + return -EINVAL; + +diff --git a/drivers/gpu/drm/amd/scheduler/gpu_scheduler.h b/drivers/gpu/drm/amd/scheduler/gpu_scheduler.h +index a6226e1..52577a88 100644 +--- a/drivers/gpu/drm/amd/scheduler/gpu_scheduler.h ++++ b/drivers/gpu/drm/amd/scheduler/gpu_scheduler.h +@@ -27,7 +27,6 @@ + #include <linux/kfifo.h> + + #define AMD_MAX_ACTIVE_HW_SUBMISSION 2 +-#define AMD_MAX_JOB_ENTRY_PER_CONTEXT 16 + + #define AMD_KERNEL_CONTEXT_ID 0 + #define AMD_KERNEL_PROCESS_ID 0 +@@ -155,6 +154,7 @@ int amd_context_entity_init(struct amd_gpu_scheduler *sched, + struct amd_context_entity *entity, + struct amd_sched_entity *parent, + struct amd_run_queue *rq, +- uint32_t context_id); ++ uint32_t context_id, ++ uint32_t jobs); + + #endif +-- +1.9.1 + |