Skip to content

Commit 787e2ce

Browse files
committed
drm/amdgpu: update ring reset function signature
Going forward, we'll need more than just the vmid. Add the guilty amdgpu_fence. Reviewed-by: Christian König <christian.koenig@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
1 parent d0c35c8 commit 787e2ce

22 files changed

Lines changed: 70 additions & 26 deletions

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -155,7 +155,7 @@ static enum drm_gpu_sched_stat amdgpu_job_timedout(struct drm_sched_job *s_job)
155155
if (is_guilty)
156156
dma_fence_set_error(&s_job->s_fence->finished, -ETIME);
157157

158-
r = amdgpu_ring_reset(ring, job->vmid);
158+
r = amdgpu_ring_reset(ring, job->vmid, NULL);
159159
if (!r) {
160160
if (amdgpu_ring_sched_ready(ring))
161161
drm_sched_stop(&ring->sched, s_job);

drivers/gpu/drm/amd/amdgpu/amdgpu_ring.h

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -268,7 +268,8 @@ struct amdgpu_ring_funcs {
268268
void (*patch_cntl)(struct amdgpu_ring *ring, unsigned offset);
269269
void (*patch_ce)(struct amdgpu_ring *ring, unsigned offset);
270270
void (*patch_de)(struct amdgpu_ring *ring, unsigned offset);
271-
int (*reset)(struct amdgpu_ring *ring, unsigned int vmid);
271+
int (*reset)(struct amdgpu_ring *ring, unsigned int vmid,
272+
struct amdgpu_fence *timedout_fence);
272273
void (*emit_cleaner_shader)(struct amdgpu_ring *ring);
273274
bool (*is_guilty)(struct amdgpu_ring *ring);
274275
};
@@ -425,7 +426,7 @@ struct amdgpu_ring {
425426
#define amdgpu_ring_patch_cntl(r, o) ((r)->funcs->patch_cntl((r), (o)))
426427
#define amdgpu_ring_patch_ce(r, o) ((r)->funcs->patch_ce((r), (o)))
427428
#define amdgpu_ring_patch_de(r, o) ((r)->funcs->patch_de((r), (o)))
428-
#define amdgpu_ring_reset(r, v) (r)->funcs->reset((r), (v))
429+
#define amdgpu_ring_reset(r, v, f) (r)->funcs->reset((r), (v), (f))
429430

430431
unsigned int amdgpu_ring_max_ibs(enum amdgpu_ring_type type);
431432
int amdgpu_ring_alloc(struct amdgpu_ring *ring, unsigned ndw);

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

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9522,7 +9522,9 @@ static void gfx_v10_ring_insert_nop(struct amdgpu_ring *ring, uint32_t num_nop)
95229522
amdgpu_ring_insert_nop(ring, num_nop - 1);
95239523
}
95249524

9525-
static int gfx_v10_0_reset_kgq(struct amdgpu_ring *ring, unsigned int vmid)
9525+
static int gfx_v10_0_reset_kgq(struct amdgpu_ring *ring,
9526+
unsigned int vmid,
9527+
struct amdgpu_fence *timedout_fence)
95269528
{
95279529
struct amdgpu_device *adev = ring->adev;
95289530
struct amdgpu_kiq *kiq = &adev->gfx.kiq[0];
@@ -9579,7 +9581,8 @@ static int gfx_v10_0_reset_kgq(struct amdgpu_ring *ring, unsigned int vmid)
95799581
}
95809582

95819583
static int gfx_v10_0_reset_kcq(struct amdgpu_ring *ring,
9582-
unsigned int vmid)
9584+
unsigned int vmid,
9585+
struct amdgpu_fence *timedout_fence)
95839586
{
95849587
struct amdgpu_device *adev = ring->adev;
95859588
struct amdgpu_kiq *kiq = &adev->gfx.kiq[0];

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

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6811,7 +6811,9 @@ static int gfx_v11_reset_gfx_pipe(struct amdgpu_ring *ring)
68116811
return 0;
68126812
}
68136813

6814-
static int gfx_v11_0_reset_kgq(struct amdgpu_ring *ring, unsigned int vmid)
6814+
static int gfx_v11_0_reset_kgq(struct amdgpu_ring *ring,
6815+
unsigned int vmid,
6816+
struct amdgpu_fence *timedout_fence)
68156817
{
68166818
struct amdgpu_device *adev = ring->adev;
68176819
int r;
@@ -6973,7 +6975,9 @@ static int gfx_v11_0_reset_compute_pipe(struct amdgpu_ring *ring)
69736975
return 0;
69746976
}
69756977

6976-
static int gfx_v11_0_reset_kcq(struct amdgpu_ring *ring, unsigned int vmid)
6978+
static int gfx_v11_0_reset_kcq(struct amdgpu_ring *ring,
6979+
unsigned int vmid,
6980+
struct amdgpu_fence *timedout_fence)
69776981
{
69786982
struct amdgpu_device *adev = ring->adev;
69796983
int r = 0;

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

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5307,7 +5307,9 @@ static int gfx_v12_reset_gfx_pipe(struct amdgpu_ring *ring)
53075307
return 0;
53085308
}
53095309

5310-
static int gfx_v12_0_reset_kgq(struct amdgpu_ring *ring, unsigned int vmid)
5310+
static int gfx_v12_0_reset_kgq(struct amdgpu_ring *ring,
5311+
unsigned int vmid,
5312+
struct amdgpu_fence *timedout_fence)
53115313
{
53125314
struct amdgpu_device *adev = ring->adev;
53135315
int r;
@@ -5421,7 +5423,9 @@ static int gfx_v12_0_reset_compute_pipe(struct amdgpu_ring *ring)
54215423
return 0;
54225424
}
54235425

5424-
static int gfx_v12_0_reset_kcq(struct amdgpu_ring *ring, unsigned int vmid)
5426+
static int gfx_v12_0_reset_kcq(struct amdgpu_ring *ring,
5427+
unsigned int vmid,
5428+
struct amdgpu_fence *timedout_fence)
54255429
{
54265430
struct amdgpu_device *adev = ring->adev;
54275431
int r;

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7172,7 +7172,8 @@ static void gfx_v9_ring_insert_nop(struct amdgpu_ring *ring, uint32_t num_nop)
71727172
}
71737173

71747174
static int gfx_v9_0_reset_kcq(struct amdgpu_ring *ring,
7175-
unsigned int vmid)
7175+
unsigned int vmid,
7176+
struct amdgpu_fence *timedout_fence)
71767177
{
71777178
struct amdgpu_device *adev = ring->adev;
71787179
struct amdgpu_kiq *kiq = &adev->gfx.kiq[0];

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3552,7 +3552,8 @@ static int gfx_v9_4_3_reset_hw_pipe(struct amdgpu_ring *ring)
35523552
}
35533553

35543554
static int gfx_v9_4_3_reset_kcq(struct amdgpu_ring *ring,
3555-
unsigned int vmid)
3555+
unsigned int vmid,
3556+
struct amdgpu_fence *timedout_fence)
35563557
{
35573558
struct amdgpu_device *adev = ring->adev;
35583559
struct amdgpu_kiq *kiq = &adev->gfx.kiq[ring->xcc_id];

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

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -764,7 +764,9 @@ static int jpeg_v2_0_process_interrupt(struct amdgpu_device *adev,
764764
return 0;
765765
}
766766

767-
static int jpeg_v2_0_ring_reset(struct amdgpu_ring *ring, unsigned int vmid)
767+
static int jpeg_v2_0_ring_reset(struct amdgpu_ring *ring,
768+
unsigned int vmid,
769+
struct amdgpu_fence *timedout_fence)
768770
{
769771
jpeg_v2_0_stop(ring->adev);
770772
jpeg_v2_0_start(ring->adev);

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

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -643,7 +643,9 @@ static int jpeg_v2_5_process_interrupt(struct amdgpu_device *adev,
643643
return 0;
644644
}
645645

646-
static int jpeg_v2_5_ring_reset(struct amdgpu_ring *ring, unsigned int vmid)
646+
static int jpeg_v2_5_ring_reset(struct amdgpu_ring *ring,
647+
unsigned int vmid,
648+
struct amdgpu_fence *timedout_fence)
647649
{
648650
jpeg_v2_5_stop_inst(ring->adev, ring->me);
649651
jpeg_v2_5_start_inst(ring->adev, ring->me);

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

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -555,7 +555,9 @@ static int jpeg_v3_0_process_interrupt(struct amdgpu_device *adev,
555555
return 0;
556556
}
557557

558-
static int jpeg_v3_0_ring_reset(struct amdgpu_ring *ring, unsigned int vmid)
558+
static int jpeg_v3_0_ring_reset(struct amdgpu_ring *ring,
559+
unsigned int vmid,
560+
struct amdgpu_fence *timedout_fence)
559561
{
560562
jpeg_v3_0_stop(ring->adev);
561563
jpeg_v3_0_start(ring->adev);

0 commit comments

Comments
 (0)