diff options
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.patch | 123 |
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 + |