On 01/12/2019 09:19 PM, Matthew Wilcox wrote:
On Sat, Jan 12, 2019 at 02:49:29PM +0100, Christophe Leroy wrote:
quoted
As far as I can see,
#define GFP_KERNEL_ACCOUNT (GFP_KERNEL | __GFP_ACCOUNT)
So what's the difference between:
(GFP_KERNEL_ACCOUNT | __GFP_ZERO) & ~__GFP_ACCOUNT
and
(GFP_KERNEL | __GFP_ZERO) & ~__GFP_ACCOUNT
Nothing. But there's a huge difference in the other parts of that same
file where GFP_ACCOUNT is _not_ used.
I think this unification is too small to bother with. Something I've
had on my todo list for some time and have not done anything about
is to actually unify all of the architecture pte/pmd/... allocations.
There are tricks some architectures use that others would benefit from.
Sure. Could you please elaborate on this ?
Invariably all kernel pgtable page allocations should use GFP_PGTABLE and
all user page table allocation should use (GFP_PGTABLE | __GFP_ACCOUNT).
Ideally there should be default generic functions user_pgtable_gfp() or
kernel_pgtable_gfp() returning these values. Overrides can be provided if
an arch still wants some more control.