aboutsummaryrefslogtreecommitdiffstats
path: root/meta-amdfalconx86/recipes-kernel/linux/linux-yocto/0753-drm-amdgpu-move-VM-manager-clean-into-the-VM-code-ag.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-amdfalconx86/recipes-kernel/linux/linux-yocto/0753-drm-amdgpu-move-VM-manager-clean-into-the-VM-code-ag.patch')
-rw-r--r--meta-amdfalconx86/recipes-kernel/linux/linux-yocto/0753-drm-amdgpu-move-VM-manager-clean-into-the-VM-code-ag.patch123
1 files changed, 123 insertions, 0 deletions
diff --git a/meta-amdfalconx86/recipes-kernel/linux/linux-yocto/0753-drm-amdgpu-move-VM-manager-clean-into-the-VM-code-ag.patch b/meta-amdfalconx86/recipes-kernel/linux/linux-yocto/0753-drm-amdgpu-move-VM-manager-clean-into-the-VM-code-ag.patch
new file mode 100644
index 00000000..e4ef8c01
--- /dev/null
+++ b/meta-amdfalconx86/recipes-kernel/linux/linux-yocto/0753-drm-amdgpu-move-VM-manager-clean-into-the-VM-code-ag.patch
@@ -0,0 +1,123 @@
+From c974f0d433ab9d0a8f753b32690cf6e49978343b Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Christian=20K=C3=B6nig?= <christian.koenig@amd.com>
+Date: Sun, 15 Nov 2015 20:52:06 +0100
+Subject: [PATCH 0753/1050] drm/amdgpu: move VM manager clean into the VM code
+ again
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+It's not a good idea to duplicate that code.
+
+Signed-off-by: Christian König <christian.koenig@amd.com>
+Reviewed-by: Chunming Zhou <davdi1.zhou@amd.com>
+Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
+---
+ drivers/gpu/drm/amd/amdgpu/amdgpu.h | 1 +
+ drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c | 15 +++++++++++++++
+ drivers/gpu/drm/amd/amdgpu/gmc_v7_0.c | 8 ++------
+ drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c | 8 ++------
+ 4 files changed, 20 insertions(+), 12 deletions(-)
+
+diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu.h b/drivers/gpu/drm/amd/amdgpu/amdgpu.h
+index b22f37a..b7ea569 100644
+--- a/drivers/gpu/drm/amd/amdgpu/amdgpu.h
++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu.h
+@@ -975,6 +975,7 @@ struct amdgpu_vm_manager {
+ struct amdgpu_ring *vm_pte_funcs_ring;
+ };
+
++void amdgpu_vm_manager_fini(struct amdgpu_device *adev);
+ int amdgpu_vm_init(struct amdgpu_device *adev, struct amdgpu_vm *vm);
+ void amdgpu_vm_fini(struct amdgpu_device *adev, struct amdgpu_vm *vm);
+ struct amdgpu_bo_list_entry *amdgpu_vm_get_bos(struct amdgpu_device *adev,
+diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
+index a9fcc99..6bb209b 100644
+--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
+@@ -1318,3 +1318,18 @@ void amdgpu_vm_fini(struct amdgpu_device *adev, struct amdgpu_vm *vm)
+
+ mutex_destroy(&vm->mutex);
+ }
++
++/**
++ * amdgpu_vm_manager_fini - cleanup VM manager
++ *
++ * @adev: amdgpu_device pointer
++ *
++ * Cleanup the VM manager and free resources.
++ */
++void amdgpu_vm_manager_fini(struct amdgpu_device *adev)
++{
++ unsigned i;
++
++ for (i = 0; i < AMDGPU_NUM_VM; ++i)
++ fence_put(adev->vm_manager.active[i]);
++}
+diff --git a/drivers/gpu/drm/amd/amdgpu/gmc_v7_0.c b/drivers/gpu/drm/amd/amdgpu/gmc_v7_0.c
+index b93b649..e082871 100644
+--- a/drivers/gpu/drm/amd/amdgpu/gmc_v7_0.c
++++ b/drivers/gpu/drm/amd/amdgpu/gmc_v7_0.c
+@@ -961,12 +961,10 @@ static int gmc_v7_0_sw_init(void *handle)
+
+ static int gmc_v7_0_sw_fini(void *handle)
+ {
+- int i;
+ struct amdgpu_device *adev = (struct amdgpu_device *)handle;
+
+ if (adev->vm_manager.enabled) {
+- for (i = 0; i < AMDGPU_NUM_VM; ++i)
+- fence_put(adev->vm_manager.active[i]);
++ amdgpu_vm_manager_fini(adev);
+ gmc_v7_0_vm_fini(adev);
+ adev->vm_manager.enabled = false;
+ }
+@@ -1011,12 +1009,10 @@ static int gmc_v7_0_hw_fini(void *handle)
+
+ static int gmc_v7_0_suspend(void *handle)
+ {
+- int i;
+ struct amdgpu_device *adev = (struct amdgpu_device *)handle;
+
+ if (adev->vm_manager.enabled) {
+- for (i = 0; i < AMDGPU_NUM_VM; ++i)
+- fence_put(adev->vm_manager.active[i]);
++ amdgpu_vm_manager_fini(adev);
+ gmc_v7_0_vm_fini(adev);
+ adev->vm_manager.enabled = false;
+ }
+diff --git a/drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c b/drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c
+index f50a9a9..61bda2c 100644
+--- a/drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c
++++ b/drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c
+@@ -980,12 +980,10 @@ static int gmc_v8_0_sw_init(void *handle)
+
+ static int gmc_v8_0_sw_fini(void *handle)
+ {
+- int i;
+ struct amdgpu_device *adev = (struct amdgpu_device *)handle;
+
+ if (adev->vm_manager.enabled) {
+- for (i = 0; i < AMDGPU_NUM_VM; ++i)
+- fence_put(adev->vm_manager.active[i]);
++ amdgpu_vm_manager_fini(adev);
+ gmc_v8_0_vm_fini(adev);
+ adev->vm_manager.enabled = false;
+ }
+@@ -1032,12 +1030,10 @@ static int gmc_v8_0_hw_fini(void *handle)
+
+ static int gmc_v8_0_suspend(void *handle)
+ {
+- int i;
+ struct amdgpu_device *adev = (struct amdgpu_device *)handle;
+
+ if (adev->vm_manager.enabled) {
+- for (i = 0; i < AMDGPU_NUM_VM; ++i)
+- fence_put(adev->vm_manager.active[i]);
++ amdgpu_vm_manager_fini(adev);
+ gmc_v8_0_vm_fini(adev);
+ adev->vm_manager.enabled = false;
+ }
+--
+1.9.1
+