From: Andrew Morton <akpm@linux-foundation.org>
To: Yang Shi <shy828301@gmail.com>
Cc: vbabka@suse.cz, kirill.shutemov@linux.intel.com,
linmiaohe@huawei.com, songliubraving@fb.com, riel@surriel.com,
willy@infradead.org, ziy@nvidia.com, tytso@mit.edu,
linux-mm@kvack.org, linux-fsdevel@vger.kernel.org,
linux-kernel@vger.kernel.org
Subject: Re: [v4 PATCH 6/8] mm: khugepaged: make hugepage_vma_check() non-static
Date: Tue, 10 May 2022 14:05:45 -0700 [thread overview]
Message-ID: <20220510140545.5dd9d3145b53cb7e226c236a@linux-foundation.org> (raw)
In-Reply-To: <20220510203222.24246-7-shy828301@gmail.com>
On Tue, 10 May 2022 13:32:20 -0700 Yang Shi <shy828301@gmail.com> wrote:
> The hugepage_vma_check() could be reused by khugepaged_enter() and
> khugepaged_enter_vma_merge(), but it is static in khugepaged.c.
> Make it non-static and declare it in khugepaged.h.
>
> ..
>
> @@ -508,20 +508,13 @@ void __khugepaged_enter(struct mm_struct *mm)
> void khugepaged_enter_vma_merge(struct vm_area_struct *vma,
> unsigned long vm_flags)
> {
> - unsigned long hstart, hend;
> -
> - /*
> - * khugepaged only supports read-only files for non-shmem files.
> - * khugepaged does not yet work on special mappings. And
> - * file-private shmem THP is not supported.
> - */
> - if (!hugepage_vma_check(vma, vm_flags))
> - return;
> -
> - hstart = (vma->vm_start + ~HPAGE_PMD_MASK) & HPAGE_PMD_MASK;
> - hend = vma->vm_end & HPAGE_PMD_MASK;
> - if (hstart < hend)
> - khugepaged_enter(vma, vm_flags);
> + if (!test_bit(MMF_VM_HUGEPAGE, &vma->vm_mm->flags) &&
> + khugepaged_enabled() &&
> + (((vma->vm_start + ~HPAGE_PMD_MASK) & HPAGE_PMD_MASK) <
> + (vma->vm_end & HPAGE_PMD_MASK))) {
Reviewing these bounds-checking tests is so hard :( Can we simplify?
> + if (hugepage_vma_check(vma, vm_flags))
> + __khugepaged_enter(vma->vm_mm);
> + }
> }
void khugepaged_enter_vma(struct vm_area_struct *vma,
unsigned long vm_flags)
{
if (test_bit(MMF_VM_HUGEPAGE, &vma->vm_mm->flags))
return;
if (!khugepaged_enabled())
return;
if (round_up(vma->vm_start, HPAGE_PMD_SIZE) >=
(vma->vm_end & HPAGE_PMD_MASK))
return; /* vma is too small */
if (!hugepage_vma_check(vma, vm_flags))
return;
__khugepaged_enter(vma->vm_mm);
}
Also, it might be slightly faster to have checked MMF_VM_HUGEPAGE
before khugepaged_enabled(), but it looks odd. And it might be slower,
too - more pointer chasing.
I wish someone would document hugepage_vma_check().
next prev parent reply other threads:[~2022-05-10 21:05 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-05-10 20:32 [mm-unstable v4 PATCH 0/8] Make khugepaged collapse readonly FS THP more consistent Yang Shi
2022-05-10 20:32 ` [v4 PATCH 1/8] sched: coredump.h: clarify the use of MMF_VM_HUGEPAGE Yang Shi
2022-05-10 20:32 ` [v4 PATCH 2/8] mm: khugepaged: remove redundant check for VM_NO_KHUGEPAGED Yang Shi
2022-05-10 20:32 ` [v4 PATCH 3/8] mm: khugepaged: skip DAX vma Yang Shi
2022-05-10 20:32 ` [v4 PATCH 4/8] mm: thp: only regular file could be THP eligible Yang Shi
2022-05-10 20:32 ` [v4 PATCH 5/8] mm: khugepaged: make khugepaged_enter() void function Yang Shi
2022-05-10 20:32 ` [v4 PATCH 6/8] mm: khugepaged: make hugepage_vma_check() non-static Yang Shi
2022-05-10 21:05 ` Andrew Morton [this message]
2022-05-10 22:35 ` Yang Shi
2022-05-10 20:32 ` [v4 PATCH 7/8] mm: khugepaged: introduce khugepaged_enter_vma() helper Yang Shi
2022-05-10 20:32 ` [v4 PATCH 8/8] mm: mmap: register suitable readonly file vmas for khugepaged Yang Shi
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20220510140545.5dd9d3145b53cb7e226c236a@linux-foundation.org \
--to=akpm@linux-foundation.org \
--cc=kirill.shutemov@linux.intel.com \
--cc=linmiaohe@huawei.com \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=riel@surriel.com \
--cc=shy828301@gmail.com \
--cc=songliubraving@fb.com \
--cc=tytso@mit.edu \
--cc=vbabka@suse.cz \
--cc=willy@infradead.org \
--cc=ziy@nvidia.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.