STRUCT PVR_PAGE_TABLE_L2(9)
πΈ struct pvr_page_table_l2(9) β a wrapped level 2 page table πΈ
okay bestie, welcome to the Kernel API Manual section for struct pvr_page_table_l2 β yes that whole manual, and yes this struct is lowkey the main character of the page table tree π«Ά
β¨ SYNOPSIS β¨
struct pvr_page_table_l2 {
struct pvr_page_table_l1 *entries[ROGUE_MMUCTRL_ENTRIES_PC_VALUE];
struct pvr_mmu_backing_page backing_page;
u16 entry_count;
};
look at her. she's structured. she's iconic. let's go through the members one by one π
π Members
entriesβ these are the children of this node in the page table tree structure, and they're also mirror tables, no cap πͺ the indexing of this array is identical to that of the raw equivalent (pvr_page_table_l1_raw.entries), so you can vibe-check one against the other with zero mental gymnastics.backing_pageβ a handle to the memory that holds the raw equivalent of this table. > For internal use only. so likeβ¦ hands off, bestie π that's not for you.entry_countβ the current number of valid entries (that we know of) in this table. this value is essentially a refcount, fr fr β the table is destroyed when this value gets decremented to zero bypvr_page_table_l2_remove. it's giving "when the counter hits zero the party's over" π
π Description
so to access the raw part of this table, you use pvr_page_table_l2_get_raw. alternatively, if you wanna access a raw entry directly, use pvr_page_table_l2_get_entry_raw. two doors, same house πͺβ¨
and here's the part that makes her special: a level 2 page table forms the root of the page table tree structure π³ so this type has no parent or parent_idx members. she answers to no one. mother is mothering π
π¦ SEE ALSO
- Kernel file
./drivers/gpu/drm/imagination/pvr_mmu.c pvr_mmu_set_flush_flags(9)pvr_mmu_flush_request_all(9)pvr_mmu_flush_exec(9)PowerVR Virtual Memory Handling(9)PowerVR Virtual Memory Handling (constants)(9)MMU backing pages(9)MMU backing pages (constants)(9)struct pvr_mmu_backing_page(9)pvr_mmu_backing_page_init(9)pvr_mmu_backing_page_fini(9)pvr_mmu_backing_page_sync(9)Raw page tables(9)struct pvr_page_table_l2_entry_raw(9)pvr_page_table_l2_entry_raw_set(9)struct pvr_page_table_l1_entry_raw(9)pvr_page_table_l1_entry_raw_set(9)struct pvr_page_table_l0_entry_raw(9)struct pvr_page_flags_raw(9)pvr_page_table_l0_entry_raw_set(9)pvr_page_flags_raw_create(9)struct pvr_page_table_l2_raw(9)struct pvr_page_table_l1_raw(9)struct pvr_page_table_l0_raw(9)Mirror page tables(9)pvr_page_table_l2_init(9)pvr_page_table_l2_fini(9)pvr_page_table_l2_sync(9)pvr_page_table_l2_get_raw(9)pvr_page_table_l2_get_entry_raw(9)pvr_page_table_l2_entry_is_valid(9)struct pvr_page_table_l1(9)pvr_page_table_l1_init(9)pvr_page_table_l1_free(9)pvr_page_table_l1_sync(9)pvr_page_table_l1_get_raw(9)pvr_page_table_l1_get_entry_raw(9)pvr_page_table_l1_entry_is_valid(9)struct pvr_page_table_l0(9)pvr_page_table_l0_init(9)pvr_page_table_l0_free(9)pvr_page_table_l0_sync(9)pvr_page_table_l0_get_raw(9)pvr_page_table_l0_get_entry_raw(9)pvr_page_table_l0_entry_is_valid(9)struct pvr_mmu_context(9)struct pvr_page_table_ptr(9)struct pvr_mmu_op_context(9)pvr_page_table_l2_insert(9)pvr_page_table_l2_remove(9)pvr_page_table_l1_insert(9)pvr_page_table_l1_remove(9)pvr_page_table_l0_insert(9)pvr_page_table_l0_remove(9)Page table index utilities(9)pvr_page_table_l2_idx(9)pvr_page_table_l1_idx(9)pvr_page_table_l0_idx(9)High-level page table operations(9)pvr_page_table_l1_get_or_insert(9)pvr_page_table_l0_get_or_insert(9)pvr_mmu_context_create(9)pvr_mmu_context_destroy(9)pvr_mmu_get_root_table_dma_addr(9)pvr_page_table_l1_alloc(9)pvr_page_table_l0_alloc(9)pvr_mmu_op_context_require_sync(9)pvr_mmu_op_context_sync_manual(9)pvr_mmu_op_context_sync_partial(9)pvr_mmu_op_context_sync(9)pvr_mmu_op_context_load_tables(9)pvr_mmu_op_context_set_curr_page(9)pvr_mmu_op_context_next_page(9)Single page operations(9)pvr_page_create(9)pvr_page_destroy(9)pvr_mmu_op_context_destroy(9)pvr_mmu_op_context_create(9)pvr_mmu_op_context_unmap_curr_page(9)pvr_mmu_unmap(9)pvr_mmu_map_sgl(9)pvr_mmu_map(9)
π and that's the whole page, bestie! this one came straight out of ./drivers/gpu/drm/imagination and it's dated October 2026 β so yeah, it's from the future, and it still ate π
β¨ go read the rest of the manual, ily, 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