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
315 tables in place. This is a very common operation in the kernel performed on
320 4. **Freeing** page tables - When finally the kernel removes page tables from a
323 tables in the specified range, ignoring existing leaf entries (it assumes the
336 ahead and perform these operations on page tables (though internally, kernel
340 .. note:: We free empty PTE tables on zap under the RCU lock - this does not
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
358 Traversing non-VMA page tables
361 We've focused above on traversal of page tables belonging to VMAs. It is also
362 possible to traverse page tables which are not represented by VMAs.
367 establishing and tearing down page its page tables.
376 Since, aside from vmalloc and memory hot plug, kernel page tables are not torn
390 detaches VMAs under an mmap write lock before tearing down page tables under a
496 .. warning:: Locking rules for PTE-level page tables are very different from
497 locking rules for page tables at other levels.
502 .. note:: This section explores page table locking requirements for page tables
507 additional locks dedicated to page tables:
509 * **Higher level page table locks** - Higher level page tables, that is PGD, P4D
514 either kept within the folios describing the page tables or allocated
523 Importantly, note that on a **traversal** of page tables, sometimes no such
534 We establish basic locking rules when interacting with page tables:
538 tables concurrently (such as on invocation of :c:func:`!free_pgtables`).
549 zapping (via :c:func:`!unmap_vmas`) and freeing page tables (via
553 all other page tables in the freed range), so installing new PTE
557 There are additional rules applicable when moving page tables, which we discuss
560 PTE-level page tables are different from page tables at other levels, and there
569 So accessing PTE-level page tables requires at least holding an RCU read lock;
581 To access PTE-level page tables, a helper like :c:func:`!pte_offset_map_lock` or
593 functionality like GUP-fast locklessly traverses (that is reads) page tables,
672 tables as necessary, using these locks to avoid races or overwriting anything,
700 Tearing down page tables themselves is something that requires significant
701 care. There must be no way that page tables designated for removal can be
710 address_space->i_mmap` interval trees) can have its page tables torn down.
718 within the range whose page tables are being torn down.
728 .. note:: It is possible for leaf page tables to be torn down independent of
729 the page tables above it as is done by
737 page tables). Most notable of these is :c:func:`!mremap`, which is capable of
738 moving higher level page tables.