STRUCT PVR_PAGE_TABLE_L0(9)
π struct pvr_page_table_l0(9) π
okay so this is a page straight out of the Kernel API Manual and it's literally all about struct pvr_page_table_l0 β a wrapped level 0 page table. like, the babiest table in the tree, but make it wrapped. bestie, let's get into it π
β¨ NAME β¨
struct pvr_page_table_l0 β a wrapped level 0 page table, no cap. that's the whole vibe π¦
πΈ SYNOPSIS πΈ
here's the actual shape of her, copy it exactly bestie:
struct pvr_page_table_l0 {
struct pvr_mmu_backing_page backing_page;
union {
struct pvr_page_table_l1 *parent;
struct pvr_page_table_l0 *next_free;
};
u16 parent_idx;
u16 entry_count;
};
π«Ά Members π«Ά
okay so each of these fields has main character energy in its own way:
backing_pageβ a handle to the memory which holds the raw equivalent of this table. For internal use only. like, don't touch, iykyk π{unnamed_union}β anonymous. yes, she's mysterious, she has no name, that's the point β¨parentβ the parent of this node in the page table tree structure.
this is also a mirror table. πͺ
only valid when the L0 page table is active. when the L0 page table has been removed and queued for destruction, the next_free field should be used instead. so like, vibe check before you read it, fr fr.
next_freeβ pointer to the next L0 page table to take/free.
used to form a linked list of L0 page tables. this gets used when preallocating tables and when the page table has been removed and queued for destruction. lowkey the cleanup crew π
parent_idxβ the index of the entry in the parent table (seeparent) which corresponds to this table.entry_countβ the current number of valid entries (that we know of) in this table. this value is essentially a refcount β the table is destroyed when this value is decremented to zero bypvr_page_table_l0_remove. so like, every remove is her clock ticking down π iconic behaviour honestly.
π¦ Description π¦
to access the raw part of this table, use pvr_page_table_l0_get_raw. alternatively, to access a raw entry directly, use pvr_page_table_l0_get_entry_raw. pick your fighter π
there is no mirror representation of an individual page, so this type has no entries member. not a bug, just her design. periodt.
π₯ 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)struct pvr_page_table_l2(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)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)pluralpvr_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, go forth and page-table responsibly π
β§ο½₯οΎ source: ./drivers/gpu/drm/imagination Β· October 2026 Β· struct pvr_page_table_l0(9) οΎο½₯β§ π§ββοΈπ
π¦ 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