diff options
Diffstat (limited to 'common/recipes-kernel/linux/linux-yocto-4.19.8/2682-drm-amdgpu-Merge-amdkfd-into-amdgpu.patch')
-rw-r--r-- | common/recipes-kernel/linux/linux-yocto-4.19.8/2682-drm-amdgpu-Merge-amdkfd-into-amdgpu.patch | 224 |
1 files changed, 224 insertions, 0 deletions
diff --git a/common/recipes-kernel/linux/linux-yocto-4.19.8/2682-drm-amdgpu-Merge-amdkfd-into-amdgpu.patch b/common/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/common/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 + |