Skip to content

Commit c68cbbf

Browse files
ChristianKoenigAMDalexdeucher
authored andcommitted
drm/amdgpu: cleanup conditional execution
First of all calculating the number of dw to patch into a conditional execution is not something HW generation specific. This is just standard ring buffer calculations. While at it also reduce the BUG_ON() into WARN_ON(). Then instead of a random bit pattern use 0 as default value for the number of dw skipped, this way it's not mandatory any more to patch the conditional execution. And last make the address to check a parameter of the conditional execution instead of getting this from the ring. Signed-off-by: Christian König <[email protected]> Reviewed-by: Alex Deucher <[email protected]> Signed-off-by: Alex Deucher <[email protected]>
1 parent 86e14a7 commit c68cbbf

File tree

11 files changed

+99
-184
lines changed

11 files changed

+99
-184
lines changed

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

Lines changed: 7 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -131,18 +131,18 @@ int amdgpu_ib_schedule(struct amdgpu_ring *ring, unsigned int num_ibs,
131131
struct amdgpu_ib *ib = &ibs[0];
132132
struct dma_fence *tmp = NULL;
133133
bool need_ctx_switch;
134-
unsigned int patch_offset = ~0;
135134
struct amdgpu_vm *vm;
136135
uint64_t fence_ctx;
137136
uint32_t status = 0, alloc_size;
138137
unsigned int fence_flags = 0;
139138
bool secure, init_shadow;
140139
u64 shadow_va, csa_va, gds_va;
141140
int vmid = AMDGPU_JOB_GET_VMID(job);
141+
bool need_pipe_sync = false;
142+
unsigned int cond_exec;
142143

143144
unsigned int i;
144145
int r = 0;
145-
bool need_pipe_sync = false;
146146

147147
if (num_ibs == 0)
148148
return -EINVAL;
@@ -228,7 +228,8 @@ int amdgpu_ib_schedule(struct amdgpu_ring *ring, unsigned int num_ibs,
228228
init_shadow, vmid);
229229

230230
if (ring->funcs->init_cond_exec)
231-
patch_offset = amdgpu_ring_init_cond_exec(ring);
231+
cond_exec = amdgpu_ring_init_cond_exec(ring,
232+
ring->cond_exe_gpu_addr);
232233

233234
amdgpu_device_flush_hdp(adev, ring);
234235

@@ -278,16 +279,9 @@ int amdgpu_ib_schedule(struct amdgpu_ring *ring, unsigned int num_ibs,
278279
fence_flags | AMDGPU_FENCE_FLAG_64BIT);
279280
}
280281

281-
if (ring->funcs->emit_gfx_shadow) {
282+
if (ring->funcs->emit_gfx_shadow && ring->funcs->init_cond_exec) {
282283
amdgpu_ring_emit_gfx_shadow(ring, 0, 0, 0, false, 0);
283-
284-
if (ring->funcs->init_cond_exec) {
285-
unsigned int ce_offset = ~0;
286-
287-
ce_offset = amdgpu_ring_init_cond_exec(ring);
288-
if (ce_offset != ~0 && ring->funcs->patch_cond_exec)
289-
amdgpu_ring_patch_cond_exec(ring, ce_offset);
290-
}
284+
amdgpu_ring_init_cond_exec(ring, ring->cond_exe_gpu_addr);
291285
}
292286

293287
r = amdgpu_fence_emit(ring, f, job, fence_flags);
@@ -302,8 +296,7 @@ int amdgpu_ib_schedule(struct amdgpu_ring *ring, unsigned int num_ibs,
302296
if (ring->funcs->insert_end)
303297
ring->funcs->insert_end(ring);
304298

305-
if (patch_offset != ~0 && ring->funcs->patch_cond_exec)
306-
amdgpu_ring_patch_cond_exec(ring, patch_offset);
299+
amdgpu_ring_patch_cond_exec(ring, cond_exec);
307300

308301
ring->current_ctx = fence_ctx;
309302
if (vm && ring->funcs->emit_switch_buffer)

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

Lines changed: 26 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -209,8 +209,7 @@ struct amdgpu_ring_funcs {
209209
void (*insert_end)(struct amdgpu_ring *ring);
210210
/* pad the indirect buffer to the necessary number of dw */
211211
void (*pad_ib)(struct amdgpu_ring *ring, struct amdgpu_ib *ib);
212-
unsigned (*init_cond_exec)(struct amdgpu_ring *ring);
213-
void (*patch_cond_exec)(struct amdgpu_ring *ring, unsigned offset);
212+
unsigned (*init_cond_exec)(struct amdgpu_ring *ring, uint64_t addr);
214213
/* note usage for clock and power gating */
215214
void (*begin_use)(struct amdgpu_ring *ring);
216215
void (*end_use)(struct amdgpu_ring *ring);
@@ -327,8 +326,7 @@ struct amdgpu_ring {
327326
#define amdgpu_ring_emit_reg_write_reg_wait(r, d0, d1, v, m) (r)->funcs->emit_reg_write_reg_wait((r), (d0), (d1), (v), (m))
328327
#define amdgpu_ring_emit_frame_cntl(r, b, s) (r)->funcs->emit_frame_cntl((r), (b), (s))
329328
#define amdgpu_ring_pad_ib(r, ib) ((r)->funcs->pad_ib((r), (ib)))
330-
#define amdgpu_ring_init_cond_exec(r) (r)->funcs->init_cond_exec((r))
331-
#define amdgpu_ring_patch_cond_exec(r,o) (r)->funcs->patch_cond_exec((r),(o))
329+
#define amdgpu_ring_init_cond_exec(r, a) (r)->funcs->init_cond_exec((r), (a))
332330
#define amdgpu_ring_preempt_ib(r) (r)->funcs->preempt_ib(r)
333331
#define amdgpu_ring_patch_cntl(r, o) ((r)->funcs->patch_cntl((r), (o)))
334332
#define amdgpu_ring_patch_ce(r, o) ((r)->funcs->patch_ce((r), (o)))
@@ -411,6 +409,30 @@ static inline void amdgpu_ring_write_multiple(struct amdgpu_ring *ring,
411409
ring->count_dw -= count_dw;
412410
}
413411

412+
/**
413+
* amdgpu_ring_patch_cond_exec - patch dw count of conditional execute
414+
* @ring: amdgpu_ring structure
415+
* @offset: offset returned by amdgpu_ring_init_cond_exec
416+
*
417+
* Calculate the dw count and patch it into a cond_exec command.
418+
*/
419+
static inline void amdgpu_ring_patch_cond_exec(struct amdgpu_ring *ring,
420+
unsigned int offset)
421+
{
422+
unsigned cur;
423+
424+
if (!ring->funcs->init_cond_exec)
425+
return;
426+
427+
WARN_ON(offset > ring->buf_mask);
428+
WARN_ON(ring->ring[offset] != 0);
429+
430+
cur = (ring->wptr - 1) & ring->buf_mask;
431+
if (cur < offset)
432+
cur += ring->ring_size >> 2;
433+
ring->ring[offset] = cur - offset;
434+
}
435+
414436
#define amdgpu_mes_ctx_get_offs_gpu_addr(ring, offset) \
415437
(ring->is_mes_queue && ring->mes_ctx ? \
416438
(ring->mes_ctx->meta_data_gpu_addr + offset) : 0)

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

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -658,7 +658,7 @@ int amdgpu_vm_flush(struct amdgpu_ring *ring, struct amdgpu_job *job,
658658
bool vm_flush_needed = job->vm_needs_flush;
659659
struct dma_fence *fence = NULL;
660660
bool pasid_mapping_needed = false;
661-
unsigned patch_offset = 0;
661+
unsigned int patch;
662662
int r;
663663

664664
if (amdgpu_vmid_had_gpu_reset(adev, id)) {
@@ -685,7 +685,8 @@ int amdgpu_vm_flush(struct amdgpu_ring *ring, struct amdgpu_job *job,
685685

686686
amdgpu_ring_ib_begin(ring);
687687
if (ring->funcs->init_cond_exec)
688-
patch_offset = amdgpu_ring_init_cond_exec(ring);
688+
patch = amdgpu_ring_init_cond_exec(ring,
689+
ring->cond_exe_gpu_addr);
689690

690691
if (need_pipe_sync)
691692
amdgpu_ring_emit_pipeline_sync(ring);
@@ -733,8 +734,7 @@ int amdgpu_vm_flush(struct amdgpu_ring *ring, struct amdgpu_job *job,
733734
}
734735
dma_fence_put(fence);
735736

736-
if (ring->funcs->patch_cond_exec)
737-
amdgpu_ring_patch_cond_exec(ring, patch_offset);
737+
amdgpu_ring_patch_cond_exec(ring, patch);
738738

739739
/* the double SWITCH_BUFFER here *cannot* be skipped by COND_EXEC */
740740
if (ring->funcs->emit_switch_buffer) {

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

Lines changed: 6 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -546,34 +546,21 @@ static void vpe_ring_emit_vm_flush(struct amdgpu_ring *ring, unsigned int vmid,
546546
amdgpu_gmc_emit_flush_gpu_tlb(ring, vmid, pd_addr);
547547
}
548548

549-
static unsigned int vpe_ring_init_cond_exec(struct amdgpu_ring *ring)
549+
static unsigned int vpe_ring_init_cond_exec(struct amdgpu_ring *ring,
550+
uint64_t addr)
550551
{
551552
unsigned int ret;
552553

553554
amdgpu_ring_write(ring, VPE_CMD_HEADER(VPE_CMD_OPCODE_COND_EXE, 0));
554-
amdgpu_ring_write(ring, lower_32_bits(ring->cond_exe_gpu_addr));
555-
amdgpu_ring_write(ring, upper_32_bits(ring->cond_exe_gpu_addr));
555+
amdgpu_ring_write(ring, lower_32_bits(addr));
556+
amdgpu_ring_write(ring, upper_32_bits(addr));
556557
amdgpu_ring_write(ring, 1);
557-
ret = ring->wptr & ring->buf_mask;/* this is the offset we need patch later */
558-
amdgpu_ring_write(ring, 0x55aa55aa);/* insert dummy here and patch it later */
558+
ret = ring->wptr & ring->buf_mask;
559+
amdgpu_ring_write(ring, 0);
559560

560561
return ret;
561562
}
562563

563-
static void vpe_ring_patch_cond_exec(struct amdgpu_ring *ring, unsigned int offset)
564-
{
565-
unsigned int cur;
566-
567-
WARN_ON_ONCE(offset > ring->buf_mask);
568-
WARN_ON_ONCE(ring->ring[offset] != 0x55aa55aa);
569-
570-
cur = (ring->wptr - 1) & ring->buf_mask;
571-
if (cur > offset)
572-
ring->ring[offset] = cur - offset;
573-
else
574-
ring->ring[offset] = (ring->buf_mask + 1) - offset + cur;
575-
}
576-
577564
static int vpe_ring_preempt_ib(struct amdgpu_ring *ring)
578565
{
579566
struct amdgpu_device *adev = ring->adev;
@@ -864,7 +851,6 @@ static const struct amdgpu_ring_funcs vpe_ring_funcs = {
864851
.test_ring = vpe_ring_test_ring,
865852
.test_ib = vpe_ring_test_ib,
866853
.init_cond_exec = vpe_ring_init_cond_exec,
867-
.patch_cond_exec = vpe_ring_patch_cond_exec,
868854
.preempt_ib = vpe_ring_preempt_ib,
869855
.begin_use = vpe_ring_begin_use,
870856
.end_use = vpe_ring_end_use,

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

Lines changed: 8 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -8542,34 +8542,23 @@ static void gfx_v10_0_ring_emit_cntxcntl(struct amdgpu_ring *ring,
85428542
amdgpu_ring_write(ring, 0);
85438543
}
85448544

8545-
static unsigned int gfx_v10_0_ring_emit_init_cond_exec(struct amdgpu_ring *ring)
8545+
static unsigned int gfx_v10_0_ring_emit_init_cond_exec(struct amdgpu_ring *ring,
8546+
uint64_t addr)
85468547
{
85478548
unsigned int ret;
85488549

85498550
amdgpu_ring_write(ring, PACKET3(PACKET3_COND_EXEC, 3));
8550-
amdgpu_ring_write(ring, lower_32_bits(ring->cond_exe_gpu_addr));
8551-
amdgpu_ring_write(ring, upper_32_bits(ring->cond_exe_gpu_addr));
8552-
amdgpu_ring_write(ring, 0); /* discard following DWs if *cond_exec_gpu_addr==0 */
8551+
amdgpu_ring_write(ring, lower_32_bits(addr));
8552+
amdgpu_ring_write(ring, upper_32_bits(addr));
8553+
/* discard following DWs if *cond_exec_gpu_addr==0 */
8554+
amdgpu_ring_write(ring, 0);
85538555
ret = ring->wptr & ring->buf_mask;
8554-
amdgpu_ring_write(ring, 0x55aa55aa); /* patch dummy value later */
8556+
/* patch dummy value later */
8557+
amdgpu_ring_write(ring, 0);
85558558

85568559
return ret;
85578560
}
85588561

8559-
static void gfx_v10_0_ring_emit_patch_cond_exec(struct amdgpu_ring *ring, unsigned int offset)
8560-
{
8561-
unsigned int cur;
8562-
8563-
BUG_ON(offset > ring->buf_mask);
8564-
BUG_ON(ring->ring[offset] != 0x55aa55aa);
8565-
8566-
cur = (ring->wptr - 1) & ring->buf_mask;
8567-
if (likely(cur > offset))
8568-
ring->ring[offset] = cur - offset;
8569-
else
8570-
ring->ring[offset] = (ring->buf_mask + 1) - offset + cur;
8571-
}
8572-
85738562
static int gfx_v10_0_ring_preempt_ib(struct amdgpu_ring *ring)
85748563
{
85758564
int i, r = 0;
@@ -9224,7 +9213,6 @@ static const struct amdgpu_ring_funcs gfx_v10_0_ring_funcs_gfx = {
92249213
.emit_switch_buffer = gfx_v10_0_ring_emit_sb,
92259214
.emit_cntxcntl = gfx_v10_0_ring_emit_cntxcntl,
92269215
.init_cond_exec = gfx_v10_0_ring_emit_init_cond_exec,
9227-
.patch_cond_exec = gfx_v10_0_ring_emit_patch_cond_exec,
92289216
.preempt_ib = gfx_v10_0_ring_preempt_ib,
92299217
.emit_frame_cntl = gfx_v10_0_ring_emit_frame_cntl,
92309218
.emit_wreg = gfx_v10_0_ring_emit_wreg,

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

Lines changed: 8 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -5533,33 +5533,23 @@ static void gfx_v11_0_ring_emit_gfx_shadow(struct amdgpu_ring *ring,
55335533
PACKET3_SET_Q_PREEMPTION_MODE_INIT_SHADOW_MEM : 0);
55345534
}
55355535

5536-
static unsigned gfx_v11_0_ring_emit_init_cond_exec(struct amdgpu_ring *ring)
5536+
static unsigned gfx_v11_0_ring_emit_init_cond_exec(struct amdgpu_ring *ring,
5537+
uint64_t addr)
55375538
{
55385539
unsigned ret;
55395540

55405541
amdgpu_ring_write(ring, PACKET3(PACKET3_COND_EXEC, 3));
5541-
amdgpu_ring_write(ring, lower_32_bits(ring->cond_exe_gpu_addr));
5542-
amdgpu_ring_write(ring, upper_32_bits(ring->cond_exe_gpu_addr));
5543-
amdgpu_ring_write(ring, 0); /* discard following DWs if *cond_exec_gpu_addr==0 */
5542+
amdgpu_ring_write(ring, lower_32_bits(addr));
5543+
amdgpu_ring_write(ring, upper_32_bits(addr));
5544+
/* discard following DWs if *cond_exec_gpu_addr==0 */
5545+
amdgpu_ring_write(ring, 0);
55445546
ret = ring->wptr & ring->buf_mask;
5545-
amdgpu_ring_write(ring, 0x55aa55aa); /* patch dummy value later */
5547+
/* patch dummy value later */
5548+
amdgpu_ring_write(ring, 0);
55465549

55475550
return ret;
55485551
}
55495552

5550-
static void gfx_v11_0_ring_emit_patch_cond_exec(struct amdgpu_ring *ring, unsigned offset)
5551-
{
5552-
unsigned cur;
5553-
BUG_ON(offset > ring->buf_mask);
5554-
BUG_ON(ring->ring[offset] != 0x55aa55aa);
5555-
5556-
cur = (ring->wptr - 1) & ring->buf_mask;
5557-
if (likely(cur > offset))
5558-
ring->ring[offset] = cur - offset;
5559-
else
5560-
ring->ring[offset] = (ring->buf_mask + 1) - offset + cur;
5561-
}
5562-
55635553
static int gfx_v11_0_ring_preempt_ib(struct amdgpu_ring *ring)
55645554
{
55655555
int i, r = 0;
@@ -6153,7 +6143,6 @@ static const struct amdgpu_ring_funcs gfx_v11_0_ring_funcs_gfx = {
61536143
.emit_cntxcntl = gfx_v11_0_ring_emit_cntxcntl,
61546144
.emit_gfx_shadow = gfx_v11_0_ring_emit_gfx_shadow,
61556145
.init_cond_exec = gfx_v11_0_ring_emit_init_cond_exec,
6156-
.patch_cond_exec = gfx_v11_0_ring_emit_patch_cond_exec,
61576146
.preempt_ib = gfx_v11_0_ring_preempt_ib,
61586147
.emit_frame_cntl = gfx_v11_0_ring_emit_frame_cntl,
61596148
.emit_wreg = gfx_v11_0_ring_emit_wreg,

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

Lines changed: 8 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -6326,33 +6326,22 @@ static void gfx_v8_ring_emit_cntxcntl(struct amdgpu_ring *ring, uint32_t flags)
63266326
amdgpu_ring_write(ring, 0);
63276327
}
63286328

6329-
static unsigned gfx_v8_0_ring_emit_init_cond_exec(struct amdgpu_ring *ring)
6329+
static unsigned gfx_v8_0_ring_emit_init_cond_exec(struct amdgpu_ring *ring,
6330+
uint64_t addr)
63306331
{
63316332
unsigned ret;
63326333

63336334
amdgpu_ring_write(ring, PACKET3(PACKET3_COND_EXEC, 3));
6334-
amdgpu_ring_write(ring, lower_32_bits(ring->cond_exe_gpu_addr));
6335-
amdgpu_ring_write(ring, upper_32_bits(ring->cond_exe_gpu_addr));
6336-
amdgpu_ring_write(ring, 0); /* discard following DWs if *cond_exec_gpu_addr==0 */
6335+
amdgpu_ring_write(ring, lower_32_bits(addr));
6336+
amdgpu_ring_write(ring, upper_32_bits(addr));
6337+
/* discard following DWs if *cond_exec_gpu_addr==0 */
6338+
amdgpu_ring_write(ring, 0);
63376339
ret = ring->wptr & ring->buf_mask;
6338-
amdgpu_ring_write(ring, 0x55aa55aa); /* patch dummy value later */
6340+
/* patch dummy value later */
6341+
amdgpu_ring_write(ring, 0);
63396342
return ret;
63406343
}
63416344

6342-
static void gfx_v8_0_ring_emit_patch_cond_exec(struct amdgpu_ring *ring, unsigned offset)
6343-
{
6344-
unsigned cur;
6345-
6346-
BUG_ON(offset > ring->buf_mask);
6347-
BUG_ON(ring->ring[offset] != 0x55aa55aa);
6348-
6349-
cur = (ring->wptr & ring->buf_mask) - 1;
6350-
if (likely(cur > offset))
6351-
ring->ring[offset] = cur - offset;
6352-
else
6353-
ring->ring[offset] = (ring->ring_size >> 2) - offset + cur;
6354-
}
6355-
63566345
static void gfx_v8_0_ring_emit_rreg(struct amdgpu_ring *ring, uint32_t reg,
63576346
uint32_t reg_val_offs)
63586347
{
@@ -6932,7 +6921,6 @@ static const struct amdgpu_ring_funcs gfx_v8_0_ring_funcs_gfx = {
69326921
.emit_switch_buffer = gfx_v8_ring_emit_sb,
69336922
.emit_cntxcntl = gfx_v8_ring_emit_cntxcntl,
69346923
.init_cond_exec = gfx_v8_0_ring_emit_init_cond_exec,
6935-
.patch_cond_exec = gfx_v8_0_ring_emit_patch_cond_exec,
69366924
.emit_wreg = gfx_v8_0_ring_emit_wreg,
69376925
.soft_recovery = gfx_v8_0_ring_soft_recovery,
69386926
.emit_mem_sync = gfx_v8_0_emit_mem_sync,

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

Lines changed: 8 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -5610,31 +5610,21 @@ static void gfx_v9_ring_emit_cntxcntl(struct amdgpu_ring *ring, uint32_t flags)
56105610
amdgpu_ring_write(ring, 0);
56115611
}
56125612

5613-
static unsigned gfx_v9_0_ring_emit_init_cond_exec(struct amdgpu_ring *ring)
5613+
static unsigned gfx_v9_0_ring_emit_init_cond_exec(struct amdgpu_ring *ring,
5614+
uint64_t addr)
56145615
{
56155616
unsigned ret;
56165617
amdgpu_ring_write(ring, PACKET3(PACKET3_COND_EXEC, 3));
5617-
amdgpu_ring_write(ring, lower_32_bits(ring->cond_exe_gpu_addr));
5618-
amdgpu_ring_write(ring, upper_32_bits(ring->cond_exe_gpu_addr));
5619-
amdgpu_ring_write(ring, 0); /* discard following DWs if *cond_exec_gpu_addr==0 */
5618+
amdgpu_ring_write(ring, lower_32_bits(addr));
5619+
amdgpu_ring_write(ring, upper_32_bits(addr));
5620+
/* discard following DWs if *cond_exec_gpu_addr==0 */
5621+
amdgpu_ring_write(ring, 0);
56205622
ret = ring->wptr & ring->buf_mask;
5621-
amdgpu_ring_write(ring, 0x55aa55aa); /* patch dummy value later */
5623+
/* patch dummy value later */
5624+
amdgpu_ring_write(ring, 0);
56225625
return ret;
56235626
}
56245627

5625-
static void gfx_v9_0_ring_emit_patch_cond_exec(struct amdgpu_ring *ring, unsigned offset)
5626-
{
5627-
unsigned cur;
5628-
BUG_ON(offset > ring->buf_mask);
5629-
BUG_ON(ring->ring[offset] != 0x55aa55aa);
5630-
5631-
cur = (ring->wptr - 1) & ring->buf_mask;
5632-
if (likely(cur > offset))
5633-
ring->ring[offset] = cur - offset;
5634-
else
5635-
ring->ring[offset] = (ring->ring_size>>2) - offset + cur;
5636-
}
5637-
56385628
static void gfx_v9_0_ring_emit_rreg(struct amdgpu_ring *ring, uint32_t reg,
56395629
uint32_t reg_val_offs)
56405630
{
@@ -6908,7 +6898,6 @@ static const struct amdgpu_ring_funcs gfx_v9_0_ring_funcs_gfx = {
69086898
.emit_switch_buffer = gfx_v9_ring_emit_sb,
69096899
.emit_cntxcntl = gfx_v9_ring_emit_cntxcntl,
69106900
.init_cond_exec = gfx_v9_0_ring_emit_init_cond_exec,
6911-
.patch_cond_exec = gfx_v9_0_ring_emit_patch_cond_exec,
69126901
.preempt_ib = gfx_v9_0_ring_preempt_ib,
69136902
.emit_frame_cntl = gfx_v9_0_ring_emit_frame_cntl,
69146903
.emit_wreg = gfx_v9_0_ring_emit_wreg,
@@ -6963,7 +6952,6 @@ static const struct amdgpu_ring_funcs gfx_v9_0_sw_ring_funcs_gfx = {
69636952
.emit_switch_buffer = gfx_v9_ring_emit_sb,
69646953
.emit_cntxcntl = gfx_v9_ring_emit_cntxcntl,
69656954
.init_cond_exec = gfx_v9_0_ring_emit_init_cond_exec,
6966-
.patch_cond_exec = gfx_v9_0_ring_emit_patch_cond_exec,
69676955
.emit_frame_cntl = gfx_v9_0_ring_emit_frame_cntl,
69686956
.emit_wreg = gfx_v9_0_ring_emit_wreg,
69696957
.emit_reg_wait = gfx_v9_0_ring_emit_reg_wait,

0 commit comments

Comments
 (0)