[PATCH] drm/amdgpu: skipping SDMA IP suspend for S0ix.
Limonciello, Mario
mario.limonciello at amd.com
Wed Feb 2 15:29:16 UTC 2022
On 2/2/2022 08:16, Alex Deucher wrote:
> On Wed, Feb 2, 2022 at 4:07 AM Rajib Mahapatra <rajib.mahapatra at amd.com> wrote:
>>
>> [Why]
>> amdgpu error observed if suspend is aborted during S0i3
>> resume.
>>
>> [How]
>> If suspend is aborted for some reason during S0i3 resume
>> cycle, it follows amdgpu errors in resume.
>> Skipping SDMA ip in suspend solves the issue on RENOIR
>> (green sardine apu) chip. This time, the system is
>> able to resume gracefully even the suspend is aborted.
>>
>> Signed-off-by: Rajib Mahapatra <rajib.mahapatra at amd.com>
>> ---
>> drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 10 ++++++++++
>> 1 file changed, 10 insertions(+)
>>
>> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
>> index 7931132ce6e3..f01b1dffff7f 100644
>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
>> @@ -2927,6 +2927,16 @@ static int amdgpu_device_ip_suspend_phase2(struct amdgpu_device *adev)
>> adev->ip_blocks[i].version->type == AMD_IP_BLOCK_TYPE_GFX))
>> continue;
>>
>> + /* skip suspend of sdma for S0ix
>> + * Resume has issues if the suspend is aborted during S0i3 cycle.
>> + * Skipping sdma for RN/CZN/BRC chip - green sardine apu.
>> + */
>> + if (adev->in_s0ix &&
>> + (adev->asic_type == CHIP_RENOIR &&
>> + (adev->pdev->device == 0x15e7 || adev->pdev->device == 0x1638) &&
>
> The check here seems to contradict the comment above. Is this all
> Renoir based APUs or just green sardine? If it's just green sardine,
> you can check the APU flags rather than the PCI ids. E.g.,
> (adev->apu_flags & AMD_APU_IS_GREEN_SARDINE)
> Also move this to sdma 4 code as Mario suggested.
Both RN and green sardine share the same flows for SMU, I would think it
should just be match (adev->in_s0xi && (adev->flags & AMD_IS_APU)) when
it's moved to skip suspend.
>
> Alex
>
>> + adev->ip_blocks[i].version->type == AMD_IP_BLOCK_TYPE_SDMA))
>> + continue;
>> +
>> /* XXX handle errors */
>> r = adev->ip_blocks[i].version->funcs->suspend(adev);
>> /* XXX handle errors */
>> --
>> 2.25.1
>>
More information about the amd-gfx
mailing list