aboutsummaryrefslogtreecommitdiffstats
path: root/common/recipes-kernel/linux/linux-yocto-4.14.71/4285-drm-amdkfd-Simplify-packet-manager-initialization.patch
diff options
context:
space:
mode:
Diffstat (limited to 'common/recipes-kernel/linux/linux-yocto-4.14.71/4285-drm-amdkfd-Simplify-packet-manager-initialization.patch')
-rw-r--r--common/recipes-kernel/linux/linux-yocto-4.14.71/4285-drm-amdkfd-Simplify-packet-manager-initialization.patch117
1 files changed, 117 insertions, 0 deletions
diff --git a/common/recipes-kernel/linux/linux-yocto-4.14.71/4285-drm-amdkfd-Simplify-packet-manager-initialization.patch b/common/recipes-kernel/linux/linux-yocto-4.14.71/4285-drm-amdkfd-Simplify-packet-manager-initialization.patch
new file mode 100644
index 00000000..b48471e0
--- /dev/null
+++ b/common/recipes-kernel/linux/linux-yocto-4.14.71/4285-drm-amdkfd-Simplify-packet-manager-initialization.patch
@@ -0,0 +1,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
+