Commit f3820e9d authored by Amber Lin's avatar Amber Lin Committed by Alex Deucher
Browse files

drm/amdkfd: Tie UNMAP_LATENCY to queue_preemption



When KFD asks CP to preempt queues, other than preempt CP queues, CP
also requests SDMA to preempt SDMA queues with UNMAP_LATENCY timeout.
Currently queue_preemption_timeout_ms is 9000 ms by default but can be
configured via module parameter. KFD_UNMAP_LATENCY_MS is hard coded as
4000 ms though. This patch ties KFD_UNMAP_LATENCY_MS to
queue_preemption_timeout_ms so in a slow system such as emulator, both
CP and SDMA slowness are taken into account.

Signed-off-by: default avatarAmber Lin <Amber.Lin@amd.com>
Reviewed-by: default avatarHarish Kasiviswanathan <Harish.Kasiviswanathan@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent 181d7dcc
Loading
Loading
Loading
Loading
+8 −1
Original line number Diff line number Diff line
@@ -111,7 +111,14 @@

#define KFD_KERNEL_QUEUE_SIZE 2048

#define KFD_UNMAP_LATENCY_MS	(4000)
/*  KFD_UNMAP_LATENCY_MS is the timeout CP waiting for SDMA preemption. One XCC
 *  can be associated to 2 SDMA engines. queue_preemption_timeout_ms is the time
 *  driver waiting for CP returning the UNMAP_QUEUE fence. Thus the math is
 *  queue_preemption_timeout_ms = sdma_preemption_time * 2 + cp workload
 *  The format here makes CP workload 10% of total timeout
 */
#define KFD_UNMAP_LATENCY_MS	\
	((queue_preemption_timeout_ms - queue_preemption_timeout_ms / 10) >> 1)

#define KFD_MAX_SDMA_QUEUES	128