From 5d0daa21b8cf4858c366af8e91a50a1509fc790b Mon Sep 17 00:00:00 2001 From: Tom St Denis Date: Tue, 26 Apr 2016 14:23:02 -0400 Subject: [PATCH 1045/1110] drm/amd/amdgpu: Re-fix debugfs for ring entries Based on Alex's rebase patch but also cleans up the debugfs ring init function. Signed-off-by: Tom St Denis Reviewed-by: Alex Deucher --- drivers/gpu/drm/amd/amdgpu/amdgpu_ring.c | 37 +++++++++++++++++--------------- 1 file changed, 20 insertions(+), 17 deletions(-) diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ring.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ring.c index bb4ec76..3b02272 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ring.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ring.c @@ -369,9 +369,8 @@ static int amdgpu_debugfs_ring_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; - int roffset = *(int*)node->info_ent->data; + int roffset = (unsigned long)node->info_ent->data; struct amdgpu_ring *ring = (void *)(((uint8_t*)adev) + roffset); - uint32_t rptr, wptr, rptr_next; unsigned i; @@ -415,7 +414,7 @@ static int amdgpu_debugfs_ring_info(struct seq_file *m, void *data) } static struct drm_info_list amdgpu_debugfs_ring_info_list[AMDGPU_MAX_RINGS]; -static char amdgpu_debugs_ring_names[AMDGPU_MAX_RINGS][32]; +static char amdgpu_debugfs_ring_names[AMDGPU_MAX_RINGS][32]; #endif @@ -425,22 +424,26 @@ static int amdgpu_debugfs_ring_init(struct amdgpu_device *adev, #if defined(CONFIG_DEBUG_FS) unsigned offset = (uint8_t*)ring - (uint8_t*)adev; unsigned i; + struct drm_info_list *info; + char *name; for (i = 0; i < ARRAY_SIZE(amdgpu_debugfs_ring_info_list); ++i) { - struct drm_info_list *info = &amdgpu_debugfs_ring_info_list[i]; - char *name = amdgpu_debugs_ring_names[i]; - - if (!info->data) { - sprintf(name, "amdgpu_ring_%s", ring->name); - info->name = name; - info->show = amdgpu_debugfs_ring_info; - info->driver_features = 0; - info->data = (void*)(uintptr_t)offset; - } else if (info->data != (void*)(uintptr_t)offset) - continue; - - return amdgpu_debugfs_add_files(adev, info, 1); + info = &amdgpu_debugfs_ring_info_list[i]; + if (!info->data) + break; } + + if (i == ARRAY_SIZE(amdgpu_debugfs_ring_info_list)) + return -ENOSPC; + + name = &amdgpu_debugfs_ring_names[i][0]; + sprintf(name, "amdgpu_ring_%s", ring->name); + info->name = name; + info->show = amdgpu_debugfs_ring_info; + info->driver_features = 0; + info->data = (void*)(uintptr_t)offset; + + return amdgpu_debugfs_add_files(adev, info, 1); #endif - return -ENOSPC; + return 0; } -- 2.7.4