On 2017å¹´05æ??11æ?¥ 10:41, Deucher, Alexander wrote: > > -----Original Message----- > > From: Deucher, Alexander > > Sent: Wednesday, May 10, 2017 10:38 PM > > To: Huang, Ray; amd-gfx at lists.freedesktop.org; Koenig, Christian > > Cc: Zhou, David(ChunMing); Wang, Ken; Huan, Alvin; Huang, Ray > > Subject: RE: [PATCH 2/2] drm/amdgpu: export test ring debugfs interface > > > > > -----Original Message----- > > > From: Huang Rui [mailto:ray.huang at amd.com] > > > Sent: Wednesday, May 10, 2017 10:29 PM > > > To: amd-gfx at lists.freedesktop.org; Deucher, Alexander; Koenig, > Christian > > > Cc: Zhou, David(ChunMing); Wang, Ken; Huan, Alvin; Huang, Ray > > > Subject: [PATCH 2/2] drm/amdgpu: export test ring debugfs interface > > > > > > Signed-off-by: Huang Rui <ray.huang at amd.com> > > > > Reviewed-by: Alex Deucher <alexander.deucher at amd.com> > > Not sure if it's important for this since it's debugfs, but we don't > have any sort of ring locks anymore (since everything should go > through the scheduler once it's started) so we could theoretically get > collisions if there are active apps using the GPU and you run these tests. Yes, agree. So patch#1 for ib test should use scheduler, but which could be a big change and Christian doesn't like to use scheduler for ib test case, consider this is only for test case, the problem isn't big:). btw: I think patch#2 isn't need if patch#1 is landed, since when you use this sys interface, the amdgpu driver must be loaded successfully, ring test is meaningless. Regards, David Zhou > > Alex > > > > > > --- > > > drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 44 > > > ++++++++++++++++++++++++++++-- > > > 1 file changed, 42 insertions(+), 2 deletions(-) > > > > > > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c > > > b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c > > > index 7becf11..3637396 100644 > > > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c > > > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c > > > @@ -3625,14 +3625,54 @@ 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) > > > + continue; > > > + > > > + r = amdgpu_ring_test_ring(ring); > > > + if (r) { > > > + ring->ready = false; > > > + DRM_ERROR("amdgpu: failed to test ring %d > > > (%d).\n", > > > + i, r); > > > + } > > > + } > > > + > > > + 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); > > > + if (r) > > > + seq_printf(m, "ring tests failed (%d).\n", r); > > > + else > > > + seq_printf(m, "ring tests passed.\n"); > > > + > > > + return 0; > > > +} > > > + > > > static const struct drm_info_list > amdgpu_debugfs_test_ib_ring_list[] = { > > > - {"amdgpu_test_ib", &amdgpu_debugfs_test_ib} > > > + {"amdgpu_test_ib", &amdgpu_debugfs_test_ib}, > > > + {"amdgpu_test_ring", &amdgpu_debugfs_test_ring} > > > }; > > > > > > static int amdgpu_debugfs_test_ib_ring_init(struct amdgpu_device > > *adev) > > > { > > > return amdgpu_debugfs_add_files(adev, > > > - amdgpu_debugfs_test_ib_ring_list, > > > 1); > > > + amdgpu_debugfs_test_ib_ring_list, > > > 2); > > > } > > > > > > int amdgpu_debugfs_init(struct drm_minor *minor) > > > -- > > > 2.7.4 > -------------- next part -------------- An HTML attachment was scrubbed... URL: <https://lists.freedesktop.org/archives/amd-gfx/attachments/20170511/1da9d1dd/attachment.html>