Hello. On Thu, Jan 08, 2026 at 03:37:52PM -0500, Gregory Price wrote: > --- a/Documentation/admin-guide/cgroup-v2.rst > +++ b/Documentation/admin-guide/cgroup-v2.rst > @@ -2530,8 +2530,11 @@ Cpuset Interface Files > cpuset-enabled cgroups. > > It lists the onlined memory nodes that are actually granted to > - this cgroup by its parent. These memory nodes are allowed to > - be used by tasks within the current cgroup. > + this cgroup by its parent. This includes both regular SystemRAM > + nodes (N_MEMORY) and Private Nodes (N_PRIVATE) that provide > + device-specific memory not intended for general consumption. > + Tasks within this cgroup may access Private Nodes using explicit > + __GFP_THISNODE allocations if the node is in this mask. Notice that these files are exposed for userspace. Hence I'm not sure they'd be able to ask for allocations like this (or even need to know about this implementation detail). > > If "cpuset.mems" is empty, it shows all the memory nodes from the > parent cgroup that will be available to be used by this cgroup. > @@ -2541,6 +2544,25 @@ Cpuset Interface Files > > Its value will be affected by memory nodes hotplug events. > > + cpuset.mems.sysram > + A read-only multiple values file which exists on all > + cpuset-enabled cgroups. > + > + It lists the SystemRAM nodes (N_MEMORY) that are available for > + general memory allocation by tasks within this cgroup. This is > + a subset of "cpuset.mems.effective" that excludes Private Nodes. > + > + Normal page allocations are restricted to nodes in this mask. > + The kernel page allocator, slab allocator, and compaction only > + consider SystemRAM nodes when allocating memory for tasks. > + > + Private Nodes are excluded from this mask because their memory > + is managed by device drivers for specific purposes (e.g., CXL > + compressed memory, accelerator memory) and should not be used > + for general allocations. So I wonder whether the N_PRIVATE nodes should be included in cpuset.mems[.effective] at all. (It resembles CPU isolation to me a bit ~ cpuset.cpus.isolated.) Maybe you only want to expose it on the root cpuset cg and inverted like cpuset.mems.private? Thanks, Michal