vce_v1_0_ens...o_32bit_addr(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… vce_v1_0_ens...o_32bit_addr β€” the Kernel API Manual moment (section 9, bestie)

okay so this is a page straight out of the Kernel API Manual, section 9, and the name got truncated at the party like vce_v1_0_ens...o_32bit_addr β€” the full glow-up name is vce_v1_0_ensure_vcpu_bo_32bit_addr. iconic. let's get into it ✨


🌸 NAME 🌸

vce_v1_0_ensure_vcpu_bo_32bit_addr β€” literally just making sure the VCPU BO has a 32-bit address πŸŽ€


πŸ¦‹ SYNOPSIS πŸ¦‹

int vce_v1_0_ensure_vcpu_bo_32bit_addr (struct amdgpu_device *adev );

πŸ’– ARGUMENTS πŸ’–

  • adev β€” an amdgpu_device pointer. that's the whole vibe, it's the only thing you're handing over 🫢

✨ DESCRIPTION ✨

so the tea is: due to various hardware limitations, VCE1 needs the VCPU BO to live down in the low 32-bit address range. no negotiating. and this function is the one that ensures the VCPU BO actually has a 32-bit GPU address β€” or, if that's just not possible, it returns an error code 😭

to accommodate that (and yes, we're spelling it right this time πŸ’…), the move is: we put GART in the LOW address range and reserve some GART pages where we map the VCPU BO, so that it ends up with a 32-bit address. slay. that's the whole strategy πŸ‘‘

and the BAR address? it's zero, and we genuinely can't change it because of the firmware validation mechanism. it's giving non-negotiable. from what we can tell, it fails to initialize if the address is >= 128 MiB πŸ’€ so like, don't.


⭐ SEE ALSO ⭐

kernel file, for the girlies who want to read the source:


reminder bestie: VCE1 will not be flexing on you if the address sneaks up to >= 128 MiB, and that BAR address stays at zero because firmware said so. periodt. πŸ”₯

and that's the page!! brought to you by ./drivers/gpu/drm/amd/amdgpu, dated October 2026, filed under vce_v1_0_ens...o_32bit_addr(9) πŸ§šπŸ’œ mwah, go read the other vce_v1_0_* pages, ily πŸŽ€

πŸ“¦ where this page comes from