aboutsummaryrefslogtreecommitdiffstats
path: root/common/recipes-kernel/linux/files/0325-drm-amdgpu-rework-GEM-info-printing.patch
diff options
context:
space:
mode:
Diffstat (limited to 'common/recipes-kernel/linux/files/0325-drm-amdgpu-rework-GEM-info-printing.patch')
-rw-r--r--common/recipes-kernel/linux/files/0325-drm-amdgpu-rework-GEM-info-printing.patch150
1 files changed, 0 insertions, 150 deletions
diff --git a/common/recipes-kernel/linux/files/0325-drm-amdgpu-rework-GEM-info-printing.patch b/common/recipes-kernel/linux/files/0325-drm-amdgpu-rework-GEM-info-printing.patch
deleted file mode 100644
index 059de0b6..00000000
--- a/common/recipes-kernel/linux/files/0325-drm-amdgpu-rework-GEM-info-printing.patch
+++ /dev/null
@@ -1,150 +0,0 @@
-From 8c97cc2e58f806aec91a47949daf5a57c041e188 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Christian=20K=C3=B6nig?= <christian.koenig@amd.com>
-Date: Mon, 15 Feb 2016 15:23:00 +0100
-Subject: [PATCH 0325/1110] drm/amdgpu: rework GEM info printing
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Print BOs grouped per client.
-
-Signed-off-by: Christian K├Ânig <christian.koenig@amd.com>
-Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
----
- drivers/gpu/drm/amd/amdgpu/amdgpu.h | 1 -
- drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c | 94 +++++++++++++++++++++------------
- 2 files changed, 61 insertions(+), 34 deletions(-)
-
-diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu.h b/drivers/gpu/drm/amd/amdgpu/amdgpu.h
-index 9a9673c..ba66640 100644
---- a/drivers/gpu/drm/amd/amdgpu/amdgpu.h
-+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu.h
-@@ -493,7 +493,6 @@ struct amdgpu_bo {
- struct amdgpu_bo *parent;
-
- struct ttm_bo_kmap_obj dma_buf_vmap;
-- pid_t pid;
- struct amdgpu_mn *mn;
- struct list_head mn_list;
- };
-diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c
-index 86ce4f3..c44905a 100644
---- a/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c
-+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c
-@@ -83,7 +83,6 @@ retry:
- return r;
- }
- *obj = &robj->gem_base;
-- robj->pid = task_pid_nr(current);
-
- mutex_lock(&adev->gem.mutex);
- list_add_tail(&robj->list, &adev->gem.objects);
-@@ -695,44 +694,73 @@ int amdgpu_mode_dumb_create(struct drm_file *file_priv,
- }
-
- #if defined(CONFIG_DEBUG_FS)
-+static int amdgpu_debugfs_gem_bo_info(int id, void *ptr, void *data)
-+{
-+ struct drm_gem_object *gobj = ptr;
-+ struct amdgpu_bo *bo = gem_to_amdgpu_bo(gobj);
-+ struct seq_file *m = data;
-+
-+ unsigned domain;
-+ const char *placement;
-+ unsigned pin_count;
-+
-+ domain = amdgpu_mem_type_to_domain(bo->tbo.mem.mem_type);
-+ switch (domain) {
-+ case AMDGPU_GEM_DOMAIN_VRAM:
-+ placement = "VRAM";
-+ break;
-+ case AMDGPU_GEM_DOMAIN_GTT:
-+ placement = " GTT";
-+ break;
-+ case AMDGPU_GEM_DOMAIN_CPU:
-+ default:
-+ placement = " CPU";
-+ break;
-+ }
-+ seq_printf(m, "\t0x%08x: %12ld byte %s @ 0x%010Lx",
-+ id, amdgpu_bo_size(bo), placement,
-+ amdgpu_bo_gpu_offset(bo));
-+
-+ pin_count = ACCESS_ONCE(bo->pin_count);
-+ if (pin_count)
-+ seq_printf(m, " pin count %d", pin_count);
-+ seq_printf(m, "\n");
-+
-+ return 0;
-+}
-+
- static int amdgpu_debugfs_gem_info(struct seq_file *m, void *data)
- {
- struct drm_info_node *node = (struct drm_info_node *)m->private;
- struct drm_device *dev = node->minor->dev;
-- struct amdgpu_device *adev = dev->dev_private;
-- struct amdgpu_bo *rbo;
-- unsigned i = 0;
-+ struct drm_file *file;
-+ int r;
-
-- mutex_lock(&adev->gem.mutex);
-- list_for_each_entry(rbo, &adev->gem.objects, list) {
-- unsigned pin_count;
-- unsigned domain;
-- const char *placement;
--
-- domain = amdgpu_mem_type_to_domain(rbo->tbo.mem.mem_type);
-- switch (domain) {
-- case AMDGPU_GEM_DOMAIN_VRAM:
-- placement = "VRAM";
-- break;
-- case AMDGPU_GEM_DOMAIN_GTT:
-- placement = " GTT";
-- break;
-- case AMDGPU_GEM_DOMAIN_CPU:
-- default:
-- placement = " CPU";
-- break;
-- }
-- seq_printf(m, "bo[0x%08x] %12ld %s @ 0x%010Lx pid %8d",
-- i, amdgpu_bo_size(rbo), placement,
-- amdgpu_bo_gpu_offset(rbo), rbo->pid);
--
-- pin_count = ACCESS_ONCE(rbo->pin_count);
-- if (pin_count)
-- seq_printf(m, " pin count %d", pin_count);
-- seq_printf(m, "\n");
-- i++;
-+ r = mutex_lock_interruptible(&dev->struct_mutex);
-+ if (r)
-+ return r;
-+
-+ list_for_each_entry(file, &dev->filelist, lhead) {
-+ struct task_struct *task;
-+
-+ /*
-+ * Although we have a valid reference on file->pid, that does
-+ * not guarantee that the task_struct who called get_pid() is
-+ * still alive (e.g. get_pid(current) => fork() => exit()).
-+ * Therefore, we need to protect this ->comm access using RCU.
-+ */
-+ rcu_read_lock();
-+ task = pid_task(file->pid, PIDTYPE_PID);
-+ seq_printf(m, "pid %8d command %s:\n", pid_nr(file->pid),
-+ task ? task->comm : "<unknown>");
-+ rcu_read_unlock();
-+
-+ spin_lock(&file->table_lock);
-+ idr_for_each(&file->object_idr, amdgpu_debugfs_gem_bo_info, m);
-+ spin_unlock(&file->table_lock);
- }
-- mutex_unlock(&adev->gem.mutex);
-+
-+ mutex_unlock(&dev->struct_mutex);
- return 0;
- }
-
---
-2.7.4
-