STRUCT PVR_FW_OBJECT(9)
π struct pvr_fw_object(9) π
okay bestie so this is a page out of the Kernel API Manual, and today's main character is struct pvr_fw_object β lowkey just a container for firmware memory allocations. that's it, that's the vibe. β¨
β¨ SYNOPSIS β¨
here's the whole glow-up, verbatim, no cap:
struct pvr_fw_object {
struct kref ref_count;
struct pvr_gem_object *gem;
struct drm_mm_node fw_mm_node;
u32 fw_addr_offset;
void (*init)(void *cpu_ptr, void *priv);
void *init_priv;
struct list_head node;
};
π Members π
every field, bestie, we're not skipping a single one π
ref_countβ the FW object reference counter. it's keeping score fr fr.gemβ the GEM object backing the FW object. the whole thing is built on top of it π«Άfw_mm_nodeβ the node representing the mapping in FW address space. β οΈ important:pvr_obj->lockmust be held when writing. like, not optional, not a suggestion, hold the lock.fw_addr_offsetβ the virtual address offset of the firmware mapping. this one's only valid ifflagshasPVR_GEM_OBJECT_FLAGS_FW_MAPPEDset. no flag, no validity, iykyk πinitβ the initialisation callback. it gets called on object creation and on FW hard reset π₯. and heads up: the object will have been zeroed before this is called, so don't come for it expecting leftovers.init_privβ private data for the initialisation callback. its little emotional support pointer πnodeβ the node for the firmware object list. every baddie needs a linked list to belong to π
π SEE ALSO π
go read these next, bestie, they're iconic:
- Kernel file
./drivers/gpu/drm/imagination/pvr_fw.hstruct pvr_fw_defs(9),struct pvr_fw_mem(9),pvr_fw_object_get_dma_addr(9)
and that's the whole page babes πΈ this one lives in ./drivers/gpu/drm/imagination, dated October 2026 β so yeah, future-coded. slay. π
π
π¦ where this page comes from
- nixpkgs unstable: linux-manual 7.3.1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms