On Thu, Sep 11, 2025 at 11:54 PM Lance Yang <lance.yang@xxxxxxxxx> wrote: > > On Wed, Sep 10, 2025 at 11:00 AM Yafang Shao <laoar.shao@xxxxxxxxx> wrote: > > > > Currently, THP allocation cannot be restricted to khugepaged alone while > > being disabled in the page fault path. This limitation exists because > > disabling THP allocation during page faults also prevents the execution of > > khugepaged_enter_vma() in that path. > > > > With the introduction of BPF, we can now implement THP policies based on > > different TVA types. This patch adjusts the logic to support this new > > capability. > > > > While we could also extend prtcl() to utilize this new policy, such a > > change would require a uAPI modification. > > > > Signed-off-by: Yafang Shao <laoar.shao@xxxxxxxxx> > > --- > > mm/huge_memory.c | 1 - > > mm/memory.c | 13 ++++++++----- > > 2 files changed, 8 insertions(+), 6 deletions(-) > > > > diff --git a/mm/huge_memory.c b/mm/huge_memory.c > > index 523153d21a41..1e9e7b32e2cf 100644 > > --- a/mm/huge_memory.c > > +++ b/mm/huge_memory.c > > @@ -1346,7 +1346,6 @@ vm_fault_t do_huge_pmd_anonymous_page(struct vm_fault *vmf) > > ret = vmf_anon_prepare(vmf); > > if (ret) > > return ret; > > - khugepaged_enter_vma(vma, vma->vm_flags); > > > > if (!(vmf->flags & FAULT_FLAG_WRITE) && > > !mm_forbids_zeropage(vma->vm_mm) && > > diff --git a/mm/memory.c b/mm/memory.c > > index d8819cac7930..d0609dc1e371 100644 > > --- a/mm/memory.c > > +++ b/mm/memory.c > > @@ -6289,11 +6289,14 @@ static vm_fault_t __handle_mm_fault(struct vm_area_struct *vma, > > if (pud_trans_unstable(vmf.pud)) > > goto retry_pud; > > > > - if (pmd_none(*vmf.pmd) && > > - thp_vma_allowable_order(vma, vm_flags, TVA_PAGEFAULT, PMD_ORDER)) { > > - ret = create_huge_pmd(&vmf); > > - if (!(ret & VM_FAULT_FALLBACK)) > > - return ret; > > + if (pmd_none(*vmf.pmd)) { > > + if (vma_is_anonymous(vma)) > > + khugepaged_enter_vma(vma, vm_flags); > > Hmm... I'm a bit confused about the different conditions for calling > khugepaged_enter_vma(). It's sometimes called for anonymous VMAs, other > times ONLY for non-anonymous, and sometimes unconditionally ;) Right, it is really confusing. > > Anyway, this isn't a blocker, just something I noticed. I might try to > simplify that down the road. please do it when you have a moment. > > Acked-by: Lance Yang <lance.yang@xxxxxxxxx> Thanks for the review. -- Regards Yafang