Re: [PATCH, RFC 7/9] thp: implement splitting pmd for huge zero page

2012-08-31 Thread Kirill A. Shutemov
On Thu, Aug 16, 2012 at 09:27:38PM +0200, Andrea Arcangeli wrote: > On Thu, Aug 09, 2012 at 12:08:18PM +0300, Kirill A. Shutemov wrote: > > + if (is_huge_zero_pmd(*pmd)) { > > + __split_huge_zero_page_pmd(mm, pmd, address); > > This will work fine but it's a bit sad having to add

Re: [PATCH, RFC 7/9] thp: implement splitting pmd for huge zero page

2012-08-31 Thread Kirill A. Shutemov
On Thu, Aug 16, 2012 at 09:27:38PM +0200, Andrea Arcangeli wrote: On Thu, Aug 09, 2012 at 12:08:18PM +0300, Kirill A. Shutemov wrote: + if (is_huge_zero_pmd(*pmd)) { + __split_huge_zero_page_pmd(mm, pmd, address); This will work fine but it's a bit sad having to add address at

Re: [PATCH, RFC 7/9] thp: implement splitting pmd for huge zero page

2012-08-17 Thread Andrea Arcangeli
On Fri, Aug 17, 2012 at 11:12:33AM +0300, Kirill A. Shutemov wrote: > I've used do_huge_pmd_wp_page_fallback() as template for my code. > What's difference between these two code paths? > Why is do_huge_pmd_wp_page_fallback() safe? Good point. do_huge_pmd_wp_page_fallback works only on the

Re: [PATCH, RFC 7/9] thp: implement splitting pmd for huge zero page

2012-08-17 Thread Kirill A. Shutemov
On Thu, Aug 16, 2012 at 09:27:38PM +0200, Andrea Arcangeli wrote: > On Thu, Aug 09, 2012 at 12:08:18PM +0300, Kirill A. Shutemov wrote: > > +static void __split_huge_zero_page_pmd(struct mm_struct *mm, pmd_t *pmd, > > + unsigned long address) > > +{ > > + pgtable_t pgtable; > > +

Re: [PATCH, RFC 7/9] thp: implement splitting pmd for huge zero page

2012-08-17 Thread Kirill A. Shutemov
On Thu, Aug 16, 2012 at 09:27:38PM +0200, Andrea Arcangeli wrote: On Thu, Aug 09, 2012 at 12:08:18PM +0300, Kirill A. Shutemov wrote: +static void __split_huge_zero_page_pmd(struct mm_struct *mm, pmd_t *pmd, + unsigned long address) +{ + pgtable_t pgtable; + pmd_t _pmd;

Re: [PATCH, RFC 7/9] thp: implement splitting pmd for huge zero page

2012-08-17 Thread Andrea Arcangeli
On Fri, Aug 17, 2012 at 11:12:33AM +0300, Kirill A. Shutemov wrote: I've used do_huge_pmd_wp_page_fallback() as template for my code. What's difference between these two code paths? Why is do_huge_pmd_wp_page_fallback() safe? Good point. do_huge_pmd_wp_page_fallback works only on the current

Re: [PATCH, RFC 7/9] thp: implement splitting pmd for huge zero page

2012-08-16 Thread Andrea Arcangeli
On Thu, Aug 09, 2012 at 12:08:18PM +0300, Kirill A. Shutemov wrote: > +static void __split_huge_zero_page_pmd(struct mm_struct *mm, pmd_t *pmd, > + unsigned long address) > +{ > + pgtable_t pgtable; > + pmd_t _pmd; > + unsigned long haddr = address & HPAGE_PMD_MASK; > +

Re: [PATCH, RFC 7/9] thp: implement splitting pmd for huge zero page

2012-08-16 Thread Andrea Arcangeli
On Thu, Aug 09, 2012 at 12:08:18PM +0300, Kirill A. Shutemov wrote: +static void __split_huge_zero_page_pmd(struct mm_struct *mm, pmd_t *pmd, + unsigned long address) +{ + pgtable_t pgtable; + pmd_t _pmd; + unsigned long haddr = address HPAGE_PMD_MASK; + struct

[PATCH, RFC 7/9] thp: implement splitting pmd for huge zero page

2012-08-09 Thread Kirill A. Shutemov
From: "Kirill A. Shutemov" We can't split huge zero page itself, but we can split the pmd which points to it. On splitting the pmd we create a table with all ptes set to normal zero page. Signed-off-by: Kirill A. Shutemov --- mm/huge_memory.c | 36 1

[PATCH, RFC 7/9] thp: implement splitting pmd for huge zero page

2012-08-09 Thread Kirill A. Shutemov
From: Kirill A. Shutemov kirill.shute...@linux.intel.com We can't split huge zero page itself, but we can split the pmd which points to it. On splitting the pmd we create a table with all ptes set to normal zero page. Signed-off-by: Kirill A. Shutemov kirill.shute...@linux.intel.com ---