aboutsummaryrefslogtreecommitdiffstats
path: root/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/1510-drm-amdgpu-Introduce-amdkfd_vm-structure.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/1510-drm-amdgpu-Introduce-amdkfd_vm-structure.patch')
-rw-r--r--meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/1510-drm-amdgpu-Introduce-amdkfd_vm-structure.patch139
1 files changed, 0 insertions, 139 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/1510-drm-amdgpu-Introduce-amdkfd_vm-structure.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/1510-drm-amdgpu-Introduce-amdkfd_vm-structure.patch
deleted file mode 100644
index 3f5351fb..00000000
--- a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/1510-drm-amdgpu-Introduce-amdkfd_vm-structure.patch
+++ /dev/null
@@ -1,139 +0,0 @@
-From 91d7956c48b020a6e4858394a9844306a5261be6 Mon Sep 17 00:00:00 2001
-From: Harish Kasiviswanathan <Harish.Kasiviswanathan@amd.com>
-Date: Mon, 27 Jun 2016 12:20:18 -0400
-Subject: [PATCH 1510/4131] drm/amdgpu: Introduce amdkfd_vm structure
-
-For KFD process use amdkfd_vm instead of amdgpu_vm but keep pointer
-compatability between these two structures.
-
-struct amdkfd_vm will aid KGD in keeping track of all KFD BOs and VMs
-belonging to a KFD process. This is useful for KFD memory eviction and
-restore since KFD eviction / restore is done per process.
-
-Change-Id: I83383a183c7f0c6b95d46c72b37dbaaaaa1e93f8
-Signed-off-by: Harish Kasiviswanathan <Harish.Kasiviswanathan@amd.com>
----
- drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h | 29 ++++++++++++++++++++++++
- drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c | 18 ++++++++-------
- 2 files changed, 39 insertions(+), 8 deletions(-)
-
-diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h
-index 70b8652..b66b03a 100755
---- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h
-+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h
-@@ -29,6 +29,7 @@
- #include <linux/mm.h>
- #include <linux/workqueue.h>
- #include <kgd_kfd_interface.h>
-+#include "amdgpu.h"
-
- extern const struct kgd2kfd_calls *kgd2kfd;
-
-@@ -70,6 +71,34 @@ struct kgd_mem {
- };
-
-
-+/* struct amdkfd_vm -
-+ * For Memory Eviction KGD requires a mechanism to keep track of all KFD BOs
-+ * belonging to a KFD process. All the VMs belonging to the same process point
-+ * to the same master VM. The master VM points to itself.
-+ * For master VM kfd_bo_list will contain the list of all KFD BOs and it will
-+ * be empty for all the other VMs. The master VM is decided by KFD and it will
-+ * pass it on KGD via create_process_vm interface
-+ */
-+struct amdkfd_vm {
-+ /* Keep base as the first parameter for pointer compatibility between
-+ * amdkfd_vm and amdgpu_vm.
-+ */
-+ struct amdgpu_vm base;
-+ /* Points to master VM of the KFD process */
-+ struct amdkfd_vm *master;
-+ /* List Head for all KFD BOs that belong to a KFD process. Non-empty
-+ * only for Master VM.
-+ */
-+ struct list_head kfd_bo_list;
-+ /* Lock to protect kfd_bo_list */
-+ struct mutex lock;
-+ /* List of VMs that belong to a KFD process */
-+ struct list_head kfd_vm_list;
-+ /* Number of VMs including master VM */
-+ unsigned n_vms;
-+ struct amdgpu_device *adev;
-+};
-+
- int amdgpu_amdkfd_init(void);
- void amdgpu_amdkfd_fini(void);
-
-diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
-index fefdfe2..123adfb 100644
---- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
-+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
-@@ -27,7 +27,6 @@
- #include <linux/list.h>
- #include <drm/drmP.h>
- #include <linux/dma-buf.h>
--#include "amdgpu.h"
- #include "amdgpu_amdkfd.h"
- #include "amdgpu_ucode.h"
- #include "gca/gfx_8_0_sh_mask.h"
-@@ -1038,14 +1037,14 @@ int amdgpu_amdkfd_gpuvm_map_memory_to_gpu(
- int amdgpu_amdkfd_gpuvm_create_process_vm(struct kgd_dev *kgd, void **vm)
- {
- int ret;
-- struct amdgpu_vm *new_vm;
-+ struct amdkfd_vm *new_vm;
- struct amdgpu_bo *pd;
- struct amdgpu_device *adev = get_amdgpu_device(kgd);
-
- BUG_ON(kgd == NULL);
- BUG_ON(vm == NULL);
-
-- new_vm = kzalloc(sizeof(struct amdgpu_vm), GFP_KERNEL);
-+ new_vm = kzalloc(sizeof(struct amdkfd_vm), GFP_KERNEL);
- if (new_vm == NULL)
- return -ENOMEM;
-
-@@ -1054,11 +1053,14 @@ int amdgpu_amdkfd_gpuvm_create_process_vm(struct kgd_dev *kgd, void **vm)
- if (ret != 0) {
- pr_err("amdgpu: failed init vm ret %d\n", ret);
- /* Undo everything related to the new VM context */
-- amdgpu_vm_fini(adev, new_vm);
-+ amdgpu_vm_fini(adev, &new_vm->base);
- kfree(new_vm);
- new_vm = NULL;
- }
--
-+ new_vm->adev = adev;
-+ mutex_init(&new_vm->lock);
-+ INIT_LIST_HEAD(&new_vm->kfd_bo_list);
-+ INIT_LIST_HEAD(&new_vm->kfd_vm_list);
- *vm = (void *) new_vm;
-
- /*
-@@ -1066,12 +1068,12 @@ int amdgpu_amdkfd_gpuvm_create_process_vm(struct kgd_dev *kgd, void **vm)
- * removed from PT. This function is called here because it requires
- * the radeon_vm::mutex to be locked and PT to be reserved
- */
-- ret = amdgpu_vm_clear_freed(adev, new_vm);
-+ ret = amdgpu_vm_clear_freed(adev, &new_vm->base);
- if (ret != 0)
- pr_err("amdgpu: Failed to amdgpu_vm_clear_freed\n");
-
- /* Pin the PD directory */
-- pd = new_vm->page_directory;
-+ pd = new_vm->base.page_directory;
- amdgpu_bo_reserve(pd, true);
- ret = try_pin_bo(pd, AMDGPU_GEM_DOMAIN_VRAM);
- amdgpu_bo_unreserve(pd);
-@@ -1079,7 +1081,7 @@ int amdgpu_amdkfd_gpuvm_create_process_vm(struct kgd_dev *kgd, void **vm)
- pr_err("amdkfd: Failed to pin PD\n");
-
- pr_debug("amdgpu: created process vm with address 0x%llx\n",
-- amdgpu_bo_gpu_offset(new_vm->page_directory));
-+ amdgpu_bo_gpu_offset(new_vm->base.page_directory));
-
- return ret;
- }
---
-2.7.4
-