On Thu, Oct 23, 2025 at 2:21 PM Jason Gunthorpe <[email protected]> wrote: > > The generic API is intended to be separated from the implementation of > page table algorithms. It contains only accessors for walking and > manipulating the table and helpers that are useful for building an > implementation. Memory management is not in the generic API, but part of > the implementation. > > Using a multi-compilation approach the implementation module would include > headers in this order: > > common.h > defs_FMT.h > pt_defs.h > FMT.h > pt_common.h > IMPLEMENTATION.h > > Where each compilation unit would have a combination of FMT and > IMPLEMENTATION to produce a per-format per-implementation module. > > The API is designed so that the format headers have minimal logic, and > default implementations are provided if the format doesn't include one. > > Generally formats provide their code via an inline function using the > pattern: > > static inline FMTpt_XX(..) {} > #define pt_XX FMTpt_XX > > The common code then enforces a function signature so that there is no > drift in function arguments, or accidental polymorphic functions (as has > been slightly troublesome in mm). Use of function-like #defines are > avoided in the format even though many of the functions are small enough. > > Provide kdocs for the API surface. > > This is enough to implement the 8 initial format variations with all of > their features: > * Entries comprised of contiguous blocks of IO PTEs for larger page > sizes (AMDv1, ARMv8) > * Multi-level tables, up to 6 levels. Runtime selected top level > * The size of the top table level can be selected at runtime (ARM's > concatenated tables) > * The number of levels in the table can optionally increase dynamically > during map (AMDv1) > * Optional leaf entries at any level > * 32 bit/64 bit virtual and output addresses, using every bit > * Sign extended addressing (x86) > * Dirty tracking > > A basic simple format takes about 200 lines to declare the require inline > functions. > > Tested-by: Alejandro Jimenez <[email protected]> > Reviewed-by: Kevin Tian <[email protected]> > Signed-off-by: Jason Gunthorpe <[email protected]>
Reviewed-by: Pasha Tatashin <[email protected]>
