STRUCT PVR_PAGE_TABLE_PTR(9)
hey bestie π youβre looking at struct pvr_page_table_ptr(9) from the Kernel API Manual. itβs giving βtiny struct, whole page-table situation,β and weβre gonna get into all of it. β¨
π NAME π
struct pvr_page_table_ptr β a reference to a single physical page as indexed by the page table structure. periodt. π¦
β¨ SYNOPSIS β¨
struct pvr_page_table_ptr {
struct pvr_page_table_l1 *l1_table;
struct pvr_page_table_l0 *l0_table;
u16 l2_idx;
u16 l1_idx;
u16 l0_idx;
};
π Members π
okay bestie, hereβs the whole cast β no skipping, every field is main character energy π
l1_tableβ a cached handle to the level 1 page table that the context is currently traversing. lowkey the L1 passport.l0_tableβ a cached handle to the level 0 page table that the context is currently traversing. same vibe, one level down.l2_idxβ the index into the level 2 page table that the context is currently referencing. π―l1_idxβ the index into the level 1 page table that the context is currently referencing.l0_idxβ the index into the level 0 page table that the context is currently referencing.
πΈ Description πΈ
so this struct is intended for embedding in a struct pvr_mmu_op_context. thatβs the assignment, and honestly? iconic. π«Ά
π₯ SEE ALSO π₯
the full link-up, no crumbs β go click through these when youβre deep in the page-table lore π§
- 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)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_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)
mwah π this page lives under ./drivers/gpu/drm/imagination, dated October 2026, and yes itβs still struct pvr_page_table_ptr(9). bye bestie π«Ά
π¦ 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