Re: [PATCH v2 1/2] khugepaged: enable collapse pmd for pte-mapped THP

2019-08-02 Thread Song Liu
> On Aug 2, 2019, at 3:31 AM, Oleg Nesterov wrote: > > On 08/01, Song Liu wrote: >> >> >>> On Aug 1, 2019, at 7:50 AM, Oleg Nesterov wrote: >>> >>> On 07/31, Song Liu wrote: +static int khugepaged_add_pte_mapped_thp(struct mm_struct *mm, +

Re: [PATCH v2 1/2] khugepaged: enable collapse pmd for pte-mapped THP

2019-08-02 Thread Oleg Nesterov
On 08/01, Song Liu wrote: > > > > On Aug 1, 2019, at 7:50 AM, Oleg Nesterov wrote: > > > > On 07/31, Song Liu wrote: > >> > >> +static int khugepaged_add_pte_mapped_thp(struct mm_struct *mm, > >> + unsigned long addr) > >> +{ > >> + struct mm_slot *mm_slot; > >>

Re: [PATCH v2 1/2] khugepaged: enable collapse pmd for pte-mapped THP

2019-08-01 Thread Song Liu
> On Aug 1, 2019, at 7:50 AM, Oleg Nesterov wrote: > > On 07/31, Song Liu wrote: >> >> +static int khugepaged_add_pte_mapped_thp(struct mm_struct *mm, >> + unsigned long addr) >> +{ >> +struct mm_slot *mm_slot; >> +int ret = 0; >> + >> +/* hold

Re: [PATCH v2 1/2] khugepaged: enable collapse pmd for pte-mapped THP

2019-08-01 Thread Song Liu
> On Aug 1, 2019, at 5:43 AM, Oleg Nesterov wrote: > > On 07/31, Song Liu wrote: >> >> +void collapse_pte_mapped_thp(struct mm_struct *mm, unsigned long haddr) >> +{ >> +struct vm_area_struct *vma = find_vma(mm, haddr); >> +pmd_t *pmd = mm_find_pmd(mm, haddr); >> +struct page

Re: [PATCH v2 1/2] khugepaged: enable collapse pmd for pte-mapped THP

2019-08-01 Thread Oleg Nesterov
On 07/31, Song Liu wrote: > > +static int khugepaged_add_pte_mapped_thp(struct mm_struct *mm, > + unsigned long addr) > +{ > + struct mm_slot *mm_slot; > + int ret = 0; > + > + /* hold mmap_sem for khugepaged_test_exit() */ > +

Re: [PATCH v2 1/2] khugepaged: enable collapse pmd for pte-mapped THP

2019-08-01 Thread Oleg Nesterov
On 07/31, Song Liu wrote: > > +void collapse_pte_mapped_thp(struct mm_struct *mm, unsigned long haddr) > +{ > + struct vm_area_struct *vma = find_vma(mm, haddr); > + pmd_t *pmd = mm_find_pmd(mm, haddr); > + struct page *hpage = NULL; > + unsigned long addr; > + spinlock_t *ptl;

[PATCH v2 1/2] khugepaged: enable collapse pmd for pte-mapped THP

2019-07-31 Thread Song Liu
khugepaged needs exclusive mmap_sem to access page table. When it fails to lock mmap_sem, the page will fault in as pte-mapped THP. As the page is already a THP, khugepaged will not handle this pmd again. This patch enables the khugepaged to retry collapse the page table. struct mm_slot (in