[PATCH 1/6] drm/amdgpu: Power up UVD 3 for FW validation
Alex Deucher
alexdeucher at gmail.com
Mon Aug 4 15:20:53 UTC 2025
On Mon, Aug 4, 2025 at 9:58 AM Timur Kristóf <timur.kristof at gmail.com> wrote:
>
> Unlike later versions, UVD 3 has firmware validation.
> For this to work, the UVD should be powered up correctly.
>
> When DPM is enabled and the display clock is off,
> the SMU may choose a power state which doesn't power
> the UVD, which can result in failure to initialize UVD.
+ Christian, Leo
That doesn't seem right to me. IIRC, the driver always set the UVD
PLL directly on SI and I don't think SI supported any kind of UVD
power gating. I guess it's probably some sort of subtle sequencing
difference between radeon and amdgpu. Unless Christian or Leo have
any ideas, I think the patch is probably fine.
Alex
>
> Fixes: b38f3e80ecec ("drm amdgpu: SI UVD v3_1 (v2)")
> Signed-off-by: Timur Kristóf <timur.kristof at gmail.com>
> ---
> drivers/gpu/drm/amd/amdgpu/uvd_v3_1.c | 9 ++++++---
> 1 file changed, 6 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/uvd_v3_1.c b/drivers/gpu/drm/amd/amdgpu/uvd_v3_1.c
> index 5dbaebb592b3..9ad06c1e150d 100644
> --- a/drivers/gpu/drm/amd/amdgpu/uvd_v3_1.c
> +++ b/drivers/gpu/drm/amd/amdgpu/uvd_v3_1.c
> @@ -633,6 +633,12 @@ static int uvd_v3_1_hw_init(struct amdgpu_ip_block *ip_block)
> int r;
>
> uvd_v3_1_mc_resume(adev);
> + uvd_v3_1_enable_mgcg(adev, true);
> +
> + if (adev->pm.dpm_enabled)
> + amdgpu_dpm_enable_uvd(adev, true);
> + else
> + amdgpu_asic_set_uvd_clocks(adev, 53300, 40000);
>
> r = uvd_v3_1_fw_validate(adev);
> if (r) {
> @@ -640,9 +646,6 @@ static int uvd_v3_1_hw_init(struct amdgpu_ip_block *ip_block)
> return r;
> }
>
> - uvd_v3_1_enable_mgcg(adev, true);
> - amdgpu_asic_set_uvd_clocks(adev, 53300, 40000);
> -
> uvd_v3_1_start(adev);
>
> r = amdgpu_ring_test_helper(ring);
> --
> 2.50.1
>
More information about the amd-gfx
mailing list