Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756976AbcCRNyC (ORCPT ); Fri, 18 Mar 2016 09:54:02 -0400 Received: from e33.co.us.ibm.com ([32.97.110.151]:56126 "EHLO e33.co.us.ibm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1756899AbcCRNx7 (ORCPT ); Fri, 18 Mar 2016 09:53:59 -0400 X-IBM-Helo: d03dlp03.boulder.ibm.com X-IBM-MailFrom: aneesh.kumar@linux.vnet.ibm.com X-IBM-RcptTo: linux-fsdevel@vger.kernel.org;linux-kernel@vger.kernel.org From: "Aneesh Kumar K.V" To: "Kirill A. Shutemov" , Hugh Dickins , Andrea Arcangeli , Andrew Morton Cc: Dave Hansen , Vlastimil Babka , Christoph Lameter , Naoya Horiguchi , Jerome Marchand , Yang Shi , Sasha Levin , linux-kernel@vger.kernel.org, linux-mm@kvack.org, linux-fsdevel@vger.kernel.org, "Kirill A. Shutemov" Subject: Re: [PATCHv4 08/25] thp: support file pages in zap_huge_pmd() In-Reply-To: <1457737157-38573-9-git-send-email-kirill.shutemov@linux.intel.com> References: <1457737157-38573-1-git-send-email-kirill.shutemov@linux.intel.com> <1457737157-38573-9-git-send-email-kirill.shutemov@linux.intel.com> User-Agent: Notmuch/0.20.2 (http://notmuchmail.org) Emacs/24.5.1 (x86_64-pc-linux-gnu) Date: Fri, 18 Mar 2016 19:23:41 +0530 Message-ID: <87a8lvao4a.fsf@linux.vnet.ibm.com> MIME-Version: 1.0 Content-Type: text/plain X-TM-AS-MML: disable X-Content-Scanned: Fidelis XPS MAILER x-cbid: 16031813-0009-0000-0000-000015923AB9 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1983 Lines: 53 "Kirill A. Shutemov" writes: > [ text/plain ] > split_huge_pmd() for file mappings (and DAX too) is implemented by just > clearing pmd entry as we can re-fill this area from page cache on pte > level later. > > This means we don't need deposit page tables when file THP is mapped. > Therefore we shouldn't try to withdraw a page table on zap_huge_pmd() > file THP PMD. Archs like ppc64 use deposited page table to track the hardware page table slot information. We probably may want to add hooks which arch can use to achieve the same even with file THP > > Signed-off-by: Kirill A. Shutemov > --- > mm/huge_memory.c | 12 +++++++++--- > 1 file changed, 9 insertions(+), 3 deletions(-) > > diff --git a/mm/huge_memory.c b/mm/huge_memory.c > index 44468fb7cdbf..c22144e3fe11 100644 > --- a/mm/huge_memory.c > +++ b/mm/huge_memory.c > @@ -1684,10 +1684,16 @@ int zap_huge_pmd(struct mmu_gather *tlb, struct vm_area_struct *vma, > struct page *page = pmd_page(orig_pmd); > page_remove_rmap(page, true); > VM_BUG_ON_PAGE(page_mapcount(page) < 0, page); > - add_mm_counter(tlb->mm, MM_ANONPAGES, -HPAGE_PMD_NR); > VM_BUG_ON_PAGE(!PageHead(page), page); > - pte_free(tlb->mm, pgtable_trans_huge_withdraw(tlb->mm, pmd)); > - atomic_long_dec(&tlb->mm->nr_ptes); > + if (PageAnon(page)) { > + pgtable_t pgtable; > + pgtable = pgtable_trans_huge_withdraw(tlb->mm, pmd); > + pte_free(tlb->mm, pgtable); > + atomic_long_dec(&tlb->mm->nr_ptes); > + add_mm_counter(tlb->mm, MM_ANONPAGES, -HPAGE_PMD_NR); > + } else { > + add_mm_counter(tlb->mm, MM_FILEPAGES, -HPAGE_PMD_NR); > + } > spin_unlock(ptl); > tlb_remove_page(tlb, page); > } > -- > 2.7.0 > > -- > To unsubscribe, send a message with 'unsubscribe linux-mm' in > the body to majordomo@kvack.org. For more info on Linux MM, > see: http://www.linux-mm.org/ . > Don't email: email@kvack.org