diff options
Diffstat (limited to 'meta-amdfalconx86/recipes-kernel/linux/files/1045-drm-amd-amdgpu-Re-fix-debugfs-for-ring-entries.patch')
-rw-r--r-- | meta-amdfalconx86/recipes-kernel/linux/files/1045-drm-amd-amdgpu-Re-fix-debugfs-for-ring-entries.patch | 82 |
1 files changed, 82 insertions, 0 deletions
diff --git a/meta-amdfalconx86/recipes-kernel/linux/files/1045-drm-amd-amdgpu-Re-fix-debugfs-for-ring-entries.patch b/meta-amdfalconx86/recipes-kernel/linux/files/1045-drm-amd-amdgpu-Re-fix-debugfs-for-ring-entries.patch new file mode 100644 index 00000000..fe02c865 --- /dev/null +++ b/meta-amdfalconx86/recipes-kernel/linux/files/1045-drm-amd-amdgpu-Re-fix-debugfs-for-ring-entries.patch @@ -0,0 +1,82 @@ +From 5d0daa21b8cf4858c366af8e91a50a1509fc790b Mon Sep 17 00:00:00 2001 +From: Tom St Denis <tom.stdenis@amd.com> +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 <tom.stdenis@amd.com> +Reviewed-by: Alex Deucher <alexander.deucher@amd.com> +--- + 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 + |