[PATCH] drm/amdgpu: Save VCN shared memory with init reset
Lazar, Lijo
lijo.lazar at amd.com
Thu Oct 17 13:16:35 UTC 2024
On 10/17/2024 6:37 PM, Liu, Leo wrote:
> [AMD Official Use Only - AMD Internal Distribution Only]
>
>> -----Original Message-----
>> From: Lazar, Lijo <Lijo.Lazar at amd.com>
>> Sent: October 16, 2024 11:18 PM
>> To: Liu, Leo <Leo.Liu at amd.com>; Koenig, Christian
>> <Christian.Koenig at amd.com>; amd-gfx at lists.freedesktop.org
>> Cc: Zhang, Hawking <Hawking.Zhang at amd.com>; Deucher, Alexander
>> <Alexander.Deucher at amd.com>; Sundararaju, Sathishkumar
>> <Sathishkumar.Sundararaju at amd.com>; Jiang, Sonny
>> <Sonny.Jiang at amd.com>; Zhou, Hao (Claire) <Hao.Zhou at amd.com>
>> Subject: Re: [PATCH] drm/amdgpu: Save VCN shared memory with init reset
>>
>>
>>
>> On 10/16/2024 9:37 PM, Liu, Leo wrote:
>>> [AMD Official Use Only - AMD Internal Distribution Only]
>>>
>>>> -----Original Message-----
>>>> From: Koenig, Christian <Christian.Koenig at amd.com>
>>>> Sent: October 16, 2024 9:16 AM
>>>> To: Lazar, Lijo <Lijo.Lazar at amd.com>; amd-gfx at lists.freedesktop.org;
>>>> Liu, Leo <Leo.Liu at amd.com>
>>>> Cc: Zhang, Hawking <Hawking.Zhang at amd.com>; Deucher, Alexander
>>>> <Alexander.Deucher at amd.com>; Sundararaju, Sathishkumar
>>>> <Sathishkumar.Sundararaju at amd.com>; Jiang, Sonny
>>>> <Sonny.Jiang at amd.com>; Zhou, Hao (Claire) <Hao.Zhou at amd.com>
>>>> Subject: Re: [PATCH] drm/amdgpu: Save VCN shared memory with init
>>>> reset
>>>>
>>>> Am 15.10.24 um 08:23 schrieb Lijo Lazar:
>>>>> VCN shared memory is in framebuffer and there are some flags
>>>>> initialized during sw_init. Ideally, such programming should be
>>>>> during
>>>> hw_init.
>>>>
>>>> IIRC that was intentionally not done during hw_init for some reason.
>>>> @Leo do you remember why?
>>>>
>>>
>>> We need to keep some of the status from share memory(driver and FW),
>> since some of them are changed by FW, that is why the init cannot be in the
>> hw_init stage with suspend/resume case.
>>>
>>
>> For vcn_v4_0_3, the flags that are initialized in sw_init are these
>>
>> fw_shared->present_flag_0 =
>> cpu_to_le32(AMDGPU_FW_SHARED_FLAG_0_UNIFIED_QUEUE);
>> fw_shared->sq.is_enabled = true;
>>
>> if (amdgpu_vcnfw_log)
>> amdgpu_vcn_fwlog_init(&adev->vcn.inst[i]);
>>
>> Is the flags initialized during sw_init required for FW during its initialization
>> stage? If not, it would be better to move this to hw_init.
>>
>> Some part also get modified during vcn_v4_0_3_start (which is after hw_init
>> during runtime) -
>>
>> fw_shared->sq.queue_mode &=
>> cpu_to_le32(~(FW_QUEUE_RING_RESET |
>> FW_QUEUE_DPG_HOLD_OFF));
>>
>>
>> One reason probably is hw_init is also called during resume which restores
>> the saved bo during suspend. So this may be to avoid the double work.
>>
>> Anyway, is the patch okay to go?
>>
> You need to fix the function name as I commented from last email.
>
Any suggestions - amdgpu_vcn_save_vcpu_buffer/bo?
Thanks,
Lijo
> Regards,
> Leo
>
>
>> Thanks,
>> Lijo
>>
>>> +int amdgpu_vcn_suspend(struct amdgpu_device *adev) {
>>> > + bool in_ras_intr = amdgpu_ras_intr_triggered();
>>> > +
>>> > + cancel_delayed_work_sync(&adev->vcn.idle_work);
>>> > +
>>> > + /* err_event_athub will corrupt VCPU buffer, so we need to
>>> > + * restore fw data and clear buffer in amdgpu_vcn_resume() */
>>> > + if (in_ras_intr)
>>> > + return 0;
>>> > +
>>> > + return amdgpu_vcn_save_fw_shared_region(adev);
>>> The saved bo here is not only for fw shared memory, also for FW runtime
>> stack/heap as well.
>>>> Regards,
>>> Leo
>>>
>>> > +}
>>> > +
More information about the amd-gfx
mailing list