Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

drm/lima: Expose job_hang_limit module parameter

Some pp or gp jobs can be successfully repeated even after they time outs.
Introduce lima module parameter to specify number of times a job can hang
before being dropped.

Signed-off-by: Andrey Lebedev <andrey@lebedev.lt>
Signed-off-by: Qiang Yu <yuq825@gmail.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20200619075900.3030696-1-andrey.lebedev@gmail.com

authored by

Andrey Lebedev and committed by
Qiang Yu
de489844 06a28f90

+8 -2
+4
drivers/gpu/drm/lima/lima_drv.c
··· 19 19 int lima_sched_timeout_ms; 20 20 uint lima_heap_init_nr_pages = 8; 21 21 uint lima_max_error_tasks; 22 + uint lima_job_hang_limit; 22 23 23 24 MODULE_PARM_DESC(sched_timeout_ms, "task run timeout in ms"); 24 25 module_param_named(sched_timeout_ms, lima_sched_timeout_ms, int, 0444); ··· 29 28 30 29 MODULE_PARM_DESC(max_error_tasks, "max number of error tasks to save"); 31 30 module_param_named(max_error_tasks, lima_max_error_tasks, uint, 0644); 31 + 32 + MODULE_PARM_DESC(job_hang_limit, "number of times to allow a job to hang before dropping it (default 0)"); 33 + module_param_named(job_hang_limit, lima_job_hang_limit, uint, 0444); 32 34 33 35 static int lima_ioctl_get_param(struct drm_device *dev, void *data, struct drm_file *file) 34 36 {
+1
drivers/gpu/drm/lima/lima_drv.h
··· 11 11 extern int lima_sched_timeout_ms; 12 12 extern uint lima_heap_init_nr_pages; 13 13 extern uint lima_max_error_tasks; 14 + extern uint lima_job_hang_limit; 14 15 15 16 struct lima_vm; 16 17 struct lima_bo;
+3 -2
drivers/gpu/drm/lima/lima_sched.c
··· 503 503 504 504 INIT_WORK(&pipe->recover_work, lima_sched_recover_work); 505 505 506 - return drm_sched_init(&pipe->base, &lima_sched_ops, 1, 0, 507 - msecs_to_jiffies(timeout), name); 506 + return drm_sched_init(&pipe->base, &lima_sched_ops, 1, 507 + lima_job_hang_limit, msecs_to_jiffies(timeout), 508 + name); 508 509 } 509 510 510 511 void lima_sched_pipe_fini(struct lima_sched_pipe *pipe)