[PATCH] drm/amdgpu: control baco sequence by driver on several SIENNA_CICHLID SKUs
Quan, Evan
Evan.Quan at amd.com
Fri Apr 22 10:22:25 UTC 2022
[AMD Official Use Only]
Reviewed-by: Evan Quan <evan.quan at amd.com>
> -----Original Message-----
> From: Chen, Guchun <Guchun.Chen at amd.com>
> Sent: Friday, April 22, 2022 5:47 PM
> To: amd-gfx at lists.freedesktop.org; Koenig, Christian
> <Christian.Koenig at amd.com>; Zhang, Hawking <Hawking.Zhang at amd.com>;
> Deucher, Alexander <Alexander.Deucher at amd.com>; Lazar, Lijo
> <Lijo.Lazar at amd.com>; Quan, Evan <Evan.Quan at amd.com>
> Cc: Chen, Guchun <Guchun.Chen at amd.com>
> Subject: [PATCH] drm/amdgpu: control baco sequence by driver on several
> SIENNA_CICHLID SKUs
>
> Add a quirk to switch baco trigger sequence from armd3 sequence
> to control by driver itself on several SKUs, otherwise, SMU will
> fail to be resumed from runtime suspend. Will drop this after a
> clean solution between kernel driver and SMU FW is available.
>
> amdgpu 0000:63:00.0: amdgpu: GECC is enabled
> amdgpu 0000:63:00.0: amdgpu: SECUREDISPLAY: securedisplay ta ucode is
> not available
> amdgpu 0000:63:00.0: amdgpu: SMU is resuming...
> amdgpu 0000:63:00.0: amdgpu: SMU: I'm not done with your command:
> SMN_C2PMSG_66:0x0000000E SMN_C2PMSG_82:0x00000080
> amdgpu 0000:63:00.0: amdgpu: Failed to SetDriverDramAddr!
> amdgpu 0000:63:00.0: amdgpu: Failed to setup smc hw!
> [drm:amdgpu_device_ip_resume_phase2 [amdgpu]] *ERROR* resume of IP
> block <smu> failed -62
> amdgpu 0000:63:00.0: amdgpu: amdgpu_device_ip_resume failed (-62)
>
> Signed-off-by: Guchun Chen <guchun.chen at amd.com>
> ---
> .../amd/pm/swsmu/smu11/sienna_cichlid_ppt.c | 19
> +++++++++++++++++--
> 1 file changed, 17 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/pm/swsmu/smu11/sienna_cichlid_ppt.c
> b/drivers/gpu/drm/amd/pm/swsmu/smu11/sienna_cichlid_ppt.c
> index b7320ecf4934..494a42c253d8 100644
> --- a/drivers/gpu/drm/amd/pm/swsmu/smu11/sienna_cichlid_ppt.c
> +++ b/drivers/gpu/drm/amd/pm/swsmu/smu11/sienna_cichlid_ppt.c
> @@ -2246,11 +2246,25 @@ static int sienna_cichlid_run_btc(struct
> smu_context *smu)
> return res;
> }
>
> +static bool sienna_cichlid_baco_trigger_quirk(struct amdgpu_device *adev)
> +{
> + /*
> + * Add this quirk on several SKUs to control baco enter/exit by
> + * driver instead of trigger baco via BACO_SEQ_BACO in armd3
> sequence.
> + */
> + if (((adev->pdev->device == 0x73A1) && (adev->pdev->revision ==
> 0x00)) ||
> + ((adev->pdev->device == 0x73BF) && (adev->pdev->revision ==
> 0xCF)))
> + return true;
> + else
> + return false;
> +}
> +
> static int sienna_cichlid_baco_enter(struct smu_context *smu)
> {
> struct amdgpu_device *adev = smu->adev;
>
> - if (adev->in_runpm && smu_cmn_is_audio_func_enabled(adev))
> + if (adev->in_runpm && smu_cmn_is_audio_func_enabled(adev) &&
> + !sienna_cichlid_baco_trigger_quirk(adev))
> return smu_v11_0_baco_set_armd3_sequence(smu,
> BACO_SEQ_BACO);
> else
> return smu_v11_0_baco_enter(smu);
> @@ -2260,7 +2274,8 @@ static int sienna_cichlid_baco_exit(struct
> smu_context *smu)
> {
> struct amdgpu_device *adev = smu->adev;
>
> - if (adev->in_runpm && smu_cmn_is_audio_func_enabled(adev)) {
> + if (adev->in_runpm && smu_cmn_is_audio_func_enabled(adev) &&
> + !sienna_cichlid_baco_trigger_quirk(adev)) {
> /* Wait for PMFW handling for the Dstate change */
> msleep(10);
> return smu_v11_0_baco_set_armd3_sequence(smu,
> BACO_SEQ_ULPS);
> --
> 2.17.1
More information about the amd-gfx
mailing list