mirror of https://gitee.com/openkylin/linux.git
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>
This commit is contained in:
parent
c0044bc2c6
commit
1333f723fb
|
@ -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 */
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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 */
|
||||
|
|
|
@ -173,6 +173,7 @@ static struct amd_context_entity *select_context(
|
|||
* @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;
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue