Re: [PATCH v12 5/6] khugepaged: enable collapse pmd for pte-mapped THP

2019-08-16 Thread Kirill A. Shutemov
On Tue, Aug 13, 2019 at 06:24:51PM +0200, Oleg Nesterov wrote: > > Let me see first that my explanation makes sense :P > > It does ;) Does it look fine to you? It's on top of Song's patchset. >From 58834d6c1e63321af742b208558a6b5cb86fc7ec Mon Sep 17 00:00:00 2001 From: "Kirill A. Shutemov"

Re: [PATCH v12 5/6] khugepaged: enable collapse pmd for pte-mapped THP

2019-08-15 Thread Song Liu
> On Aug 15, 2019, at 3:16 AM, Oleg Nesterov wrote: > > Hi Song, > > sorry, I forgot to reply to this email, > > On 08/13, Song Liu wrote: >> >> Do you have further comments for the version below? If not, could you >> please reply with your Acked-by or Reviewed-by? > > I see nothing wrong

Re: [PATCH v12 5/6] khugepaged: enable collapse pmd for pte-mapped THP

2019-08-15 Thread Oleg Nesterov
Hi Song, sorry, I forgot to reply to this email, On 08/13, Song Liu wrote: > > Do you have further comments for the version below? If not, could you > please reply with your Acked-by or Reviewed-by? I see nothing wrong in the last series, no objections from me. I don't think I can't ack the

Re: [PATCH v12 5/6] khugepaged: enable collapse pmd for pte-mapped THP

2019-08-13 Thread Oleg Nesterov
On 08/13, Kirill A. Shutemov wrote: > > On Tue, Aug 13, 2019 at 04:05:53PM +0200, Oleg Nesterov wrote: > > > > > > I thought that retract_page_tables() checks vma->anon_vma to ensure that > > > this vma doesn't have a cow'ed PageAnon() page. And I still can't > > > understand > > > why can't it

Re: [PATCH v12 5/6] khugepaged: enable collapse pmd for pte-mapped THP

2019-08-13 Thread Kirill A. Shutemov
On Tue, Aug 13, 2019 at 04:05:53PM +0200, Oleg Nesterov wrote: > On 08/13, Oleg Nesterov wrote: > > > > On 08/12, Kirill A. Shutemov wrote: > > > > > > On Mon, Aug 12, 2019 at 03:22:58PM +0200, Oleg Nesterov wrote: > > > > On 08/12, Kirill A. Shutemov wrote: > > > > > > > > > > On Fri, Aug 09,

Re: [PATCH v12 5/6] khugepaged: enable collapse pmd for pte-mapped THP

2019-08-13 Thread Song Liu
Hi Oleg, > On Aug 12, 2019, at 2:04 PM, Song Liu wrote: > > > >> On Aug 12, 2019, at 7:40 AM, Kirill A. Shutemov wrote: >> >> On Mon, Aug 12, 2019 at 03:22:58PM +0200, Oleg Nesterov wrote: >>> On 08/12, Kirill A. Shutemov wrote: On Fri, Aug 09, 2019 at 06:01:18PM +, Song Liu

Re: [PATCH v12 5/6] khugepaged: enable collapse pmd for pte-mapped THP

2019-08-13 Thread Oleg Nesterov
On 08/13, Oleg Nesterov wrote: > > On 08/12, Kirill A. Shutemov wrote: > > > > On Mon, Aug 12, 2019 at 03:22:58PM +0200, Oleg Nesterov wrote: > > > On 08/12, Kirill A. Shutemov wrote: > > > > > > > > On Fri, Aug 09, 2019 at 06:01:18PM +, Song Liu wrote: > > > > > + if

Re: [PATCH v12 5/6] khugepaged: enable collapse pmd for pte-mapped THP

2019-08-13 Thread Oleg Nesterov
On 08/12, Kirill A. Shutemov wrote: > > On Mon, Aug 12, 2019 at 03:22:58PM +0200, Oleg Nesterov wrote: > > On 08/12, Kirill A. Shutemov wrote: > > > > > > On Fri, Aug 09, 2019 at 06:01:18PM +, Song Liu wrote: > > > > + if (pte_none(*pte) || !pte_present(*pte)) > > > > +

Re: [PATCH v12 5/6] khugepaged: enable collapse pmd for pte-mapped THP

2019-08-12 Thread Song Liu
> On Aug 12, 2019, at 7:40 AM, Kirill A. Shutemov wrote: > > On Mon, Aug 12, 2019 at 03:22:58PM +0200, Oleg Nesterov wrote: >> On 08/12, Kirill A. Shutemov wrote: >>> >>> On Fri, Aug 09, 2019 at 06:01:18PM +, Song Liu wrote: + if (pte_none(*pte) || !pte_present(*pte))

Re: [PATCH v12 5/6] khugepaged: enable collapse pmd for pte-mapped THP

2019-08-12 Thread Kirill A. Shutemov
On Mon, Aug 12, 2019 at 03:22:58PM +0200, Oleg Nesterov wrote: > On 08/12, Kirill A. Shutemov wrote: > > > > On Fri, Aug 09, 2019 at 06:01:18PM +, Song Liu wrote: > > > + if (pte_none(*pte) || !pte_present(*pte)) > > > + continue; > > > > You don't need to check both.

Re: [PATCH v12 5/6] khugepaged: enable collapse pmd for pte-mapped THP

2019-08-12 Thread Song Liu
> On Aug 12, 2019, at 6:06 AM, Oleg Nesterov wrote: > > On 08/09, Song Liu wrote: >> >> +void collapse_pte_mapped_thp(struct mm_struct *mm, unsigned long addr) >> +{ >> +unsigned long haddr = addr & HPAGE_PMD_MASK; >> +struct vm_area_struct *vma = find_vma(mm, haddr); >> +struct

Re: [PATCH v12 5/6] khugepaged: enable collapse pmd for pte-mapped THP

2019-08-12 Thread Oleg Nesterov
On 08/12, Kirill A. Shutemov wrote: > > On Fri, Aug 09, 2019 at 06:01:18PM +, Song Liu wrote: > > + if (pte_none(*pte) || !pte_present(*pte)) > > + continue; > > You don't need to check both. Present is never none. Agreed. Kirill, while you are here, shouldn't

Re: [PATCH v12 5/6] khugepaged: enable collapse pmd for pte-mapped THP

2019-08-12 Thread Oleg Nesterov
On 08/09, Song Liu wrote: > > +void collapse_pte_mapped_thp(struct mm_struct *mm, unsigned long addr) > +{ > + unsigned long haddr = addr & HPAGE_PMD_MASK; > + struct vm_area_struct *vma = find_vma(mm, haddr); > + struct page *hpage = NULL; > + pmd_t *pmd, _pmd; > + spinlock_t

Re: [PATCH v12 5/6] khugepaged: enable collapse pmd for pte-mapped THP

2019-08-12 Thread Kirill A. Shutemov
On Fri, Aug 09, 2019 at 06:01:18PM +, Song Liu wrote: > + if (pte_none(*pte) || !pte_present(*pte)) > + continue; You don't need to check both. Present is never none. -- Kirill A. Shutemov

Re: [PATCH v12 5/6] khugepaged: enable collapse pmd for pte-mapped THP

2019-08-09 Thread Song Liu
> On Aug 9, 2019, at 9:30 AM, Song Liu wrote: > > > >> On Aug 9, 2019, at 8:24 AM, Oleg Nesterov wrote: >> >> On 08/08, Song Liu wrote: >>> On Aug 8, 2019, at 9:33 AM, Oleg Nesterov wrote: > + for (i = 0, addr = haddr; i < HPAGE_PMD_NR; i++, addr += PAGE_SIZE) { > +

Re: [PATCH v12 5/6] khugepaged: enable collapse pmd for pte-mapped THP

2019-08-09 Thread Song Liu
> On Aug 9, 2019, at 8:24 AM, Oleg Nesterov wrote: > > On 08/08, Song Liu wrote: >> >>> On Aug 8, 2019, at 9:33 AM, Oleg Nesterov wrote: >>> + for (i = 0, addr = haddr; i < HPAGE_PMD_NR; i++, addr += PAGE_SIZE) { + pte_t *pte = pte_offset_map(pmd, addr); +

Re: [PATCH v12 5/6] khugepaged: enable collapse pmd for pte-mapped THP

2019-08-09 Thread Oleg Nesterov
On 08/08, Song Liu wrote: > > > On Aug 8, 2019, at 9:33 AM, Oleg Nesterov wrote: > > > >> + for (i = 0, addr = haddr; i < HPAGE_PMD_NR; i++, addr += PAGE_SIZE) { > >> + pte_t *pte = pte_offset_map(pmd, addr); > >> + struct page *page; > >> + > >> + if (pte_none(*pte))

Re: [PATCH v12 5/6] khugepaged: enable collapse pmd for pte-mapped THP

2019-08-08 Thread Song Liu
> On Aug 8, 2019, at 9:33 AM, Oleg Nesterov wrote: > > On 08/07, Song Liu wrote: >> >> +void collapse_pte_mapped_thp(struct mm_struct *mm, unsigned long addr) >> +{ >> +unsigned long haddr = addr & HPAGE_PMD_MASK; >> +struct vm_area_struct *vma = find_vma(mm, haddr); >> +struct

Re: [PATCH v12 5/6] khugepaged: enable collapse pmd for pte-mapped THP

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

[PATCH v12 5/6] khugepaged: enable collapse pmd for pte-mapped THP

2019-08-07 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