Messages in this thread | | | Date | Fri, 14 Nov 2014 02:58:33 +0200 | From | "Kirill A. Shutemov" <> | Subject | Re: [PATCH 3/5] lib: lockless generic and arch independent page table (gpt) v2. |
| |
On Thu, Nov 13, 2014 at 03:50:02PM -0800, Linus Torvalds wrote: > +/* > + * The 'tree_level' data only describes one particular level > + * of the tree. The upper levels are totally invisible to the > + * user of the tree walker, since the tree walker will walk > + * those using the tree definitions. > + * > + * NOTE! "struct tree_entry" is an opaque type, and is just a > + * used as a pointer to the particular level. You can figure > + * out which level you are at by looking at the "tree_level", > + * but even better is to just use different "lookup()" > + * functions for different levels, at which point the > + * function is inherent to the level.
Please, don't.
We will end up with the same last-level centric code as we have now in mm subsystem: all code only cares about pte. It makes implementing variable page size support really hard and lead to copy-paste approach. And to hugetlb parallel world...
It would be nice to have tree_level description generic enough to get rid of pte_present()/pte_dirty()/pte_* and implement generic helpers instead.
Apart from variable page size problem, we could get one day support different CPU page table format supported in runtime: PAE/non-PAE on 32-bit x86 or LPAE/non-LPAE on ARM in one binary kernel image.
The big topic is how to get it done without significant runtime cost :-/
-- Kirill A. Shutemov
| |