Am 11.05.2017 um 09:35 schrieb Huang Rui:
On Thu, May 11, 2017 at 02:41:56PM +0800, Christian König wrote:
Am 11.05.2017 um 07:42 schrieb Huang Rui:
Signed-off-by: Huang Rui <ray.hu...@amd.com>
---
V1 -> V2:
- park the scheduler thread for each ring to avoid conflict with commands
from
active apps.
---
drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 50
++++++++++++++++++++++++++++--
1 file changed, 48 insertions(+), 2 deletions(-)
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c b/drivers/gpu/drm/amd
/amdgpu/amdgpu_device.c
index 19ac196..04a63b5 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
@@ -3643,14 +3643,60 @@ static int amdgpu_debugfs_test_ib(struct seq_file *m,
void *data)
return 0;
}
+static int amdgpu_ring_tests(struct amdgpu_device *adev)
+{
+ unsigned i;
+ int r = 0;
+
+ for (i = 0; i < AMDGPU_MAX_RINGS; ++i) {
+ struct amdgpu_ring *ring = adev->rings[i];
+
+ if (!ring || !ring->ready || !ring->sched.thread)
+ continue;
+
+ /* hold on the scheduler */
+ kthread_park(ring->sched.thread);
+
+ r = amdgpu_ring_test_ring(ring);
+ if (r) {
+ ring->ready = false;
Don't mess with the ready flag here.
+ DRM_ERROR("amdgpu: failed to test ring %d (%d).\n",
+ i, r);
+ }
+
+ /* go on the scheduler */
+ kthread_unpark(ring->sched.thread);
+ }
+
+ return r;
+}
+
+static int amdgpu_debugfs_test_ring(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 r = 0;
+
+ seq_printf(m, "run ring test:\n");
+ r = amdgpu_ring_tests(adev);
Why a separate function for this?
I think it might be re-used by other side in future.
Well in this case we should create the function when we actually use it
and not just because a possible use some times in the future.
Additional to that I agree with Dave that when we have the IB test the
ring test is not necessary any more.
We just do this on boot/resume separately to be able to narrow down
problems faster when we see in the logs that one fails but the other
succeeds.
Yeah, you know, we only want to expose ib test orignally. When I write that
codes, I found the ring tests are also able to re-use the debugfs list. :)
Is there anything that might break the ring at runtime? If not, I can drop
this patch.
Yeah, the ring tests messes with the ready flags, so I would rather drop
this patch.
Christian.
Thanks,
Rui
_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx