Lines Matching full:tables
40 they describe nor the page tables that map them.
279 Page tables
282 We won't speak exhaustively on the subject but broadly speaking, page tables map
283 virtual addresses to physical ones through a series of page tables, each of
294 .. note:: In instances where the architecture supports fewer page tables than
301 There are four key operations typically performed on page tables:
303 1. **Traversing** page tables - Simply reading page tables in order to traverse
313 tables in place. This is a very common operation in the kernel performed on
318 4. **Freeing** page tables - When finally the kernel removes page tables from a
321 tables in the specified range, ignoring existing leaf entries (it assumes the
334 ahead and perform these operations on page tables (though internally, kernel
342 .. warning:: Page tables are normally only traversed in regions covered by VMAs.
343 If you want to traverse page tables in areas that might not be
347 **Freeing** page tables is an entirely internal memory management operation and
350 .. warning:: When **freeing** page tables, it must not be possible for VMAs
351 containing the ranges those page tables map to be accessible via
458 .. warning:: Locking rules for PTE-level page tables are very different from
459 locking rules for page tables at other levels.
465 additional locks dedicated to page tables:
467 * **Higher level page table locks** - Higher level page tables, that is PGD, P4D
472 either kept within the folios describing the page tables or allocated
481 Importantly, note that on a **traversal** of page tables, sometimes no such
492 We establish basic locking rules when interacting with page tables:
496 tables concurrently (such as on invocation of :c:func:`!free_pgtables`).
507 zapping (via :c:func:`!unmap_vmas`) and freeing page tables (via
511 all other page tables in the freed range), so installing new PTE
515 There are additional rules applicable when moving page tables, which we discuss
518 PTE-level page tables are different from page tables at other levels, and there
527 So accessing PTE-level page tables requires at least holding an RCU read lock;
539 To access PTE-level page tables, a helper like :c:func:`!pte_offset_map_lock` or
551 functionality like GUP-fast locklessly traverses (that is reads) page tables,
630 tables as necessary, using these locks to avoid races or overwriting anything,
658 Tearing down page tables themselves is something that requires significant
659 care. There must be no way that page tables designated for removal can be
668 address_space->i_mmap` interval trees) can have its page tables torn down.
676 within the range whose page tables are being torn down.
686 .. note:: It is possible for leaf page tables to be torn down independent of
687 the page tables above it as is done by
695 page tables). Most notable of these is :c:func:`!mremap`, which is capable of
696 moving higher level page tables.