aboutsummaryrefslogtreecommitdiffstats
path: root/common/recipes-kernel/linux/linux-yocto-4.14.71/2128-drm-amdkfd-Fix-a-logical-error-in-calculating-SDMA-e.patch
blob: 268c2f582849ed8248cb7c546d046e68a6c3d46e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
From 59d2f6bcc97144a60aa4123c03131af3c5be3312 Mon Sep 17 00:00:00 2001
From: Yong Zhao <yong.zhao@amd.com>
Date: Tue, 17 Oct 2017 17:02:14 -0400
Subject: [PATCH 2128/4131] drm/amdkfd: Fix a logical error in calculating SDMA
 engine id and queue id

The denominator should be CIK_SDMA_ENGINE_NUM instead of
CIK_SDMA_QUEUES_PER_ENGINE. The error did not cause any issue though,
because they were equal.

Change-Id: Ib2e22dd187bf68dbf4322e063ed8019030f3a5e9
Signed-off-by: Yong Zhao <yong.zhao@amd.com>
---
 drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c | 8 ++++----
 drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.h | 3 ++-
 2 files changed, 6 insertions(+), 5 deletions(-)

diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c b/drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c
index e762a59..cd0990e 100644
--- a/drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c
+++ b/drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c
@@ -863,8 +863,8 @@ static int create_sdma_queue_nocpsch(struct device_queue_manager *dqm,
 	if (retval)
 		return retval;
 
-	q->properties.sdma_queue_id = q->sdma_id / CIK_SDMA_QUEUES_PER_ENGINE;
-	q->properties.sdma_engine_id = q->sdma_id % CIK_SDMA_QUEUES_PER_ENGINE;
+	q->properties.sdma_queue_id = q->sdma_id / CIK_SDMA_ENGINE_NUM;
+	q->properties.sdma_engine_id = q->sdma_id % CIK_SDMA_ENGINE_NUM;
 
 	retval = allocate_doorbell(qpd, q);
 	if (retval)
@@ -1088,9 +1088,9 @@ static int create_queue_cpsch(struct device_queue_manager *dqm, struct queue *q,
 		if (retval)
 			goto out_unlock;
 		q->properties.sdma_queue_id =
-			q->sdma_id / CIK_SDMA_QUEUES_PER_ENGINE;
+			q->sdma_id / CIK_SDMA_ENGINE_NUM;
 		q->properties.sdma_engine_id =
-			q->sdma_id % CIK_SDMA_QUEUES_PER_ENGINE;
+			q->sdma_id % CIK_SDMA_ENGINE_NUM;
 	}
 
 	retval = allocate_doorbell(qpd, q);
diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.h b/drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.h
index 841283a..ac9a24f 100644
--- a/drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.h
+++ b/drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.h
@@ -34,9 +34,10 @@
 #define QUEUE_PREEMPT_DEFAULT_TIMEOUT_MS (2 * KFD_UNMAP_LATENCY_MS + 1000)
 
 #define KFD_DQM_FIRST_PIPE			(0)
-#define CIK_SDMA_QUEUES				(4)
 #define CIK_SDMA_QUEUES_PER_ENGINE		(2)
 #define CIK_SDMA_ENGINE_NUM			(2)
+#define CIK_SDMA_QUEUES				(CIK_SDMA_QUEUES_PER_ENGINE \
+						* CIK_SDMA_ENGINE_NUM)
 
 struct device_process_node {
 	struct qcm_process_device *qpd;
-- 
2.7.4