Am 18.01.2017 um 11:37 schrieb Pixel Ding: > From: Ding Pixel <pding at amd.com> > > Return success when the ring is properly initialized, otherwise return > failure. > > Tonga SRIOV VF doesn't have UVD and VCE engines, the initialization of > these IPs is bypassed. The system crashes if application submit IB to > their rings which are not ready to use. It could be a common issue if > IP having ring buffer is disabled for some reason on specific ASIC, so > it should check the ring being ready to use. > > Bug: amdgpu_test crashes system on Tonga VF. Good catch, we probably have problem using the second VCE ring as well. > > Signed-off-by: Ding Pixel <pding at amd.com> > --- > drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c | 6 ++++++ > 1 file changed, 6 insertions(+) > > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c > index 08dd97b..0a235b9 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c > @@ -83,6 +83,12 @@ int amdgpu_cs_get_ring(struct amdgpu_device *adev, u32 ip_type, > } > break; > } > + > + if (!(*out_ring && (*out_ring)->ready)) { Don't check ring->ready here, that member is used during GPU reset to test if we have successfully restarted the ring. Instead check if ring->adev is set, that is used in ring_init() to check if a ring is initialized or not. > + DRM_ERROR("invalid ip type: %d\n", ip_type); Please adjust the error message to something like "ring %d not initialized on IP %d\". Regards, Christian. > + return -EINVAL; > + } > + > return 0; > } >