STRUCT PVR_FW_MEM(9)
π NAME π
struct pvr_fw_mem β the FW memory allocation situation, and bestie, it's a whole vibe β¨
So like, this is the struct that holds all the firmware memory allocations. Every pointer, every size, every object β it's all living in here. Periodt. π
π¦ SYNOPSIS π¦
struct pvr_fw_mem {
struct pvr_fw_object *code_obj;
struct pvr_fw_object *data_obj;
struct pvr_fw_object *core_code_obj;
struct pvr_fw_object *core_data_obj;
u8 *code;
u8 *data;
u8 *core_code;
u8 *core_data;
u32 code_alloc_size;
u32 data_alloc_size;
u32 core_code_alloc_size;
u32 core_data_alloc_size;
struct pvr_fw_object *fwif_connection_ctl_obj;
struct pvr_fw_object *osinit_obj;
struct pvr_fw_object *sysinit_obj;
struct pvr_fw_object *osdata_obj;
struct pvr_fw_object *hwrinfobuf_obj;
struct pvr_fw_object *sysdata_obj;
struct pvr_fw_object *power_sync_obj;
struct pvr_fw_object *fault_page_obj;
struct pvr_fw_object *gpu_util_fwcb_obj;
struct pvr_fw_object *runtime_cfg_obj;
struct pvr_fw_object *mmucache_sync_obj;
};
Like, look at her. She's got range. π
π Members π
Okay so let's go through the whole cast, main-character by main-character π
πΈ The firmware sections (code & data) πΈ
code_objβ the object that represents firmware code, fr fr.data_objβ the object that represents firmware data, no cap.core_code_objβ object representing firmware core code. Lowkey might beNULLif the firmware doesn't contain this section πcore_data_objβ object representing firmware core data. Also may beNULLif the firmware doesn't contain this section. Not every firmware comes with the full set, iykyk π«Άcodeβ the driver-side copy of firmware code. Like, the driver keeps its own lil duplicate πdataβ driver-side copy of firmware data.core_codeβ driver-side copy of firmware core code. May beNULLif the firmware doesn't contain this section πcore_dataβ driver-side copy of firmware core data. May beNULLif the firmware doesn't contain this section π
β¨ The allocation sizes β¨
code_alloc_sizeβ the allocation size of the firmware code section. Numbers, bestie π’data_alloc_sizeβ allocation size of the firmware data section.core_code_alloc_sizeβ allocation size of the firmware core code section.core_data_alloc_sizeβ allocation size of the firmware core data section.
π§ The FWIF / FW structure objects π§
fwif_connection_ctl_objβ object representing the FWIF connection control structure. That's a lot of words but it ate πosinit_objβ object representing the FW OSINIT structure.sysinit_objβ object representing the FW SYSINIT structure.osdata_objβ object representing the FW OSDATA structure.hwrinfobuf_objβ object representing the FWhwrinfobufstructure.sysdata_objβ object representing the FW SYSDATA structure.
π₯ The rest of the cast π₯
power_sync_objβ object representing power sync state. Keeping the power in sync, iconic behaviour β‘fault_page_objβ object representing the FW fault page. If something goes wrong, this is where it's at πgpu_util_fwcb_objβ object representing the FW GPU utilisation control structure. Utilisation! Control! Structure! πruntime_cfg_objβ object representing the FW runtime config structure.mmucache_sync_objβ object used as the sync parameter in an MMU cache operation. Very specific, very niche, we love her for it π
β SEE ALSO β
Go read these next, bestie, they're literally linked in the kernel file ./drivers/gpu/drm/imagination/pvr_fw.h π₯°
struct pvr_fw_object(9)struct pvr_fw_defs(9)pvr_fw_object_get_dma_addr(9)
Ngl the whole thing lives in ./drivers/gpu/drm/imagination/pvr_fw.h β that's the kernel file, the source of truth, the moment π―
Okay that's the whole page, you're welcome, now go read some kernel source π«Ά
Kernel API Manual β¨ struct pvr_fw_mem(9) β¨ from ./drivers/gpu/drm/imagination β¨ October 2026 β¨ mwah, slay, bye! π
ππ¦
π¦ 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