On Wed, Feb 25, 2026 at 12:40:09PM +0000, Alejandro Lucero Palau wrote:
>
> I can see the nid param is just a "preferred nid" with alloc pages. Using
> __GFP_PRIVATE will restrict the allocation to private nodes but I think the
> idea here is:
>
>
> 1) I own this node
>
> 2) Do not give me memory from another private node but from mine.
>
>
I mildly mis-read this question, apologies.
Multiple private nodes in the nodemask are ignored, because the nodemask
is a filter function for the fallback lists - and private nodes never
show up in the fallback lists (except for their own).
So for example
Nodes: Normal(A,B), Private(C,D)
Fallback lists:
A: [A,B]
B: [B,A]
C: [C,A,B]
D: [D,B,A]
combination | possible result
----------------------------------------------------------------
__GFP_PRIVATE + pref_node(C) + nodemask(NULL) = (C or A or B)
__GFP_PRIVATE + pref_node(C) + nodemask(C,D) = C
GFP_PRIVATE + pref_node(C) + nodemask(ALL) = C
Basically private nodes are completely ignored in the nodemask, so you
cannot do fallback allocations to other private nodes.
There is no good abstraction (that I have found) to communicate
multi-private-node allocations simply because this would imply needing
private nodes to be in the fallback lists for other nodes.
Maybe there is a possibility of modifying fallback lists explicitly, but
I think that is out of scope for the first implementation.
~Gregory