[PATCH 1/5] drm/amdgpu: fix insert nop for VCN decode ring
Leo Liu
leo.liu at amd.com
Thu May 17 18:24:04 UTC 2018
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.
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