[PATCH] drm/amdgpu: skipping SDMA IP suspend for S0ix.
Limonciello, Mario
Mario.Limonciello at amd.com
Wed Feb 2 14:05:36 UTC 2022
[Public]
> -----Original Message-----
> From: Mahapatra, Rajib <Rajib.Mahapatra at amd.com>
> Sent: Wednesday, February 2, 2022 03:07
> To: Liang, Prike <Prike.Liang at amd.com>; Limonciello, Mario
> <Mario.Limonciello at amd.com>; Deucher, Alexander
> <Alexander.Deucher at amd.com>
> Cc: amd-gfx at lists.freedesktop.org; S, Shirish <Shirish.S at amd.com>;
> Mahapatra, Rajib <Rajib.Mahapatra at amd.com>
> Subject: [PATCH] drm/amdgpu: skipping SDMA IP suspend for S0ix.
>
> [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) &&
> + 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
As this is specific to RN/CZN I think this check is better suited in
drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c perhaps in
sdma_v4_0_suspend/sdma_v4_0_resume functions.
The aborted suspend case if it's specific to s0ix, can also use adev->in_s0ix as
part of the check.
More information about the amd-gfx
mailing list