> On Jul 30, 2019, at 8:01 AM, Kirill A. Shutemov <kirill@xxxxxxxxxxxxx> wrote: > > On Sun, Jul 28, 2019 at 10:43:35PM -0700, Song Liu wrote: >> After all uprobes are removed from the huge page (with PTE pgtable), it >> is possible to collapse the pmd and benefit from THP again. This patch >> does the collapse by calling khugepaged_add_pte_mapped_thp(). >> >> Signed-off-by: Song Liu <songliubraving@xxxxxx> >> --- >> kernel/events/uprobes.c | 9 +++++++++ >> 1 file changed, 9 insertions(+) >> >> diff --git a/kernel/events/uprobes.c b/kernel/events/uprobes.c >> index 58ab7fc7272a..cc53789fefc6 100644 >> --- a/kernel/events/uprobes.c >> +++ b/kernel/events/uprobes.c >> @@ -26,6 +26,7 @@ >> #include <linux/percpu-rwsem.h> >> #include <linux/task_work.h> >> #include <linux/shmem_fs.h> >> +#include <linux/khugepaged.h> >> >> #include <linux/uprobes.h> >> >> @@ -470,6 +471,7 @@ int uprobe_write_opcode(struct arch_uprobe *auprobe, struct mm_struct *mm, >> struct page *old_page, *new_page; >> struct vm_area_struct *vma; >> int ret, is_register, ref_ctr_updated = 0; >> + bool orig_page_huge = false; >> >> is_register = is_swbp_insn(&opcode); >> uprobe = container_of(auprobe, struct uprobe, arch); >> @@ -525,6 +527,9 @@ int uprobe_write_opcode(struct arch_uprobe *auprobe, struct mm_struct *mm, >> >> /* dec_mm_counter for old_page */ >> dec_mm_counter(mm, MM_ANONPAGES); >> + >> + if (PageCompound(orig_page)) >> + orig_page_huge = true; >> } >> put_page(orig_page); >> } >> @@ -543,6 +548,10 @@ int uprobe_write_opcode(struct arch_uprobe *auprobe, struct mm_struct *mm, >> if (ret && is_register && ref_ctr_updated) >> update_ref_ctr(uprobe, mm, -1); >> >> + /* try collapse pmd for compound page */ >> + if (!ret && orig_page_huge) >> + khugepaged_add_pte_mapped_thp(mm, vaddr & HPAGE_PMD_MASK); >> + > > IIUC, here you have all locks taken, so you should be able to call > collapse_pte_mapped_thp() directly, shouldn't you? > Yes, we can call it directly. I had it that way in a very early version. Let me do that in the next version. Thanks, Song