On 08/06/2025 08:35, Yafang Shao wrote: > A new hook, bpf_thp_gfp_mask(), is introduced to determine whether memory > reclamation is being performed by the current task or by kswapd. > > Signed-off-by: Yafang Shao <laoar.shao@xxxxxxxxx> > --- > include/linux/huge_mm.h | 5 +++++ > mm/huge_memory.c | 5 +++++ > 2 files changed, 10 insertions(+) > > diff --git a/include/linux/huge_mm.h b/include/linux/huge_mm.h > index db2eadd3f65b..6a40ebf25f5c 100644 > --- a/include/linux/huge_mm.h > +++ b/include/linux/huge_mm.h > @@ -198,6 +198,11 @@ static inline int bpf_thp_allocator(unsigned long vm_flags, > return THP_ALLOC_KHUGEPAGED | THP_ALLOC_CURRENT; > } > > +static inline gfp_t bpf_thp_gfp_mask(bool vma_madvised) > +{ > + return 0; > +} > + > static inline int highest_order(unsigned long orders) > { > return fls_long(orders) - 1; > diff --git a/mm/huge_memory.c b/mm/huge_memory.c > index d3e66136e41a..81c1711d13fa 100644 > --- a/mm/huge_memory.c > +++ b/mm/huge_memory.c > @@ -1280,6 +1280,11 @@ static vm_fault_t __do_huge_pmd_anonymous_page(struct vm_fault *vmf) > gfp_t vma_thp_gfp_mask(struct vm_area_struct *vma) > { > const bool vma_madvised = vma && (vma->vm_flags & VM_HUGEPAGE); > + gfp_t gfp_mask; > + > + gfp_mask = bpf_thp_gfp_mask(vma_madvised); I am guessing bpf_thp_gfp_mask returns 0, as its something yet to be implemented, but I really dont understand what this patch is supposed to do. > + if (gfp_mask) > + return gfp_mask; > > /* Always do synchronous compaction */ > if (test_bit(TRANSPARENT_HUGEPAGE_DEFRAG_DIRECT_FLAG, &transparent_hugepage_flags))