aboutsummaryrefslogtreecommitdiffstats
path: root/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/4285-drm-amdkfd-Simplify-packet-manager-initialization.patch
blob: b48471e0ecfc3d35e3e8bd9c3ccde930e8e6a9bd (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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
From 694226f4f18f76d296b149049528cc64d83cb664 Mon Sep 17 00:00:00 2001
From: Felix Kuehling <Felix.Kuehling@amd.com>
Date: Tue, 24 Apr 2018 18:05:50 -0400
Subject: [PATCH 4285/5725] drm/amdkfd: Simplify packet manager initialization

Assign the function tables directly instead of doing it in a one-line
function. Also making the tables const while I'm at it.

Change-Id: If03fe1f89fc5badf15f3e9dd356b44601152bd7b
Signed-off-by: Felix Kuehling <Felix.Kuehling@amd.com>
---
 drivers/gpu/drm/amd/amdkfd/kfd_kernel_queue_v9.c | 8 +-------
 drivers/gpu/drm/amd/amdkfd/kfd_kernel_queue_vi.c | 7 +------
 drivers/gpu/drm/amd/amdkfd/kfd_packet_manager.c  | 4 ++--
 drivers/gpu/drm/amd/amdkfd/kfd_priv.h            | 9 ++++-----
 4 files changed, 8 insertions(+), 20 deletions(-)

diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_kernel_queue_v9.c b/drivers/gpu/drm/amd/amdkfd/kfd_kernel_queue_v9.c
index c6d5a33..6724b1a 100644
--- a/drivers/gpu/drm/amd/amdkfd/kfd_kernel_queue_v9.c
+++ b/drivers/gpu/drm/amd/amdkfd/kfd_kernel_queue_v9.c
@@ -323,7 +323,7 @@ static int pm_release_mem_v9(uint64_t gpu_addr, uint32_t *buffer)
 	return 0;
 }
 
-static struct packet_manager_funcs kfd_v9_pm_funcs = {
+const struct packet_manager_funcs kfd_v9_pm_funcs = {
 	.map_process		= pm_map_process_v9,
 	.runlist		= pm_runlist_v9,
 	.set_resources		= pm_set_resources_vi,
@@ -339,9 +339,3 @@ static struct packet_manager_funcs kfd_v9_pm_funcs = {
 	.query_status_size	= sizeof(struct pm4_mes_query_status),
 	.release_mem_size	= sizeof(struct pm4_mec_release_mem)
 };
-
-void kfd_pm_func_init_v9(struct packet_manager *pm)
-{
-	pm->pmf = &kfd_v9_pm_funcs;
-}
-
diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_kernel_queue_vi.c b/drivers/gpu/drm/amd/amdkfd/kfd_kernel_queue_vi.c
index a1a2e7b..357478f 100644
--- a/drivers/gpu/drm/amd/amdkfd/kfd_kernel_queue_vi.c
+++ b/drivers/gpu/drm/amd/amdkfd/kfd_kernel_queue_vi.c
@@ -358,7 +358,7 @@ static int pm_release_mem_vi(uint64_t gpu_addr, uint32_t *buffer)
 	return 0;
 }
 
-static struct packet_manager_funcs kfd_vi_pm_funcs = {
+const struct packet_manager_funcs kfd_vi_pm_funcs = {
 	.map_process		= pm_map_process_vi,
 	.runlist		= pm_runlist_vi,
 	.set_resources		= pm_set_resources_vi,
@@ -374,8 +374,3 @@ static struct packet_manager_funcs kfd_vi_pm_funcs = {
 	.query_status_size	= sizeof(struct pm4_mes_query_status),
 	.release_mem_size	= sizeof(struct pm4_mec_release_mem)
 };
-
-void kfd_pm_func_init_vi(struct packet_manager *pm)
-{
-	pm->pmf = &kfd_vi_pm_funcs;
-}
diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_packet_manager.c b/drivers/gpu/drm/amd/amdkfd/kfd_packet_manager.c
index 699352b..bc6e854 100644
--- a/drivers/gpu/drm/amd/amdkfd/kfd_packet_manager.c
+++ b/drivers/gpu/drm/amd/amdkfd/kfd_packet_manager.c
@@ -237,11 +237,11 @@ int pm_init(struct packet_manager *pm, struct device_queue_manager *dqm)
 	case CHIP_FIJI:
 	case CHIP_POLARIS10:
 	case CHIP_POLARIS11:
-		kfd_pm_func_init_vi(pm);
+		pm->pmf = &kfd_vi_pm_funcs;
 		break;
 	case CHIP_VEGA10:
 	case CHIP_RAVEN:
-		kfd_pm_func_init_v9(pm);
+		pm->pmf = &kfd_v9_pm_funcs;
 		break;
 	default:
 		BUG();
diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_priv.h b/drivers/gpu/drm/amd/amdkfd/kfd_priv.h
index 62bc7df..bb05e95 100644
--- a/drivers/gpu/drm/amd/amdkfd/kfd_priv.h
+++ b/drivers/gpu/drm/amd/amdkfd/kfd_priv.h
@@ -992,7 +992,7 @@ struct packet_manager {
 	struct kfd_mem_obj *ib_buffer_obj;
 	unsigned int ib_size_bytes;
 
-	struct packet_manager_funcs *pmf;
+	const struct packet_manager_funcs *pmf;
 };
 
 struct packet_manager_funcs {
@@ -1024,6 +1024,9 @@ struct packet_manager_funcs {
 	int release_mem_size;
 };
 
+extern const struct packet_manager_funcs kfd_vi_pm_funcs;
+extern const struct packet_manager_funcs kfd_v9_pm_funcs;
+
 int pm_init(struct packet_manager *pm, struct device_queue_manager *dqm);
 void pm_uninit(struct packet_manager *pm);
 int pm_send_set_resources(struct packet_manager *pm,
@@ -1044,10 +1047,6 @@ unsigned int pm_build_pm4_header(unsigned int opcode, size_t packet_size);
 int pm_set_resources_vi(struct packet_manager *pm, uint32_t *buffer,
 				struct scheduling_resources *res);
 
-void kfd_pm_func_init_vi(struct packet_manager *pm);
-void kfd_pm_func_init_v9(struct packet_manager *pm);
-
-
 uint64_t kfd_get_number_elems(struct kfd_dev *kfd);
 
 /* Events */
-- 
2.7.4