[PATCH 1/5] drm/amdgpu: fix insert nop for VCN decode ring

Alex Deucher alexdeucher at gmail.com
Thu May 17 18:25:30 UTC 2018


On Thu, May 17, 2018 at 2:24 PM, Leo Liu <leo.liu at amd.com> wrote:
>
>
> On 05/17/2018 02:18 PM, Alex Deucher wrote:
>>
>> On Thu, May 17, 2018 at 2:12 PM, Leo Liu <leo.liu at amd.com> wrote:
>>>
>>> NO_OP register should be writen to 0
>>>
>>> Signed-off-by: Leo Liu <leo.liu at amd.com>
>>
>> We discussed this when we first started working on amdgpu.  Does it
>> have to be 0?
>
> Yes. I confirmed with FW engineer that we need put 0 into noop.
>
>>    This function is used for padding.  What happens if we
>> need an odd number of dwords of padding required?
>
> That should be never happening. should be always paired of PM4 packet for
> RBC to process.

Cool.  Series is:
Reviewed-by: Alex Deucher <alexander.deucher at amd.com>

>
>
> Regards,
> Leo
>
>
>>
>> Alex
>>
>>> ---
>>>   drivers/gpu/drm/amd/amdgpu/vcn_v1_0.c | 14 ++++++++------
>>>   1 file changed, 8 insertions(+), 6 deletions(-)
>>>
>>> diff --git a/drivers/gpu/drm/amd/amdgpu/vcn_v1_0.c
>>> b/drivers/gpu/drm/amd/amdgpu/vcn_v1_0.c
>>> index 0501746b..7fbbdb1 100644
>>> --- a/drivers/gpu/drm/amd/amdgpu/vcn_v1_0.c
>>> +++ b/drivers/gpu/drm/amd/amdgpu/vcn_v1_0.c
>>> @@ -1048,14 +1048,17 @@ static int vcn_v1_0_process_interrupt(struct
>>> amdgpu_device *adev,
>>>          return 0;
>>>   }
>>>
>>> -static void vcn_v1_0_ring_insert_nop(struct amdgpu_ring *ring, uint32_t
>>> count)
>>> +static void vcn_v1_0_dec_ring_insert_nop(struct amdgpu_ring *ring,
>>> uint32_t count)
>>>   {
>>> -       int i;
>>>          struct amdgpu_device *adev = ring->adev;
>>> +       int i;
>>>
>>> -       for (i = 0; i < count; i++)
>>> -               amdgpu_ring_write(ring, PACKET0(SOC15_REG_OFFSET(UVD, 0,
>>> mmUVD_NO_OP), 0));
>>> +       WARN_ON(ring->wptr % 2 || count % 2);
>>>
>>> +       for (i = 0; i < count / 2; i++) {
>>> +               amdgpu_ring_write(ring, PACKET0(SOC15_REG_OFFSET(UVD, 0,
>>> mmUVD_NO_OP), 0));
>>> +               amdgpu_ring_write(ring, 0);
>>> +       }
>>>   }
>>>
>>>
>>> @@ -1082,7 +1085,6 @@ static const struct amd_ip_funcs vcn_v1_0_ip_funcs
>>> = {
>>>   static const struct amdgpu_ring_funcs vcn_v1_0_dec_ring_vm_funcs = {
>>>          .type = AMDGPU_RING_TYPE_VCN_DEC,
>>>          .align_mask = 0xf,
>>> -       .nop = PACKET0(0x81ff, 0),
>>>          .support_64bit_ptrs = false,
>>>          .vmhub = AMDGPU_MMHUB,
>>>          .get_rptr = vcn_v1_0_dec_ring_get_rptr,
>>> @@ -1101,7 +1103,7 @@ static const struct amdgpu_ring_funcs
>>> vcn_v1_0_dec_ring_vm_funcs = {
>>>          .emit_vm_flush = vcn_v1_0_dec_ring_emit_vm_flush,
>>>          .test_ring = amdgpu_vcn_dec_ring_test_ring,
>>>          .test_ib = amdgpu_vcn_dec_ring_test_ib,
>>> -       .insert_nop = vcn_v1_0_ring_insert_nop,
>>> +       .insert_nop = vcn_v1_0_dec_ring_insert_nop,
>>>          .insert_start = vcn_v1_0_dec_ring_insert_start,
>>>          .insert_end = vcn_v1_0_dec_ring_insert_end,
>>>          .pad_ib = amdgpu_ring_generic_pad_ib,
>>> --
>>> 2.7.4
>>>
>>> _______________________________________________
>>> amd-gfx mailing list
>>> amd-gfx at lists.freedesktop.org
>>> https://lists.freedesktop.org/mailman/listinfo/amd-gfx
>
>


More information about the amd-gfx mailing list