[PATCH] drm/amd/amdgpu: Fix amdgpu_debugfs_gpr_read()

Tom St Denis tom.stdenis at amd.com
Wed Nov 29 12:04:37 UTC 2017


The callback functions always write to the start of
the array.  The 'offset' parameter instructs
the callbacks the offset into the registers to start
reading from.  So we always copy from the temporary buffer
starting at offset 0.

Signed-off-by: Tom St Denis <tom.stdenis at amd.com>
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
index 48e892e57368..544d18a1fefb 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
@@ -3800,7 +3800,7 @@ static ssize_t amdgpu_debugfs_gpr_read(struct file *f, char __user *buf,
 	struct amdgpu_device *adev = f->f_inode->i_private;
 	int r;
 	ssize_t result = 0;
-	uint32_t offset, se, sh, cu, wave, simd, thread, bank, *data;
+	uint32_t x, offset, se, sh, cu, wave, simd, thread, bank, *data;
 
 	if (size & 3 || *pos & 3)
 		return -EINVAL;
@@ -3834,10 +3834,11 @@ static ssize_t amdgpu_debugfs_gpr_read(struct file *f, char __user *buf,
 	amdgpu_gfx_select_se_sh(adev, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF);
 	mutex_unlock(&adev->grbm_idx_mutex);
 
+	x = 0;
 	while (size) {
 		uint32_t value;
 
-		value = data[offset++];
+		value = data[x++];
 		r = put_user(value, (uint32_t *)buf);
 		if (r) {
 			result = r;
-- 
2.12.0



More information about the amd-gfx mailing list