On Thu, Oct 27, 2016 at 5:55 AM, Yu, Xiangliang <Xiangliang.Yu at amd.com> wrote: > > >> > >> > NAK, we agreed upon moving the constant data into the functions >> > structure as well. >> > >> > How about renaming the amdgpu_ring_funcs structure to make clear that >> > it isn't only functions any more? Something amdgpu_ring_params or >> > something like that? > > What benefit to put the constant data into the structure? > If no, I'll create a new patch that create new structure for these constant data. The functions and the parameters should be const. I don't care how we arrange the structure(s). Feel free to re-arrange. Alex > >> Why not create a new structure for the constant data? It can make code >> more flexible. >> Actually, I'm working on SRIOV patches, I need the amdgpu_ring_funcs >> structure so That easy to inherint all of function. >> >> > >> > Regards, >> > Christian. >> > >> > Am 26.10.2016 um 09:34 schrieb Yu, Xiangliang: >> > > Hi Christian, >> > > >> > > Could you help put type, aligan_mask, nop of amdgpu_ring_funcs >> > > struct >> > field into amdgpu_ring struct? >> > > I think amdgpu_ring_funcs should include function pointer, not >> > > attribute. Your patches is not follow the struct design, and the >> > amdgpu_ring will lost the meaning. >> > > >> > > >> > > Thanks! >> > > Xiangliang Yu >> > > >> > >> -----Original Message----- >> > >> From: amd-gfx [mailto:amd-gfx-bounces at lists.freedesktop.org] On >> > >> Behalf Of Christian K?nig >> > >> Sent: Wednesday, October 05, 2016 10:13 PM >> > >> To: amd-gfx at lists.freedesktop.org >> > >> Subject: [PATCH 8/8] drm/amdgpu: move align_mask and nop into ring >> > >> funcs as well >> > >> >> > >> From: Christian König <christian.koenig at amd.com> >> > >> >> > >> They are constant as well. >> > >> >> > >> Signed-off-by: Christian König <christian.koenig at amd.com> >> > >> --- >> > >> drivers/gpu/drm/amd/amdgpu/amdgpu_ring.c | 19 +++++++++-------- >> -- >> > >> drivers/gpu/drm/amd/amdgpu/amdgpu_ring.h | 8 ++++---- >> > >> drivers/gpu/drm/amd/amdgpu/cik_sdma.c | 7 ++++--- >> > >> drivers/gpu/drm/amd/amdgpu/gfx_v6_0.c | 6 ++++-- >> > >> drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c | 6 ++++-- >> > >> drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c | 14 ++++++++------ >> > >> drivers/gpu/drm/amd/amdgpu/sdma_v2_4.c | 7 ++++--- >> > >> drivers/gpu/drm/amd/amdgpu/sdma_v3_0.c | 7 ++++--- >> > >> drivers/gpu/drm/amd/amdgpu/si_dma.c | 3 ++- >> > >> drivers/gpu/drm/amd/amdgpu/uvd_v4_2.c | 5 +++-- >> > >> drivers/gpu/drm/amd/amdgpu/uvd_v5_0.c | 5 +++-- >> > >> drivers/gpu/drm/amd/amdgpu/uvd_v6_0.c | 5 +++-- >> > >> drivers/gpu/drm/amd/amdgpu/vce_v2_0.c | 4 +++- >> > >> drivers/gpu/drm/amd/amdgpu/vce_v3_0.c | 5 +++-- >> > >> 14 files changed, 58 insertions(+), 43 deletions(-) >> > >> >> > >> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ring.c >> > >> b/drivers/gpu/drm/amd/amdgpu/amdgpu_ring.c >> > >> index b2df735..a141b46 100644 >> > >> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ring.c >> > >> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ring.c >> > >> @@ -65,7 +65,7 @@ int amdgpu_ring_alloc(struct amdgpu_ring *ring, >> > >> unsigned ndw) { >> > >> /* Align requested size with padding so unlock_commit can >> > >> * pad safely */ >> > >> - ndw = (ndw + ring->align_mask) & ~ring->align_mask; >> > >> + ndw = (ndw + ring->funcs->align_mask) & ~ring->funcs->align_mask; >> > >> >> > >> /* Make sure we aren't trying to allocate more space >> > >> * than the maximum for one submission @@ -94,7 +94,7 @@ void >> > >> amdgpu_ring_insert_nop(struct amdgpu_ring *ring, uint32_t count) >> > >> int i; >> > >> >> > >> for (i = 0; i < count; i++) >> > >> - amdgpu_ring_write(ring, ring->nop); >> > >> + amdgpu_ring_write(ring, ring->funcs->nop); >> > >> } >> > >> >> > >> /** amdgpu_ring_generic_pad_ib - pad IB with NOP packets @@ >> > >> -106,8 >> > >> +106,8 @@ void amdgpu_ring_insert_nop(struct amdgpu_ring *ring, >> > >> uint32_t count) >> > >> */ >> > >> void amdgpu_ring_generic_pad_ib(struct amdgpu_ring *ring, struct >> > >> amdgpu_ib *ib) { >> > >> - while (ib->length_dw & ring->align_mask) >> > >> - ib->ptr[ib->length_dw++] = ring->nop; >> > >> + while (ib->length_dw & ring->funcs->align_mask) >> > >> + ib->ptr[ib->length_dw++] = ring->funcs->nop; >> > >> } >> > >> >> > >> /** >> > >> @@ -125,8 +125,9 @@ void amdgpu_ring_commit(struct amdgpu_ring >> > *ring) >> > >> uint32_t count; >> > >> >> > >> /* We pad to match fetch size */ >> > >> - count = ring->align_mask + 1 - (ring->wptr & ring->align_mask); >> > >> - count %= ring->align_mask + 1; >> > >> + count = ring->funcs->align_mask + 1 - >> > >> + (ring->wptr & ring->funcs->align_mask); >> > >> + count %= ring->funcs->align_mask + 1; >> > >> ring->funcs->insert_nop(ring, count); >> > >> >> > >> mb(); >> > >> @@ -163,8 +164,8 @@ void amdgpu_ring_undo(struct amdgpu_ring >> *ring) >> > >> * Returns 0 on success, error on failure. >> > >> */ >> > >> int amdgpu_ring_init(struct amdgpu_device *adev, struct >> > >> amdgpu_ring *ring, >> > >> - unsigned max_dw, u32 nop, u32 align_mask, >> > >> - struct amdgpu_irq_src *irq_src, unsigned irq_type) >> > >> + unsigned max_dw, struct amdgpu_irq_src *irq_src, >> > >> + unsigned irq_type) >> > >> { >> > >> int r; >> > >> >> > >> @@ -215,8 +216,6 @@ int amdgpu_ring_init(struct amdgpu_device >> > >> *adev, struct amdgpu_ring *ring, >> > >> >> > >> ring->ring_size = roundup_pow_of_two(max_dw * 4 * >> > >> amdgpu_sched_hw_submission); >> > >> - ring->align_mask = align_mask; >> > >> - ring->nop = nop; >> > >> >> > >> /* Allocate ring buffer */ >> > >> if (ring->ring_obj == NULL) { >> > >> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ring.h >> > >> b/drivers/gpu/drm/amd/amdgpu/amdgpu_ring.h >> > >> index 6cf89c9..1ee1b65 100644 >> > >> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ring.h >> > >> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ring.h >> > >> @@ -93,6 +93,8 @@ unsigned amdgpu_fence_count_emitted(struct >> > >> amdgpu_ring *ring); >> > >> /* provided by hw blocks that expose a ring buffer for commands >> > >> */ struct amdgpu_ring_funcs { >> > >> enum amdgpu_ring_type type; >> > >> + uint32_t align_mask; >> > >> + u32 nop; >> > >> >> > >> /* ring read/write ptr handling */ >> > >> u32 (*get_rptr)(struct amdgpu_ring *ring); @@ -149,10 +151,8 @@ >> > >> struct amdgpu_ring { >> > >> unsigned max_dw; >> > >> int count_dw; >> > >> uint64_t gpu_addr; >> > >> - uint32_t align_mask; >> > >> uint32_t ptr_mask; >> > >> bool ready; >> > >> - u32 nop; >> > >> u32 idx; >> > >> u32 me; >> > >> u32 pipe; >> > >> @@ -178,8 +178,8 @@ void amdgpu_ring_generic_pad_ib(struct >> > >> amdgpu_ring *ring, struct amdgpu_ib *ib); void >> > >> amdgpu_ring_commit(struct amdgpu_ring *ring); void >> > >> amdgpu_ring_undo(struct amdgpu_ring *ring); int >> > amdgpu_ring_init(struct amdgpu_device *adev, struct amdgpu_ring *ring, >> > >> - unsigned ring_size, u32 nop, u32 align_mask, >> > >> - struct amdgpu_irq_src *irq_src, unsigned irq_type); >> > >> + unsigned ring_size, struct amdgpu_irq_src *irq_src, >> > >> + unsigned irq_type); >> > >> void amdgpu_ring_fini(struct amdgpu_ring *ring); >> > >> >> > >> #endif >> > >> diff --git a/drivers/gpu/drm/amd/amdgpu/cik_sdma.c >> > >> b/drivers/gpu/drm/amd/amdgpu/cik_sdma.c >> > >> index f91f02f..664f894 100644 >> > >> --- a/drivers/gpu/drm/amd/amdgpu/cik_sdma.c >> > >> +++ b/drivers/gpu/drm/amd/amdgpu/cik_sdma.c >> > >> @@ -205,10 +205,10 @@ static void cik_sdma_ring_insert_nop(struct >> > >> amdgpu_ring *ring, uint32_t count) >> > >> >> > >> for (i = 0; i < count; i++) >> > >> if (sdma && sdma->burst_nop && (i == 0)) >> > >> - amdgpu_ring_write(ring, ring->nop | >> > >> + amdgpu_ring_write(ring, ring->funcs->nop | >> > >> SDMA_NOP_COUNT(count - 1)); >> > >> else >> > >> - amdgpu_ring_write(ring, ring->nop); >> > >> + amdgpu_ring_write(ring, ring->funcs->nop); >> > >> } >> > >> >> > >> /** >> > >> @@ -942,7 +942,6 @@ static int cik_sdma_sw_init(void *handle) >> > >> ring->ring_obj = NULL; >> > >> sprintf(ring->name, "sdma%d", i); >> > >> r = amdgpu_ring_init(adev, ring, 1024, >> > >> - SDMA_PACKET(SDMA_OPCODE_NOP, 0, >> > >> 0), 0xf, >> > >> &adev->sdma.trap_irq, >> > >> (i == 0) ? >> > >> AMDGPU_SDMA_IRQ_TRAP0 : >> > >> @@ -1207,6 +1206,8 @@ const struct amd_ip_funcs cik_sdma_ip_funcs >> = >> > { >> > >> >> > >> static const struct amdgpu_ring_funcs cik_sdma_ring_funcs = { >> > >> .type = AMDGPU_RING_TYPE_SDMA, >> > >> + .align_mask = 0xf, >> > >> + .nop = SDMA_PACKET(SDMA_OPCODE_NOP, 0, 0), >> > >> .get_rptr = cik_sdma_ring_get_rptr, >> > >> .get_wptr = cik_sdma_ring_get_wptr, >> > >> .set_wptr = cik_sdma_ring_set_wptr, diff --git >> > >> a/drivers/gpu/drm/amd/amdgpu/gfx_v6_0.c >> > >> b/drivers/gpu/drm/amd/amdgpu/gfx_v6_0.c >> > >> index 1f8687fd..367b14e 100644 >> > >> --- a/drivers/gpu/drm/amd/amdgpu/gfx_v6_0.c >> > >> +++ b/drivers/gpu/drm/amd/amdgpu/gfx_v6_0.c >> > >> @@ -2869,7 +2869,6 @@ static int gfx_v6_0_sw_init(void *handle) >> > >> ring->ring_obj = NULL; >> > >> sprintf(ring->name, "gfx"); >> > >> r = amdgpu_ring_init(adev, ring, 1024, >> > >> - 0x80000000, 0xff, >> > >> &adev->gfx.eop_irq, >> > >> AMDGPU_CP_IRQ_GFX_EOP); >> > >> if (r) >> > >> return r; >> > >> @@ -2892,7 +2891,6 @@ static int gfx_v6_0_sw_init(void *handle) >> > >> sprintf(ring->name, "comp %d.%d.%d", ring->me, ring->pipe, >> > >> ring->queue); >> > >> irq_type = AMDGPU_CP_IRQ_COMPUTE_MEC1_PIPE0_EOP >> > >> + ring->pipe; >> > >> r = amdgpu_ring_init(adev, ring, 1024, >> > >> - 0x80000000, 0xff, >> > >> &adev->gfx.eop_irq, irq_type); >> > >> if (r) >> > >> return r; >> > >> @@ -3227,6 +3225,8 @@ const struct amd_ip_funcs gfx_v6_0_ip_funcs >> = >> > { >> > >> >> > >> static const struct amdgpu_ring_funcs gfx_v6_0_ring_funcs_gfx = { >> > >> .type = AMDGPU_RING_TYPE_GFX, >> > >> + .align_mask = 0xff, >> > >> + .nop = 0x80000000, >> > >> .get_rptr = gfx_v6_0_ring_get_rptr, >> > >> .get_wptr = gfx_v6_0_ring_get_wptr, >> > >> .set_wptr = gfx_v6_0_ring_set_wptr_gfx, @@ -3252,6 +3252,8 @@ >> > >> static const struct amdgpu_ring_funcs gfx_v6_0_ring_funcs_gfx = { >> > >> >> > >> static const struct amdgpu_ring_funcs gfx_v6_0_ring_funcs_compute >> = { >> > >> .type = AMDGPU_RING_TYPE_COMPUTE, >> > >> + .align_mask = 0xff, >> > >> + .nop = 0x80000000, >> > >> .get_rptr = gfx_v6_0_ring_get_rptr, >> > >> .get_wptr = gfx_v6_0_ring_get_wptr, >> > >> .set_wptr = gfx_v6_0_ring_set_wptr_compute, diff --git >> > >> a/drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c >> > >> b/drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c >> > >> index be3881e..15f24bd 100644 >> > >> --- a/drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c >> > >> +++ b/drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c >> > >> @@ -4605,7 +4605,6 @@ static int gfx_v7_0_sw_init(void *handle) >> > >> ring->ring_obj = NULL; >> > >> sprintf(ring->name, "gfx"); >> > >> r = amdgpu_ring_init(adev, ring, 1024, >> > >> - PACKET3(PACKET3_NOP, 0x3FFF), 0xff, >> > >> &adev->gfx.eop_irq, >> > >> AMDGPU_CP_IRQ_GFX_EOP); >> > >> if (r) >> > >> return r; >> > >> @@ -4631,7 +4630,6 @@ static int gfx_v7_0_sw_init(void *handle) >> > >> irq_type = AMDGPU_CP_IRQ_COMPUTE_MEC1_PIPE0_EOP >> > >> + ring->pipe; >> > >> /* type-2 packets are deprecated on MEC, use type-3 instead >> > */ >> > >> r = amdgpu_ring_init(adev, ring, 1024, >> > >> - PACKET3(PACKET3_NOP, 0x3FFF), 0xff, >> > >> &adev->gfx.eop_irq, irq_type); >> > >> if (r) >> > >> return r; >> > >> @@ -5102,6 +5100,8 @@ const struct amd_ip_funcs gfx_v7_0_ip_funcs >> = >> > { >> > >> >> > >> static const struct amdgpu_ring_funcs gfx_v7_0_ring_funcs_gfx = { >> > >> .type = AMDGPU_RING_TYPE_GFX, >> > >> + .align_mask = 0xff, >> > >> + .nop = PACKET3(PACKET3_NOP, 0x3FFF), >> > >> .get_rptr = gfx_v7_0_ring_get_rptr, >> > >> .get_wptr = gfx_v7_0_ring_get_wptr_gfx, >> > >> .set_wptr = gfx_v7_0_ring_set_wptr_gfx, @@ -5130,6 +5130,8 @@ >> > >> static const struct amdgpu_ring_funcs gfx_v7_0_ring_funcs_gfx = { >> > >> >> > >> static const struct amdgpu_ring_funcs gfx_v7_0_ring_funcs_compute >> = { >> > >> .type = AMDGPU_RING_TYPE_COMPUTE, >> > >> + .align_mask = 0xff, >> > >> + .nop = PACKET3(PACKET3_NOP, 0x3FFF), >> > >> .get_rptr = gfx_v7_0_ring_get_rptr, >> > >> .get_wptr = gfx_v7_0_ring_get_wptr_compute, >> > >> .set_wptr = gfx_v7_0_ring_set_wptr_compute, diff --git >> > >> a/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c >> > >> b/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c >> > >> index 0d66f49..51f1139 100644 >> > >> --- a/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c >> > >> +++ b/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c >> > >> @@ -2061,9 +2061,8 @@ static int gfx_v8_0_sw_init(void *handle) >> > >> ring->doorbell_index = >> > >> AMDGPU_DOORBELL_GFX_RING0; >> > >> } >> > >> >> > >> - r = amdgpu_ring_init(adev, ring, 1024, >> > >> - PACKET3(PACKET3_NOP, 0x3FFF), 0xff, >> > >> - &adev->gfx.eop_irq, >> > >> AMDGPU_CP_IRQ_GFX_EOP); >> > >> + r = amdgpu_ring_init(adev, ring, 1024, &adev->gfx.eop_irq, >> > >> + AMDGPU_CP_IRQ_GFX_EOP); >> > >> if (r) >> > >> return r; >> > >> } >> > >> @@ -2087,9 +2086,8 @@ static int gfx_v8_0_sw_init(void *handle) >> > >> sprintf(ring->name, "comp_%d.%d.%d", ring->me, ring- >> > >>> pipe, ring->queue); >> > >> irq_type = AMDGPU_CP_IRQ_COMPUTE_MEC1_PIPE0_EOP >> > >> + ring->pipe; >> > >> /* type-2 packets are deprecated on MEC, use type-3 instead >> > */ >> > >> - r = amdgpu_ring_init(adev, ring, 1024, >> > >> - PACKET3(PACKET3_NOP, 0x3FFF), 0xff, >> > >> - &adev->gfx.eop_irq, irq_type); >> > >> + r = amdgpu_ring_init(adev, ring, 1024, &adev->gfx.eop_irq, >> > >> + irq_type); >> > >> if (r) >> > >> return r; >> > >> } >> > >> @@ -6532,6 +6530,8 @@ const struct amd_ip_funcs gfx_v8_0_ip_funcs >> = >> > { >> > >> >> > >> static const struct amdgpu_ring_funcs gfx_v8_0_ring_funcs_gfx = { >> > >> .type = AMDGPU_RING_TYPE_GFX, >> > >> + .align_mask = 0xff, >> > >> + .nop = PACKET3(PACKET3_NOP, 0x3FFF), >> > >> .get_rptr = gfx_v8_0_ring_get_rptr, >> > >> .get_wptr = gfx_v8_0_ring_get_wptr_gfx, >> > >> .set_wptr = gfx_v8_0_ring_set_wptr_gfx, @@ -6562,6 +6562,8 @@ >> > >> static const struct amdgpu_ring_funcs gfx_v8_0_ring_funcs_gfx = { >> > >> >> > >> static const struct amdgpu_ring_funcs gfx_v8_0_ring_funcs_compute >> = { >> > >> .type = AMDGPU_RING_TYPE_COMPUTE, >> > >> + .align_mask = 0xff, >> > >> + .nop = PACKET3(PACKET3_NOP, 0x3FFF), >> > >> .get_rptr = gfx_v8_0_ring_get_rptr, >> > >> .get_wptr = gfx_v8_0_ring_get_wptr_compute, >> > >> .set_wptr = gfx_v8_0_ring_set_wptr_compute, diff --git >> > >> a/drivers/gpu/drm/amd/amdgpu/sdma_v2_4.c >> > >> b/drivers/gpu/drm/amd/amdgpu/sdma_v2_4.c >> > >> index b11a81e..49c47d6 100644 >> > >> --- a/drivers/gpu/drm/amd/amdgpu/sdma_v2_4.c >> > >> +++ b/drivers/gpu/drm/amd/amdgpu/sdma_v2_4.c >> > >> @@ -236,10 +236,10 @@ static void sdma_v2_4_ring_insert_nop(struct >> > >> amdgpu_ring *ring, uint32_t count) >> > >> >> > >> for (i = 0; i < count; i++) >> > >> if (sdma && sdma->burst_nop && (i == 0)) >> > >> - amdgpu_ring_write(ring, ring->nop | >> > >> + amdgpu_ring_write(ring, ring->funcs->nop | >> > >> SDMA_PKT_NOP_HEADER_COUNT(count - >> > 1)); >> > >> else >> > >> - amdgpu_ring_write(ring, ring->nop); >> > >> + amdgpu_ring_write(ring, ring->funcs->nop); >> > >> } >> > >> >> > >> /** >> > >> @@ -953,7 +953,6 @@ static int sdma_v2_4_sw_init(void *handle) >> > >> ring->use_doorbell = false; >> > >> sprintf(ring->name, "sdma%d", i); >> > >> r = amdgpu_ring_init(adev, ring, 1024, >> > >> - >> > >> SDMA_PKT_NOP_HEADER_OP(SDMA_OP_NOP), 0xf, >> > >> &adev->sdma.trap_irq, >> > >> (i == 0) ? >> > >> AMDGPU_SDMA_IRQ_TRAP0 : >> > >> @@ -1211,6 +1210,8 @@ const struct amd_ip_funcs >> sdma_v2_4_ip_funcs >> > = >> > >> { >> > >> >> > >> static const struct amdgpu_ring_funcs sdma_v2_4_ring_funcs = { >> > >> .type = AMDGPU_RING_TYPE_SDMA, >> > >> + .align_mask = 0xf, >> > >> + .nop = SDMA_PKT_NOP_HEADER_OP(SDMA_OP_NOP), >> > >> .get_rptr = sdma_v2_4_ring_get_rptr, >> > >> .get_wptr = sdma_v2_4_ring_get_wptr, >> > >> .set_wptr = sdma_v2_4_ring_set_wptr, diff --git >> > >> a/drivers/gpu/drm/amd/amdgpu/sdma_v3_0.c >> > >> b/drivers/gpu/drm/amd/amdgpu/sdma_v3_0.c >> > >> index accf4d1..f8ec370 100644 >> > >> --- a/drivers/gpu/drm/amd/amdgpu/sdma_v3_0.c >> > >> +++ b/drivers/gpu/drm/amd/amdgpu/sdma_v3_0.c >> > >> @@ -396,10 +396,10 @@ static void sdma_v3_0_ring_insert_nop(struct >> > >> amdgpu_ring *ring, uint32_t count) >> > >> >> > >> for (i = 0; i < count; i++) >> > >> if (sdma && sdma->burst_nop && (i == 0)) >> > >> - amdgpu_ring_write(ring, ring->nop | >> > >> + amdgpu_ring_write(ring, ring->funcs->nop | >> > >> SDMA_PKT_NOP_HEADER_COUNT(count - >> > 1)); >> > >> else >> > >> - amdgpu_ring_write(ring, ring->nop); >> > >> + amdgpu_ring_write(ring, ring->funcs->nop); >> > >> } >> > >> >> > >> /** >> > >> @@ -1165,7 +1165,6 @@ static int sdma_v3_0_sw_init(void *handle) >> > >> >> > >> sprintf(ring->name, "sdma%d", i); >> > >> r = amdgpu_ring_init(adev, ring, 1024, >> > >> - >> > >> SDMA_PKT_NOP_HEADER_OP(SDMA_OP_NOP), 0xf, >> > >> &adev->sdma.trap_irq, >> > >> (i == 0) ? >> > >> AMDGPU_SDMA_IRQ_TRAP0 : >> > >> @@ -1556,6 +1555,8 @@ const struct amd_ip_funcs >> sdma_v3_0_ip_funcs >> > = >> > >> { >> > >> >> > >> static const struct amdgpu_ring_funcs sdma_v3_0_ring_funcs = { >> > >> .type = AMDGPU_RING_TYPE_SDMA, >> > >> + .align_mask = 0xf, >> > >> + .nop = SDMA_PKT_NOP_HEADER_OP(SDMA_OP_NOP), >> > >> .get_rptr = sdma_v3_0_ring_get_rptr, >> > >> .get_wptr = sdma_v3_0_ring_get_wptr, >> > >> .set_wptr = sdma_v3_0_ring_set_wptr, diff --git >> > >> a/drivers/gpu/drm/amd/amdgpu/si_dma.c >> > >> b/drivers/gpu/drm/amd/amdgpu/si_dma.c >> > >> index 1aee45b..7fece1f 100644 >> > >> --- a/drivers/gpu/drm/amd/amdgpu/si_dma.c >> > >> +++ b/drivers/gpu/drm/amd/amdgpu/si_dma.c >> > >> @@ -531,7 +531,6 @@ static int si_dma_sw_init(void *handle) >> > >> ring->use_doorbell = false; >> > >> sprintf(ring->name, "sdma%d", i); >> > >> r = amdgpu_ring_init(adev, ring, 1024, >> > >> - DMA_PACKET(DMA_PACKET_NOP, 0, 0, 0, >> > >> 0), 0xf, >> > >> &adev->sdma.trap_irq, >> > >> (i == 0) ? >> > >> AMDGPU_SDMA_IRQ_TRAP0 : >> > >> @@ -765,6 +764,8 @@ const struct amd_ip_funcs si_dma_ip_funcs = { >> > >> >> > >> static const struct amdgpu_ring_funcs si_dma_ring_funcs = { >> > >> .type = AMDGPU_RING_TYPE_SDMA, >> > >> + .align_mask = 0xf, >> > >> + .nop = DMA_PACKET(DMA_PACKET_NOP, 0, 0, 0, 0), >> > >> .get_rptr = si_dma_ring_get_rptr, >> > >> .get_wptr = si_dma_ring_get_wptr, >> > >> .set_wptr = si_dma_ring_set_wptr, diff --git >> > >> a/drivers/gpu/drm/amd/amdgpu/uvd_v4_2.c >> > >> b/drivers/gpu/drm/amd/amdgpu/uvd_v4_2.c >> > >> index 55af8ac..1bab75a 100644 >> > >> --- a/drivers/gpu/drm/amd/amdgpu/uvd_v4_2.c >> > >> +++ b/drivers/gpu/drm/amd/amdgpu/uvd_v4_2.c >> > >> @@ -116,8 +116,7 @@ static int uvd_v4_2_sw_init(void *handle) >> > >> >> > >> ring = &adev->uvd.ring; >> > >> sprintf(ring->name, "uvd"); >> > >> - r = amdgpu_ring_init(adev, ring, 512, PACKET0(mmUVD_NO_OP, 0), >> > >> 0xf, >> > >> - &adev->uvd.irq, 0); >> > >> + r = amdgpu_ring_init(adev, ring, 512, &adev->uvd.irq, 0); >> > >> >> > >> return r; >> > >> } >> > >> @@ -743,6 +742,8 @@ const struct amd_ip_funcs uvd_v4_2_ip_funcs = >> { >> > >> >> > >> static const struct amdgpu_ring_funcs uvd_v4_2_ring_funcs = { >> > >> .type = AMDGPU_RING_TYPE_UVD, >> > >> + .align_mask = 0xf, >> > >> + .nop = PACKET0(mmUVD_NO_OP, 0), >> > >> .get_rptr = uvd_v4_2_ring_get_rptr, >> > >> .get_wptr = uvd_v4_2_ring_get_wptr, >> > >> .set_wptr = uvd_v4_2_ring_set_wptr, diff --git >> > >> a/drivers/gpu/drm/amd/amdgpu/uvd_v5_0.c >> > >> b/drivers/gpu/drm/amd/amdgpu/uvd_v5_0.c >> > >> index 21e725b..ec848fc 100644 >> > >> --- a/drivers/gpu/drm/amd/amdgpu/uvd_v5_0.c >> > >> +++ b/drivers/gpu/drm/amd/amdgpu/uvd_v5_0.c >> > >> @@ -112,8 +112,7 @@ static int uvd_v5_0_sw_init(void *handle) >> > >> >> > >> ring = &adev->uvd.ring; >> > >> sprintf(ring->name, "uvd"); >> > >> - r = amdgpu_ring_init(adev, ring, 512, PACKET0(mmUVD_NO_OP, 0), >> > >> 0xf, >> > >> - &adev->uvd.irq, 0); >> > >> + r = amdgpu_ring_init(adev, ring, 512, &adev->uvd.irq, 0); >> > >> >> > >> return r; >> > >> } >> > >> @@ -794,6 +793,8 @@ const struct amd_ip_funcs uvd_v5_0_ip_funcs = >> { >> > >> >> > >> static const struct amdgpu_ring_funcs uvd_v5_0_ring_funcs = { >> > >> .type = AMDGPU_RING_TYPE_UVD, >> > >> + .align_mask = 0xf, >> > >> + .nop = PACKET0(mmUVD_NO_OP, 0), >> > >> .get_rptr = uvd_v5_0_ring_get_rptr, >> > >> .get_wptr = uvd_v5_0_ring_get_wptr, >> > >> .set_wptr = uvd_v5_0_ring_set_wptr, diff --git >> > >> a/drivers/gpu/drm/amd/amdgpu/uvd_v6_0.c >> > >> b/drivers/gpu/drm/amd/amdgpu/uvd_v6_0.c >> > >> index 2ce1818..15708f8 100644 >> > >> --- a/drivers/gpu/drm/amd/amdgpu/uvd_v6_0.c >> > >> +++ b/drivers/gpu/drm/amd/amdgpu/uvd_v6_0.c >> > >> @@ -116,8 +116,7 @@ static int uvd_v6_0_sw_init(void *handle) >> > >> >> > >> ring = &adev->uvd.ring; >> > >> sprintf(ring->name, "uvd"); >> > >> - r = amdgpu_ring_init(adev, ring, 512, PACKET0(mmUVD_NO_OP, 0), >> > >> 0xf, >> > >> - &adev->uvd.irq, 0); >> > >> + r = amdgpu_ring_init(adev, ring, 512, &adev->uvd.irq, 0); >> > >> >> > >> return r; >> > >> } >> > >> @@ -1047,6 +1046,8 @@ static const struct amdgpu_ring_funcs >> > >> uvd_v6_0_ring_phys_funcs = { >> > >> >> > >> static const struct amdgpu_ring_funcs uvd_v6_0_ring_vm_funcs = { >> > >> .type = AMDGPU_RING_TYPE_UVD, >> > >> + .align_mask = 0xf, >> > >> + .nop = PACKET0(mmUVD_NO_OP, 0), >> > >> .get_rptr = uvd_v6_0_ring_get_rptr, >> > >> .get_wptr = uvd_v6_0_ring_get_wptr, >> > >> .set_wptr = uvd_v6_0_ring_set_wptr, diff --git >> > >> a/drivers/gpu/drm/amd/amdgpu/vce_v2_0.c >> > >> b/drivers/gpu/drm/amd/amdgpu/vce_v2_0.c >> > >> index cf0c68f..d585839 100644 >> > >> --- a/drivers/gpu/drm/amd/amdgpu/vce_v2_0.c >> > >> +++ b/drivers/gpu/drm/amd/amdgpu/vce_v2_0.c >> > >> @@ -224,7 +224,7 @@ static int vce_v2_0_sw_init(void *handle) >> > >> for (i = 0; i < adev->vce.num_rings; i++) { >> > >> ring = &adev->vce.ring[i]; >> > >> sprintf(ring->name, "vce%d", i); >> > >> - r = amdgpu_ring_init(adev, ring, 512, VCE_CMD_NO_OP, 0xf, >> > >> + r = amdgpu_ring_init(adev, ring, 512, >> > >> &adev->vce.irq, 0); >> > >> if (r) >> > >> return r; >> > >> @@ -611,6 +611,8 @@ const struct amd_ip_funcs vce_v2_0_ip_funcs = >> { >> > >> >> > >> static const struct amdgpu_ring_funcs vce_v2_0_ring_funcs = { >> > >> .type = AMDGPU_RING_TYPE_VCE, >> > >> + .align_mask = 0xf, >> > >> + .nop = VCE_CMD_NO_OP, >> > >> .get_rptr = vce_v2_0_ring_get_rptr, >> > >> .get_wptr = vce_v2_0_ring_get_wptr, >> > >> .set_wptr = vce_v2_0_ring_set_wptr, diff --git >> > >> a/drivers/gpu/drm/amd/amdgpu/vce_v3_0.c >> > >> b/drivers/gpu/drm/amd/amdgpu/vce_v3_0.c >> > >> index 56a3feb..f7dbd0d 100644 >> > >> --- a/drivers/gpu/drm/amd/amdgpu/vce_v3_0.c >> > >> +++ b/drivers/gpu/drm/amd/amdgpu/vce_v3_0.c >> > >> @@ -389,8 +389,7 @@ static int vce_v3_0_sw_init(void *handle) >> > >> for (i = 0; i < adev->vce.num_rings; i++) { >> > >> ring = &adev->vce.ring[i]; >> > >> sprintf(ring->name, "vce%d", i); >> > >> - r = amdgpu_ring_init(adev, ring, 512, VCE_CMD_NO_OP, 0xf, >> > >> - &adev->vce.irq, 0); >> > >> + r = amdgpu_ring_init(adev, ring, 512, &adev->vce.irq, 0); >> > >> if (r) >> > >> return r; >> > >> } >> > >> @@ -850,6 +849,8 @@ static const struct amdgpu_ring_funcs >> > >> vce_v3_0_ring_phys_funcs = { >> > >> >> > >> static const struct amdgpu_ring_funcs vce_v3_0_ring_vm_funcs = { >> > >> .type = AMDGPU_RING_TYPE_VCE, >> > >> + .align_mask = 0xf, >> > >> + .nop = VCE_CMD_NO_OP, >> > >> .get_rptr = vce_v3_0_ring_get_rptr, >> > >> .get_wptr = vce_v3_0_ring_get_wptr, >> > >> .set_wptr = vce_v3_0_ring_set_wptr, >> > >> -- >> > >> 2.5.0 >> > >> >> > >> _______________________________________________ >> > >> amd-gfx mailing list >> > >> amd-gfx at lists.freedesktop.org >> > >> https://lists.freedesktop.org/mailman/listinfo/amd-gfx >> > >> > >> > _______________________________________________ >> > amd-gfx mailing list >> > amd-gfx at lists.freedesktop.org >> > https://lists.freedesktop.org/mailman/listinfo/amd-gfx >> _______________________________________________ >> amd-gfx mailing list >> amd-gfx at lists.freedesktop.org >> https://lists.freedesktop.org/mailman/listinfo/amd-gfx > _______________________________________________ > amd-gfx mailing list > amd-gfx at lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/amd-gfx