Skip to content

Commit 09e24a0

Browse files
pldrcalexdeucher
authored andcommitted
drm/amdgpu: Add ring reset callback for JPEG2_5_0
Add ring reset function callback for JPEG2_5_0 to recover from job timeouts without a full gpu reset. Signed-off-by: Sathishkumar S <sathishkumar.sundararaju@amd.com> Acked-by: Christian König <christian.koenig@amd.com> Reviewed-by: Leo Liu <leo.liu@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
1 parent cb493ae commit 09e24a0

File tree

1 file changed

+15
-1
lines changed

1 file changed

+15
-1
lines changed

drivers/gpu/drm/amd/amdgpu/jpeg_v2_5.c

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -167,7 +167,10 @@ static int jpeg_v2_5_sw_init(struct amdgpu_ip_block *ip_block)
167167
if (r)
168168
return r;
169169

170-
return 0;
170+
adev->jpeg.supported_reset = AMDGPU_RESET_TYPE_PER_QUEUE;
171+
r = amdgpu_jpeg_sysfs_reset_mask_init(adev);
172+
173+
return r;
171174
}
172175

173176
/**
@@ -186,6 +189,8 @@ static int jpeg_v2_5_sw_fini(struct amdgpu_ip_block *ip_block)
186189
if (r)
187190
return r;
188191

192+
amdgpu_jpeg_sysfs_reset_mask_fini(adev);
193+
189194
r = amdgpu_jpeg_sw_fini(adev);
190195

191196
return r;
@@ -638,6 +643,13 @@ static int jpeg_v2_5_process_interrupt(struct amdgpu_device *adev,
638643
return 0;
639644
}
640645

646+
static int jpeg_v2_5_ring_reset(struct amdgpu_ring *ring, unsigned int vmid)
647+
{
648+
jpeg_v2_5_stop_inst(ring->adev, ring->me);
649+
jpeg_v2_5_start_inst(ring->adev, ring->me);
650+
return amdgpu_ring_test_helper(ring);
651+
}
652+
641653
static const struct amd_ip_funcs jpeg_v2_5_ip_funcs = {
642654
.name = "jpeg_v2_5",
643655
.early_init = jpeg_v2_5_early_init,
@@ -700,6 +712,7 @@ static const struct amdgpu_ring_funcs jpeg_v2_5_dec_ring_vm_funcs = {
700712
.emit_wreg = jpeg_v2_0_dec_ring_emit_wreg,
701713
.emit_reg_wait = jpeg_v2_0_dec_ring_emit_reg_wait,
702714
.emit_reg_write_reg_wait = amdgpu_ring_emit_reg_write_reg_wait_helper,
715+
.reset = jpeg_v2_5_ring_reset,
703716
};
704717

705718
static const struct amdgpu_ring_funcs jpeg_v2_6_dec_ring_vm_funcs = {
@@ -730,6 +743,7 @@ static const struct amdgpu_ring_funcs jpeg_v2_6_dec_ring_vm_funcs = {
730743
.emit_wreg = jpeg_v2_0_dec_ring_emit_wreg,
731744
.emit_reg_wait = jpeg_v2_0_dec_ring_emit_reg_wait,
732745
.emit_reg_write_reg_wait = amdgpu_ring_emit_reg_write_reg_wait_helper,
746+
.reset = jpeg_v2_5_ring_reset,
733747
};
734748

735749
static void jpeg_v2_5_set_dec_ring_funcs(struct amdgpu_device *adev)

0 commit comments

Comments
 (0)