aboutsummaryrefslogtreecommitdiffstats
path: root/common/recipes-kernel/linux/files/0326-drm-amdgpu-cleanup-gem-init-finit.patch
diff options
context:
space:
mode:
Diffstat (limited to 'common/recipes-kernel/linux/files/0326-drm-amdgpu-cleanup-gem-init-finit.patch')
-rw-r--r--common/recipes-kernel/linux/files/0326-drm-amdgpu-cleanup-gem-init-finit.patch230
1 files changed, 0 insertions, 230 deletions
diff --git a/common/recipes-kernel/linux/files/0326-drm-amdgpu-cleanup-gem-init-finit.patch b/common/recipes-kernel/linux/files/0326-drm-amdgpu-cleanup-gem-init-finit.patch
deleted file mode 100644
index 6e47c43b..00000000
--- a/common/recipes-kernel/linux/files/0326-drm-amdgpu-cleanup-gem-init-finit.patch
+++ /dev/null
@@ -1,230 +0,0 @@
-From 9a0d113114485b5286a3af62b5f2b3a638a42c56 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Christian=20K=C3=B6nig?= <christian.koenig@amd.com>
-Date: Mon, 15 Feb 2016 16:59:57 +0100
-Subject: [PATCH 0326/1110] drm/amdgpu: cleanup gem init/finit
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Remove the double housekeeping and use something sane to
-forcefuly delete BOs on unload.
-
-Signed-off-by: Christian König <christian.koenig@amd.com>
-Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
-Signed-off-by: Kalyan Alle <kalyan.alle@amd.com>
----
- drivers/gpu/drm/amd/amdgpu/amdgpu.h | 9 +--------
- drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 1 -
- drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c | 31 +++++++++++++++++++-----------
- drivers/gpu/drm/amd/amdgpu/amdgpu_object.c | 23 ----------------------
- drivers/gpu/drm/amd/amdgpu/amdgpu_object.h | 1 -
- drivers/gpu/drm/amd/amdgpu/amdgpu_prime.c | 4 ----
- drivers/gpu/drm/amd/amdgpu/gmc_v7_0.c | 6 +-----
- drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c | 6 +-----
- 8 files changed, 23 insertions(+), 58 deletions(-)
-
-diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu.h b/drivers/gpu/drm/amd/amdgpu/amdgpu.h
-index ba66640..af4f128 100644
---- a/drivers/gpu/drm/amd/amdgpu/amdgpu.h
-+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu.h
-@@ -567,13 +567,7 @@ struct amdgpu_sa_bo {
- /*
- * GEM objects.
- */
--struct amdgpu_gem {
-- struct mutex mutex;
-- struct list_head objects;
--};
--
--int amdgpu_gem_init(struct amdgpu_device *adev);
--void amdgpu_gem_fini(struct amdgpu_device *adev);
-+void amdgpu_gem_force_release(struct amdgpu_device *adev);
- int amdgpu_gem_object_create(struct amdgpu_device *adev, unsigned long size,
- int alignment, u32 initial_domain,
- u64 flags, bool kernel,
-@@ -1976,7 +1970,6 @@ struct amdgpu_device {
-
- /* memory management */
- struct amdgpu_mman mman;
-- struct amdgpu_gem gem;
- struct amdgpu_vram_scratch vram_scratch;
- struct amdgpu_wb wb;
- atomic64_t vram_usage;
-diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
-index 736d560..9663d17 100644
---- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
-+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
-@@ -1426,7 +1426,6 @@ int amdgpu_device_init(struct amdgpu_device *adev,
- * can recall function without having locking issues */
- mutex_init(&adev->vm_manager.lock);
- atomic_set(&adev->irq.ih.lock, 0);
-- mutex_init(&adev->gem.mutex);
- mutex_init(&adev->pm.mutex);
- mutex_init(&adev->gfx.gpu_clock_mutex);
- mutex_init(&adev->srbm_mutex);
-diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c
-index c44905a..6270a20 100644
---- a/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c
-+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c
-@@ -84,22 +84,31 @@ retry:
- }
- *obj = &robj->gem_base;
-
-- mutex_lock(&adev->gem.mutex);
-- list_add_tail(&robj->list, &adev->gem.objects);
-- mutex_unlock(&adev->gem.mutex);
--
- return 0;
- }
-
--int amdgpu_gem_init(struct amdgpu_device *adev)
-+void amdgpu_gem_force_release(struct amdgpu_device *adev)
- {
-- INIT_LIST_HEAD(&adev->gem.objects);
-- return 0;
--}
-+ struct drm_device *ddev = adev->ddev;
-+ struct drm_file *file;
-
--void amdgpu_gem_fini(struct amdgpu_device *adev)
--{
-- amdgpu_bo_force_delete(adev);
-+ mutex_lock(&ddev->struct_mutex);
-+
-+ list_for_each_entry(file, &ddev->filelist, lhead) {
-+ struct drm_gem_object *gobj;
-+ int handle;
-+
-+ WARN_ONCE(1, "Still active user space clients!\n");
-+ spin_lock(&file->table_lock);
-+ idr_for_each_entry(&file->object_idr, gobj, handle) {
-+ WARN_ONCE(1, "And also active allocations!\n");
-+ drm_gem_object_unreference(gobj);
-+ }
-+ idr_destroy(&file->object_idr);
-+ spin_unlock(&file->table_lock);
-+ }
-+
-+ mutex_unlock(&ddev->struct_mutex);
- }
-
- /*
-diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c
-index c884873..c980cba 100644
---- a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c
-+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c
-@@ -97,9 +97,6 @@ static void amdgpu_ttm_bo_destroy(struct ttm_buffer_object *tbo)
-
- amdgpu_update_memory_usage(bo->adev, &bo->tbo.mem, NULL);
-
-- mutex_lock(&bo->adev->gem.mutex);
-- list_del_init(&bo->list);
-- mutex_unlock(&bo->adev->gem.mutex);
- drm_gem_object_release(&bo->gem_base);
- amdgpu_bo_unref(&bo->parent);
- kfree(bo->metadata);
-@@ -473,26 +470,6 @@ int amdgpu_bo_evict_vram(struct amdgpu_device *adev)
- return ttm_bo_evict_mm(&adev->mman.bdev, TTM_PL_VRAM);
- }
-
--void amdgpu_bo_force_delete(struct amdgpu_device *adev)
--{
-- struct amdgpu_bo *bo, *n;
--
-- if (list_empty(&adev->gem.objects)) {
-- return;
-- }
-- dev_err(adev->dev, "Userspace still has active objects !\n");
-- list_for_each_entry_safe(bo, n, &adev->gem.objects, list) {
-- dev_err(adev->dev, "%p %p %lu %lu force free\n",
-- &bo->gem_base, bo, (unsigned long)bo->gem_base.size,
-- *((unsigned long *)&bo->gem_base.refcount));
-- mutex_lock(&bo->adev->gem.mutex);
-- list_del_init(&bo->list);
-- mutex_unlock(&bo->adev->gem.mutex);
-- /* this should unref the ttm bo */
-- drm_gem_object_unreference_unlocked(&bo->gem_base);
-- }
--}
--
- int amdgpu_bo_init(struct amdgpu_device *adev)
- {
- /* Add an MTRR for the VRAM */
-diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.h
-index 5107fb2..acc0801 100644
---- a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.h
-+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.h
-@@ -149,7 +149,6 @@ int amdgpu_bo_pin_restricted(struct amdgpu_bo *bo, u32 domain,
- u64 *gpu_addr);
- int amdgpu_bo_unpin(struct amdgpu_bo *bo);
- int amdgpu_bo_evict_vram(struct amdgpu_device *adev);
--void amdgpu_bo_force_delete(struct amdgpu_device *adev);
- int amdgpu_bo_init(struct amdgpu_device *adev);
- void amdgpu_bo_fini(struct amdgpu_device *adev);
- int amdgpu_bo_fbdev_mmap(struct amdgpu_bo *bo,
-diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_prime.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_prime.c
-index 39db99a..32b0247 100644
---- a/drivers/gpu/drm/amd/amdgpu/amdgpu_prime.c
-+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_prime.c
-@@ -73,10 +73,6 @@ struct drm_gem_object *amdgpu_gem_prime_import_sg_table(struct drm_device *dev,
- if (ret)
- return ERR_PTR(ret);
-
-- mutex_lock(&adev->gem.mutex);
-- list_add_tail(&bo->list, &adev->gem.objects);
-- mutex_unlock(&adev->gem.mutex);
--
- return &bo->gem_base;
- }
-
-diff --git a/drivers/gpu/drm/amd/amdgpu/gmc_v7_0.c b/drivers/gpu/drm/amd/amdgpu/gmc_v7_0.c
-index 7864318..3065184 100644
---- a/drivers/gpu/drm/amd/amdgpu/gmc_v7_0.c
-+++ b/drivers/gpu/drm/amd/amdgpu/gmc_v7_0.c
-@@ -919,10 +919,6 @@ static int gmc_v7_0_sw_init(void *handle)
- int dma_bits;
- struct amdgpu_device *adev = (struct amdgpu_device *)handle;
-
-- r = amdgpu_gem_init(adev);
-- if (r)
-- return r;
--
- if (adev->flags & AMD_IS_APU) {
- adev->mc.vram_type = AMDGPU_VRAM_TYPE_UNKNOWN;
- } else {
-@@ -1010,7 +1006,7 @@ static int gmc_v7_0_sw_fini(void *handle)
- adev->vm_manager.enabled = false;
- }
- gmc_v7_0_gart_fini(adev);
-- amdgpu_gem_fini(adev);
-+ amdgpu_gem_force_release(adev);
- amdgpu_bo_fini(adev);
-
- return 0;
-diff --git a/drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c b/drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c
-index b410c32..f589e1b 100644
---- a/drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c
-+++ b/drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c
-@@ -881,10 +881,6 @@ static int gmc_v8_0_sw_init(void *handle)
- int dma_bits;
- struct amdgpu_device *adev = (struct amdgpu_device *)handle;
-
-- r = amdgpu_gem_init(adev);
-- if (r)
-- return r;
--
- if (adev->flags & AMD_IS_APU) {
- adev->mc.vram_type = AMDGPU_VRAM_TYPE_UNKNOWN;
- } else {
-@@ -978,7 +974,7 @@ static int gmc_v8_0_sw_fini(void *handle)
- adev->vm_manager.enabled = false;
- }
- gmc_v8_0_gart_fini(adev);
-- amdgpu_gem_fini(adev);
-+ amdgpu_gem_force_release(adev);
- amdgpu_bo_fini(adev);
-
- return 0;
---
-2.7.4
-