aboutsummaryrefslogtreecommitdiffstats
path: root/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/2682-drm-amdgpu-Merge-amdkfd-into-amdgpu.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/2682-drm-amdgpu-Merge-amdkfd-into-amdgpu.patch')
-rw-r--r--meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/2682-drm-amdgpu-Merge-amdkfd-into-amdgpu.patch224
1 files changed, 224 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/2682-drm-amdgpu-Merge-amdkfd-into-amdgpu.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/2682-drm-amdgpu-Merge-amdkfd-into-amdgpu.patch
new file mode 100644
index 00000000..7de8706a
--- /dev/null
+++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/2682-drm-amdgpu-Merge-amdkfd-into-amdgpu.patch
@@ -0,0 +1,224 @@
+From 3725119d8727310f33fb72faeda26670c3042f96 Mon Sep 17 00:00:00 2001
+From: Amber Lin <Amber.Lin@amd.com>
+Date: Wed, 22 Aug 2018 16:48:50 -0400
+Subject: [PATCH 2682/2940] drm/amdgpu: Merge amdkfd into amdgpu
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Since KFD is only supported by single GPU driver, it makes sense to merge
+amdgpu and amdkfd into one module. This patch is the initial step: merge
+Kconfig and Makefile.
+
+v2: also remove kfd from drm Kconfig
+
+Signed-off-by: Amber Lin <Amber.Lin@amd.com>
+Acked-by: Christian König <christian.koenig@amd.com>
+Reviewed-by: Felix Kuehling <Felix.Kuehling@amd.com>
+Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
+---
+ drivers/gpu/drm/amd/amdkfd/Makefile | 53 +++++++++++------
+ drivers/gpu/drm/amd/amdkfd/kfd_module.c | 77 +++++++------------------
+ 2 files changed, 56 insertions(+), 74 deletions(-)
+
+diff --git a/drivers/gpu/drm/amd/amdkfd/Makefile b/drivers/gpu/drm/amd/amdkfd/Makefile
+index ffd096fffc1c..69ec96998bb9 100644
+--- a/drivers/gpu/drm/amd/amdkfd/Makefile
++++ b/drivers/gpu/drm/amd/amdkfd/Makefile
+@@ -23,26 +23,41 @@
+ # Makefile for Heterogenous System Architecture support for AMD GPU devices
+ #
+
+-ccflags-y := -Idrivers/gpu/drm/amd/include/ \
+- -Idrivers/gpu/drm/amd/include/asic_reg
+-
+-amdkfd-y := kfd_module.o kfd_device.o kfd_chardev.o kfd_topology.o \
+- kfd_pasid.o kfd_doorbell.o kfd_flat_memory.o \
+- kfd_process.o kfd_queue.o kfd_mqd_manager.o \
+- kfd_mqd_manager_cik.o kfd_mqd_manager_vi.o \
+- kfd_mqd_manager_v9.o \
+- kfd_kernel_queue.o kfd_kernel_queue_cik.o \
+- kfd_kernel_queue_vi.o kfd_kernel_queue_v9.o \
+- kfd_packet_manager.o kfd_process_queue_manager.o \
+- kfd_device_queue_manager.o kfd_device_queue_manager_cik.o \
+- kfd_device_queue_manager_vi.o kfd_device_queue_manager_v9.o \
+- kfd_interrupt.o kfd_events.o cik_event_interrupt.o \
+- kfd_int_process_v9.o kfd_dbgdev.o kfd_dbgmgr.o kfd_crat.o
++AMDKFD_FILES := $(AMDKFD_PATH)/kfd_module.o \
++ $(AMDKFD_PATH)/kfd_device.o \
++ $(AMDKFD_PATH)/kfd_chardev.o \
++ $(AMDKFD_PATH)/kfd_topology.o \
++ $(AMDKFD_PATH)/kfd_pasid.o \
++ $(AMDKFD_PATH)/kfd_doorbell.o \
++ $(AMDKFD_PATH)/kfd_flat_memory.o \
++ $(AMDKFD_PATH)/kfd_process.o \
++ $(AMDKFD_PATH)/kfd_queue.o \
++ $(AMDKFD_PATH)/kfd_mqd_manager.o \
++ $(AMDKFD_PATH)/kfd_mqd_manager_cik.o \
++ $(AMDKFD_PATH)/kfd_mqd_manager_vi.o \
++ $(AMDKFD_PATH)/kfd_mqd_manager_v9.o \
++ $(AMDKFD_PATH)/kfd_kernel_queue.o \
++ $(AMDKFD_PATH)/kfd_kernel_queue_cik.o \
++ $(AMDKFD_PATH)/kfd_kernel_queue_vi.o \
++ $(AMDKFD_PATH)/kfd_kernel_queue_v9.o \
++ $(AMDKFD_PATH)/kfd_packet_manager.o \
++ $(AMDKFD_PATH)/kfd_process_queue_manager.o \
++ $(AMDKFD_PATH)/kfd_device_queue_manager.o \
++ $(AMDKFD_PATH)/kfd_device_queue_manager_cik.o \
++ $(AMDKFD_PATH)/kfd_device_queue_manager_vi.o \
++ $(AMDKFD_PATH)/kfd_device_queue_manager_v9.o \
++ $(AMDKFD_PATH)/kfd_interrupt.o \
++ $(AMDKFD_PATH)/kfd_events.o \
++ $(AMDKFD_PATH)/cik_event_interrupt.o \
++ $(AMDKFD_PATH)/kfd_int_process_v9.o \
++ $(AMDKFD_PATH)/kfd_dbgdev.o \
++ $(AMDKFD_PATH)/kfd_dbgmgr.o \
++ $(AMDKFD_PATH)/kfd_crat.o
+
+ ifneq ($(CONFIG_AMD_IOMMU_V2),)
+-amdkfd-y += kfd_iommu.o
++AMDKFD_FILES += $(AMDKFD_PATH)/kfd_iommu.o
+ endif
+
+-amdkfd-$(CONFIG_DEBUG_FS) += kfd_debugfs.o
+-
+-obj-$(CONFIG_HSA_AMD) += amdkfd.o
++ifneq ($(CONFIG_DEBUG_FS),)
++AMDKFD_FILES += $(AMDKFD_PATH)/kfd_debugfs.o
++endif
+diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_module.c b/drivers/gpu/drm/amd/amdkfd/kfd_module.c
+index 6e1f5c7c2d4b..b445674bba9a 100644
+--- a/drivers/gpu/drm/amd/amdkfd/kfd_module.c
++++ b/drivers/gpu/drm/amd/amdkfd/kfd_module.c
+@@ -20,21 +20,11 @@
+ * OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+-#include <linux/module.h>
+ #include <linux/sched.h>
+ #include <linux/moduleparam.h>
+ #include <linux/device.h>
+-#include <linux/printk.h>
+ #include "kfd_priv.h"
+
+-#define KFD_DRIVER_AUTHOR "AMD Inc. and others"
+-
+-#define KFD_DRIVER_DESC "Standalone HSA driver for AMD's GPUs"
+-#define KFD_DRIVER_DATE "20150421"
+-#define KFD_DRIVER_MAJOR 0
+-#define KFD_DRIVER_MINOR 7
+-#define KFD_DRIVER_PATCHLEVEL 2
+-
+ static const struct kgd2kfd_calls kgd2kfd = {
+ .exit = kgd2kfd_exit,
+ .probe = kgd2kfd_probe,
+@@ -95,33 +85,7 @@ module_param(halt_if_hws_hang, int, 0644);
+ MODULE_PARM_DESC(halt_if_hws_hang, "Halt if HWS hang is detected (0 = off (default), 1 = on)");
+
+
+-static int amdkfd_init_completed;
+-
+-
+-int kgd2kfd_init(unsigned int interface_version,
+- const struct kgd2kfd_calls **g2f)
+-{
+- if (!amdkfd_init_completed)
+- return -EPROBE_DEFER;
+-
+- /*
+- * Only one interface version is supported,
+- * no kfd/kgd version skew allowed.
+- */
+- if (interface_version != KFD_INTERFACE_VERSION)
+- return -EINVAL;
+-
+- *g2f = &kgd2kfd;
+-
+- return 0;
+-}
+-EXPORT_SYMBOL(kgd2kfd_init);
+-
+-void kgd2kfd_exit(void)
+-{
+-}
+-
+-static int __init kfd_module_init(void)
++static int kfd_init(void)
+ {
+ int err;
+
+@@ -129,7 +93,7 @@ static int __init kfd_module_init(void)
+ if ((sched_policy < KFD_SCHED_POLICY_HWS) ||
+ (sched_policy > KFD_SCHED_POLICY_NO_HWS)) {
+ pr_err("sched_policy has invalid value\n");
+- return -1;
++ return -EINVAL;
+ }
+
+ /* Verify module parameters */
+@@ -137,7 +101,7 @@ static int __init kfd_module_init(void)
+ (max_num_of_queues_per_device >
+ KFD_MAX_NUM_OF_QUEUES_PER_DEVICE)) {
+ pr_err("max_num_of_queues_per_device must be between 1 to KFD_MAX_NUM_OF_QUEUES_PER_DEVICE\n");
+- return -1;
++ return -EINVAL;
+ }
+
+ err = kfd_chardev_init();
+@@ -154,10 +118,6 @@ static int __init kfd_module_init(void)
+
+ kfd_debugfs_init();
+
+- amdkfd_init_completed = 1;
+-
+- dev_info(kfd_device, "Initialized module\n");
+-
+ return 0;
+
+ err_create_wq:
+@@ -168,23 +128,30 @@ static int __init kfd_module_init(void)
+ return err;
+ }
+
+-static void __exit kfd_module_exit(void)
++static void kfd_exit(void)
+ {
+- amdkfd_init_completed = 0;
+-
+ kfd_debugfs_fini();
+ kfd_process_destroy_wq();
+ kfd_topology_shutdown();
+ kfd_chardev_exit();
+- pr_info("amdkfd: Removed module\n");
+ }
+
+-module_init(kfd_module_init);
+-module_exit(kfd_module_exit);
++int kgd2kfd_init(unsigned int interface_version,
++ const struct kgd2kfd_calls **g2f)
++{
++ int err;
++
++ err = kfd_init();
++ if (err)
++ return err;
+
+-MODULE_AUTHOR(KFD_DRIVER_AUTHOR);
+-MODULE_DESCRIPTION(KFD_DRIVER_DESC);
+-MODULE_LICENSE("GPL and additional rights");
+-MODULE_VERSION(__stringify(KFD_DRIVER_MAJOR) "."
+- __stringify(KFD_DRIVER_MINOR) "."
+- __stringify(KFD_DRIVER_PATCHLEVEL));
++ *g2f = &kgd2kfd;
++
++ return 0;
++}
++EXPORT_SYMBOL(kgd2kfd_init);
++
++void kgd2kfd_exit(void)
++{
++ kfd_exit();
++}
+--
+2.17.1
+