On Wed 16-01-19 05:18:27, Matthew Wilcox wrote: > On Wed, Jan 16, 2019 at 06:42:22PM +0530, Anshuman Khandual wrote: > > On 01/16/2019 06:00 PM, Matthew Wilcox wrote: > > > On Wed, Jan 16, 2019 at 07:57:03AM +0100, Michal Hocko wrote: > > >> On Wed 16-01-19 11:51:32, Anshuman Khandual wrote: > > >>> All architectures have been defining their own PGALLOC_GFP as (GFP_KERNEL | > > >>> __GFP_ZERO) and using it for allocating page table pages. This causes some > > >>> code duplication which can be easily avoided. GFP_KERNEL allocated and > > >>> cleared out pages (__GFP_ZERO) are required for page tables on any given > > >>> architecture. This creates a new generic GFP flag flag which can be used > > >>> for any page table page allocation. Does not cause any functional change. > > >>> > > >>> GFP_PGTABLE is being added into include/asm-generic/pgtable.h which is the > > >>> generic page tabe header just to prevent it's potential misuse as a general > > >>> allocation flag if included in include/linux/gfp.h. > > >> > > >> I haven't reviewed the patch yet but I am wondering whether this is > > >> really worth it without going all the way down to unify the common code > > >> and remove much more code duplication. Or is this not possible for some > > >> reason? > > > > > > Exactly what I suggested doing in response to v1. > > > > > > Also, the approach taken here is crazy. x86 has a feature that no other > > > architecture has bothered to implement yet -- accounting page tables > > > to the process. Yet instead of spreading that goodness to all other > > > architectures, Anshuman has gone to more effort to avoid doing that. > > > > The basic objective for this patch is to create a common minimum allocation > > flag that can be used by architectures but that still allows archs to add > > on additional constraints if they see fit. This patch does not intend to > > change functionality for any arch. > > I disagree with your objective. Making more code common is a great idea, > but this patch is too unambitious. We should be heading towards one or > two page table allocation functions instead of having every architecture do > its own thing. > > So start there. Move the x86 function into common code and convert one > other architecture to use it too. Agreed! -- Michal Hocko SUSE Labs