uvd_v3_1_hw_init(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’œ uvd_v3_1_hw_init (9) β€” the Kernel API Manual, bestie edition

okay so real talk, this one's from the Kernel API Manual and it's literally about kicking the UVD block awake and making sure it's not faking. let's get into it ✨


🌸 NAME 🌸

uvd_v3_1_hw_init β€” start and test the UVD block πŸ’…


πŸ¦‹ SYNOPSIS πŸ¦‹

int uvd_v3_1_hw_init (struct amdgpu_ip_block *ip_block );

πŸŽ€ ARGUMENTS πŸŽ€

  • ip_block β€” a pointer to the amdgpu_ip_block for this hw instance. that's it, that's the whole argument 🫢

✨ DESCRIPTION ✨

so what does it do? it initializes the hardware, boots up the VCPU, and does some testing. iconic behavior honestly πŸ‘‘

on SI, the UVD is meant to be used in a specific power state, or alternatively the driver can manually enable its clock. like, pick a lane bestie. in amdgpu we use the dedicated UVD power state when DPM is enabled. calling amdgpu_dpm_enable_uvd makes DPM select the UVD power state for the SMU and afterwards enables the UVD clock. that little sequence is automatically done by amdgpu_uvd_ring_begin_use when work is submitted to the UVD ring β€” but here? here we have to call it manually in order to power up UVD before firmware validation. main character energy fr fr πŸ”₯

⚠️ note that we must not disable the UVD clock here, as that would cause the ring test to fail. like, do not do it. nope. πŸ’€

however (and this is the slay part), UVD is powered off automatically after the ring test: amdgpu_uvd_ring_end_use calls the UVD idle work handler, which will disable the UVD clock when all fences are signalled. so it cleans up after itself, we love a self-sufficient icon 🌈


πŸ‘‘ SEE ALSO πŸ‘‘

kernel file ./drivers/gpu/drm/amd/amdgpu/uvd_v3_1.c πŸ“

and the whole friend group:


and that's the whole page bestie πŸ’– this one dropped from ./drivers/gpu/drm/amd/amdgpu, dated October 2026 β€” go check it out, no cap πŸ§šπŸ’œ

πŸ“¦ where this page comes from