On 7/13/25 19:43, Shivank Garg wrote: > Previously, guest-memfd allocations followed local NUMA node id in absence > of process mempolicy, resulting in arbitrary memory allocation. > Moreover, mbind() couldn't be used by the VMM as guest memory wasn't > mapped into userspace when allocation occurred. > > Enable NUMA policy support by implementing vm_ops for guest-memfd mmap > operation. This allows the VMM to map the memory and use mbind() to set the > desired NUMA policy. The policy is stored in the inode structure via > kvm_gmem_inode_info, as memory policy is a property of the memory (struct > inode) itself. The policy is then retrieved via mpol_shared_policy_lookup() > and passed to filemap_grab_folio_mpol() to ensure that allocations follow > the specified memory policy. > > This enables the VMM to control guest memory NUMA placement by calling > mbind() on the mapped memory regions, providing fine-grained control over > guest memory allocation across NUMA nodes. > > The policy change only affect future allocations and does not migrate > existing memory. This matches mbind(2)'s default behavior which affects > only new allocations unless overridden with MPOL_MF_MOVE/MPOL_MF_MOVE_ALL > flags, which are not supported for guest_memfd as it is unmovable. > > Suggested-by: David Hildenbrand <da...@redhat.com> > Signed-off-by: Shivank Garg <shiva...@amd.com>
Acked-by: Vlastimil Babka <vba...@suse.cz>