pvr_page_table_l1_free(9)
π pvr_page_table_l1_free β Kernel API Manual β¨
Okay so bestie, welcome to the β¨ pvr_page_table_l1_free(9) β¨ page β it lives in the Kernel API Manual, and it's literally the "bye-bye level 1 page table" moment. Short page, big consequences. Let's go π
πΈ NAME πΈ
pvr_page_table_l1_free β teardown a level 1 page table. That's the whole vibe. β¨
π¦ SYNOPSIS π¦
void pvr_page_table_l1_free (struct pvr_page_table_l1 *table );
That's it. One function, one pointer, zero return value. Iconic minimalism π
π ARGUMENTS π
tableβ the target level 1 page table. Like, the specific one you're tearing down. Point it at the right table or... don't, actually, please point it at the right table π
π₯ DESCRIPTION π₯
So here's the tea, and it's important tea: once you call this function on table, it is an error to use table again β even indirectly. Not "kinda sketchy," not "works if you're lucky" β an actual error. π«Ά
And yes, that includes calling pvr_page_table_l2_remove. You have to call that before pvr_page_table_l1_free. Before. Not after. Not during. Before. The ordering is not optional, the ordering is the whole personality of this function π
β οΈ Bestie, read that again:pvr_page_table_l2_removemust be called beforepvr_page_table_l1_free. Once you free, the pointer is donezo β no reusing, no peeking, no "just one more call." π The original is very emphatic about this and put asterisks around "before" because it means it. Directly using the table after free is an error. Indirectly using it after free is also an error. There is no loophole route, iykyk. π§
π SEE ALSO π
Buckle up, this list is long and honestly it ate π
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_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 page, bestie π«Άπ Sourced straight from ./drivers/gpu/drm/imagination, dated October 2026 β so yes, this manual page is from the future, and it still wants you to call pvr_page_table_l2_remove first. 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