aboutsummaryrefslogtreecommitdiffstats
path: root/common/recipes-kernel/linux/linux-yocto-4.14.71/5701-drm-amdgpu-Merge-amdkfd-into-amdgpu.patch
diff options
context:
space:
mode:
Diffstat (limited to 'common/recipes-kernel/linux/linux-yocto-4.14.71/5701-drm-amdgpu-Merge-amdkfd-into-amdgpu.patch')
-rw-r--r--common/recipes-kernel/linux/linux-yocto-4.14.71/5701-drm-amdgpu-Merge-amdkfd-into-amdgpu.patch291
1 files changed, 291 insertions, 0 deletions
diff --git a/common/recipes-kernel/linux/linux-yocto-4.14.71/5701-drm-amdgpu-Merge-amdkfd-into-amdgpu.patch b/common/recipes-kernel/linux/linux-yocto-4.14.71/5701-drm-amdgpu-Merge-amdkfd-into-amdgpu.patch
new file mode 100644
index 00000000..4da9a675
--- /dev/null
+++ b/common/recipes-kernel/linux/linux-yocto-4.14.71/5701-drm-amdgpu-Merge-amdkfd-into-amdgpu.patch
@@ -0,0 +1,291 @@
+From b9e93608c6e89441477a797c2c8196d3d7984755 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 5701/5725] 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/Kconfig | 2 --
+ drivers/gpu/drm/amd/amdgpu/Kconfig | 1 +
+ drivers/gpu/drm/amd/amdgpu/Makefile | 9 +++--
+ drivers/gpu/drm/amd/amdkfd/Kconfig | 2 +-
+ drivers/gpu/drm/amd/amdkfd/Makefile | 57 ++++++++++++++++++-----------
+ drivers/gpu/drm/amd/amdkfd/kfd_module.c | 64 +++++++++++----------------------
+ 6 files changed, 66 insertions(+), 69 deletions(-)
+
+diff --git a/drivers/gpu/drm/Kconfig b/drivers/gpu/drm/Kconfig
+index 1a4bda3..1745b8a 100644
+--- a/drivers/gpu/drm/Kconfig
++++ b/drivers/gpu/drm/Kconfig
+@@ -262,8 +262,6 @@ source "drivers/gpu/drm/bridge/Kconfig"
+
+ source "drivers/gpu/drm/sti/Kconfig"
+
+-source "drivers/gpu/drm/amd/amdkfd/Kconfig"
+-
+ source "drivers/gpu/drm/imx/Kconfig"
+
+ source "drivers/gpu/drm/vc4/Kconfig"
+diff --git a/drivers/gpu/drm/amd/amdgpu/Kconfig b/drivers/gpu/drm/amd/amdgpu/Kconfig
+index 468a19b..d2ea710 100644
+--- a/drivers/gpu/drm/amd/amdgpu/Kconfig
++++ b/drivers/gpu/drm/amd/amdgpu/Kconfig
+@@ -42,3 +42,4 @@ config DRM_AMDGPU_GART_DEBUGFS
+
+ source "drivers/gpu/drm/amd/acp/Kconfig"
+ source "drivers/gpu/drm/amd/display/Kconfig"
++source "drivers/gpu/drm/amd/amdkfd/Kconfig"
+diff --git a/drivers/gpu/drm/amd/amdgpu/Makefile b/drivers/gpu/drm/amd/amdgpu/Makefile
+index 5edff50..e351f2d 100644
+--- a/drivers/gpu/drm/amd/amdgpu/Makefile
++++ b/drivers/gpu/drm/amd/amdgpu/Makefile
+@@ -35,7 +35,8 @@ ccflags-y := -Iinclude/drm -I$(FULL_AMD_PATH)/include/asic_reg \
+ -I$(FULL_AMD_DISPLAY_PATH) \
+ -I$(FULL_AMD_DISPLAY_PATH)/include \
+ -I$(FULL_AMD_DISPLAY_PATH)/dc \
+- -I$(FULL_AMD_DISPLAY_PATH)/amdgpu_dm
++ -I$(FULL_AMD_DISPLAY_PATH)/amdgpu_dm \
++ -I$(FULL_AMD_PATH)/amdkfd
+
+ amdgpu-y := amdgpu_drv.o
+
+@@ -134,13 +135,17 @@ amdgpu-y += \
+ vcn_v1_0.o
+
+ # add amdkfd interfaces
++ifneq ($(CONFIG_HSA_AMD),)
++AMDKFD_PATH := ../amdkfd
++include $(FULL_AMD_PATH)/amdkfd/Makefile
++amdgpu-y += $(AMDKFD_FILES)
+ amdgpu-y += \
+ amdgpu_amdkfd.o \
+ amdgpu_amdkfd_gfx_v7.o \
+ amdgpu_amdkfd_gfx_v8.o \
+ amdgpu_amdkfd_gfx_v9.o \
+ amdgpu_amdkfd_gpuvm.o
+-
++endif
+ # add cgs
+ amdgpu-y += amdgpu_cgs.o
+
+diff --git a/drivers/gpu/drm/amd/amdkfd/Kconfig b/drivers/gpu/drm/amd/amdkfd/Kconfig
+index bc8d8f7..94cbfbc 100644
+--- a/drivers/gpu/drm/amd/amdkfd/Kconfig
++++ b/drivers/gpu/drm/amd/amdkfd/Kconfig
+@@ -3,7 +3,7 @@
+ #
+
+ config HSA_AMD
+- tristate "HSA kernel driver for AMD GPU devices"
++ bool "HSA kernel driver for AMD GPU devices"
+ depends on (DRM_RADEON || DRM_AMDGPU) && (X86_64 || PPC64 || ARM64)
+ select DRM_AMDGPU_USERPTR
+ imply AMD_IOMMU_V2
+diff --git a/drivers/gpu/drm/amd/amdkfd/Makefile b/drivers/gpu/drm/amd/amdkfd/Makefile
+index 4804f9c..911e67d 100644
+--- a/drivers/gpu/drm/amd/amdkfd/Makefile
++++ b/drivers/gpu/drm/amd/amdkfd/Makefile
+@@ -23,28 +23,43 @@
+ # Makefile for Heterogenous System Architecture support for AMD GPU devices
+ #
+
+-FULL_AMD_PATH=$(src)/..
+-ccflags-y := -I$(FULL_AMD_PATH)/include \
+- -I$(FULL_AMD_PATH)/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_flat_memory.o kfd_crat.o kfd_rdma.o \
+- kfd_peerdirect.o kfd_ipc.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_flat_memory.o \
++ $(AMDKFD_PATH)/kfd_rdma.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 261657f..8675222 100644
+--- a/drivers/gpu/drm/amd/amdkfd/kfd_module.c
++++ b/drivers/gpu/drm/amd/amdkfd/kfd_module.c
+@@ -20,15 +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 "20160408"
+ #define KFD_DRIVER_MAJOR 2
+@@ -99,33 +95,7 @@ int halt_if_hws_hang;
+ 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;
+
+@@ -133,7 +103,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 */
+@@ -141,7 +111,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();
+@@ -164,10 +134,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:
+@@ -179,21 +145,33 @@ 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_close_peer_direct();
+ 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;
++ *g2f = &kgd2kfd;
++
++ return 0;
++}
++EXPORT_SYMBOL(kgd2kfd_init);
++
++void kgd2kfd_exit(void)
++{
++ kfd_exit();
++}
+ MODULE_AUTHOR(KFD_DRIVER_AUTHOR);
+ MODULE_DESCRIPTION(KFD_DRIVER_DESC);
+ MODULE_LICENSE("GPL and additional rights");
+--
+2.7.4
+