From: "Kirill A. Shutemov" <kirill@shutemov.name> To: Vineet Gupta <Vineet.Gupta1@synopsys.com> Cc: Andrew Morton <akpm@linux-foundation.org>, "Aneesh Kumar K.V" <aneesh.kumar@linux.vnet.ibm.com>, "Kirill A. Shutemov" <kirill.shutemov@linux.intel.com>, Mel Gorman <mgorman@suse.de>, Matthew Wilcox <matthew.r.wilcox@intel.com>, Minchan Kim <minchan@kernel.org>, linux-arch@vger.kernel.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org Subject: Re: [PATCH v2 09/12] mm,thp: reduce ifdef'ery for THP in generic code Date: Fri, 9 Oct 2015 12:53:59 +0300 [thread overview] Message-ID: <20151009095359.GA7971@node> (raw) In-Reply-To: <1442918096-17454-10-git-send-email-vgupta@synopsys.com> On Tue, Sep 22, 2015 at 04:04:53PM +0530, Vineet Gupta wrote: > - pgtable-generic.c: Fold individual #ifdef for each helper into a top > level #ifdef. Makes code more readable Makes sense. > - Per Andrew's suggestion removed the dummy implementations for !THP > in asm-generic/page-table.h to have build time failures vs. runtime. I'm not sure it's a good idea. This can lead to unnecessary #ifdefs where otherwise call to helper would be eliminated by compiler as dead code. What about dummy helpers with BUILD_BUG()? > Signed-off-by: Vineet Gupta <vgupta@synopsys.com> > --- > include/asm-generic/pgtable.h | 49 ++++++++++++++++--------------------------- > mm/pgtable-generic.c | 24 +++------------------ > 2 files changed, 21 insertions(+), 52 deletions(-) > > diff --git a/include/asm-generic/pgtable.h b/include/asm-generic/pgtable.h > index 29c57b2cb344..2112f4147816 100644 > --- a/include/asm-generic/pgtable.h > +++ b/include/asm-generic/pgtable.h > @@ -30,9 +30,12 @@ extern int ptep_set_access_flags(struct vm_area_struct *vma, > #endif > > #ifndef __HAVE_ARCH_PMDP_SET_ACCESS_FLAGS > +#ifdef CONFIG_TRANSPARENT_HUGEPAGE > extern int pmdp_set_access_flags(struct vm_area_struct *vma, > unsigned long address, pmd_t *pmdp, > pmd_t entry, int dirty); > + > +#endif /* CONFIG_TRANSPARENT_HUGEPAGE */ > #endif > > #ifndef __HAVE_ARCH_PTEP_TEST_AND_CLEAR_YOUNG > @@ -64,14 +67,6 @@ static inline int pmdp_test_and_clear_young(struct vm_area_struct *vma, > set_pmd_at(vma->vm_mm, address, pmdp, pmd_mkold(pmd)); > return r; > } > -#else /* CONFIG_TRANSPARENT_HUGEPAGE */ > -static inline int pmdp_test_and_clear_young(struct vm_area_struct *vma, > - unsigned long address, > - pmd_t *pmdp) > -{ > - BUG(); > - return 0; > -} > #endif /* CONFIG_TRANSPARENT_HUGEPAGE */ > #endif > > @@ -81,8 +76,21 @@ int ptep_clear_flush_young(struct vm_area_struct *vma, > #endif > > #ifndef __HAVE_ARCH_PMDP_CLEAR_YOUNG_FLUSH > -int pmdp_clear_flush_young(struct vm_area_struct *vma, > - unsigned long address, pmd_t *pmdp); > +#ifdef CONFIG_TRANSPARENT_HUGEPAGE > +extern int pmdp_clear_flush_young(struct vm_area_struct *vma, > + unsigned long address, pmd_t *pmdp); > +#else > +/* > + * Despite relevant to THP only, this API is called from generic rmap code > + * under PageTransHuge(), hence needs a dummy implementation for !THP > + */ Looks like a case I described above. BUILD_BUG_ON() should work fine here. > +static inline int pmdp_clear_flush_young(struct vm_area_struct *vma, > + unsigned long address, pmd_t *pmdp) > +{ > + BUG(); > + return 0; > +} > +#endif /* CONFIG_TRANSPARENT_HUGEPAGE */ > #endif -- Kirill A. Shutemov -- 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: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
WARNING: multiple messages have this Message-ID (diff)
From: "Kirill A. Shutemov" <kirill@shutemov.name> To: Vineet Gupta <Vineet.Gupta1@synopsys.com> Cc: Andrew Morton <akpm@linux-foundation.org>, "Aneesh Kumar K.V" <aneesh.kumar@linux.vnet.ibm.com>, "Kirill A. Shutemov" <kirill.shutemov@linux.intel.com>, Mel Gorman <mgorman@suse.de>, Matthew Wilcox <matthew.r.wilcox@intel.com>, Minchan Kim <minchan@kernel.org>, linux-arch@vger.kernel.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org Subject: Re: [PATCH v2 09/12] mm,thp: reduce ifdef'ery for THP in generic code Date: Fri, 9 Oct 2015 12:53:59 +0300 [thread overview] Message-ID: <20151009095359.GA7971@node> (raw) Message-ID: <20151009095359.GAurDeIYsFl5ZKF69lQ6ssmVZsr271DME9wORmeTs6k@z> (raw) In-Reply-To: <1442918096-17454-10-git-send-email-vgupta@synopsys.com> On Tue, Sep 22, 2015 at 04:04:53PM +0530, Vineet Gupta wrote: > - pgtable-generic.c: Fold individual #ifdef for each helper into a top > level #ifdef. Makes code more readable Makes sense. > - Per Andrew's suggestion removed the dummy implementations for !THP > in asm-generic/page-table.h to have build time failures vs. runtime. I'm not sure it's a good idea. This can lead to unnecessary #ifdefs where otherwise call to helper would be eliminated by compiler as dead code. What about dummy helpers with BUILD_BUG()? > Signed-off-by: Vineet Gupta <vgupta@synopsys.com> > --- > include/asm-generic/pgtable.h | 49 ++++++++++++++++--------------------------- > mm/pgtable-generic.c | 24 +++------------------ > 2 files changed, 21 insertions(+), 52 deletions(-) > > diff --git a/include/asm-generic/pgtable.h b/include/asm-generic/pgtable.h > index 29c57b2cb344..2112f4147816 100644 > --- a/include/asm-generic/pgtable.h > +++ b/include/asm-generic/pgtable.h > @@ -30,9 +30,12 @@ extern int ptep_set_access_flags(struct vm_area_struct *vma, > #endif > > #ifndef __HAVE_ARCH_PMDP_SET_ACCESS_FLAGS > +#ifdef CONFIG_TRANSPARENT_HUGEPAGE > extern int pmdp_set_access_flags(struct vm_area_struct *vma, > unsigned long address, pmd_t *pmdp, > pmd_t entry, int dirty); > + > +#endif /* CONFIG_TRANSPARENT_HUGEPAGE */ > #endif > > #ifndef __HAVE_ARCH_PTEP_TEST_AND_CLEAR_YOUNG > @@ -64,14 +67,6 @@ static inline int pmdp_test_and_clear_young(struct vm_area_struct *vma, > set_pmd_at(vma->vm_mm, address, pmdp, pmd_mkold(pmd)); > return r; > } > -#else /* CONFIG_TRANSPARENT_HUGEPAGE */ > -static inline int pmdp_test_and_clear_young(struct vm_area_struct *vma, > - unsigned long address, > - pmd_t *pmdp) > -{ > - BUG(); > - return 0; > -} > #endif /* CONFIG_TRANSPARENT_HUGEPAGE */ > #endif > > @@ -81,8 +76,21 @@ int ptep_clear_flush_young(struct vm_area_struct *vma, > #endif > > #ifndef __HAVE_ARCH_PMDP_CLEAR_YOUNG_FLUSH > -int pmdp_clear_flush_young(struct vm_area_struct *vma, > - unsigned long address, pmd_t *pmdp); > +#ifdef CONFIG_TRANSPARENT_HUGEPAGE > +extern int pmdp_clear_flush_young(struct vm_area_struct *vma, > + unsigned long address, pmd_t *pmdp); > +#else > +/* > + * Despite relevant to THP only, this API is called from generic rmap code > + * under PageTransHuge(), hence needs a dummy implementation for !THP > + */ Looks like a case I described above. BUILD_BUG_ON() should work fine here. > +static inline int pmdp_clear_flush_young(struct vm_area_struct *vma, > + unsigned long address, pmd_t *pmdp) > +{ > + BUG(); > + return 0; > +} > +#endif /* CONFIG_TRANSPARENT_HUGEPAGE */ > #endif -- Kirill A. Shutemov
next prev parent reply other threads:[~2015-10-09 9:53 UTC|newest] Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top 2015-09-22 10:34 [PATCH v2 00/12] THP support for ARC Vineet Gupta 2015-09-22 10:34 ` [PATCH v2 01/12] ARC: mm: switch pgtable_to to pte_t * Vineet Gupta 2015-09-22 10:34 ` [PATCH v2 02/12] ARC: mm: pte flags comsetic cleanups, comments Vineet Gupta 2015-09-22 10:34 ` [PATCH v2 03/12] ARC: mm: Introduce PTE_SPECIAL Vineet Gupta 2015-09-22 10:34 ` [PATCH v2 04/12] Documentation/features/vm: pte_special now supported by ARC Vineet Gupta 2015-09-22 10:34 ` [PATCH v2 05/12] ARCv2: mm: THP support Vineet Gupta 2015-09-22 10:34 ` [PATCH v2 06/12] ARCv2: mm: THP: boot validation/reporting Vineet Gupta 2015-09-22 10:34 ` [PATCH v2 07/12] Documentation/features/vm: THP now supported by ARC Vineet Gupta 2015-09-22 10:34 ` [PATCH v2 08/12] mm: move some code around Vineet Gupta 2015-10-09 9:48 ` Kirill A. Shutemov 2015-10-09 9:48 ` Kirill A. Shutemov 2015-10-09 10:01 ` Vineet Gupta 2015-09-22 10:34 ` [PATCH v2 09/12] mm,thp: reduce ifdef'ery for THP in generic code Vineet Gupta 2015-10-09 9:53 ` Kirill A. Shutemov [this message] 2015-10-09 9:53 ` Kirill A. Shutemov 2015-10-09 10:10 ` Vineet Gupta 2015-10-09 10:28 ` Vineet Gupta 2015-09-22 10:34 ` [PATCH v2 10/12] mm,thp: introduce flush_pmd_tlb_range Vineet Gupta 2015-10-09 10:08 ` Kirill A. Shutemov 2015-10-09 10:08 ` Kirill A. Shutemov 2015-10-09 10:54 ` Vineet Gupta 2015-09-22 10:34 ` [PATCH v2 11/12] ARCv2: mm: THP: Implement flush_pmd_tlb_range() optimization Vineet Gupta 2015-09-22 10:34 ` [PATCH v2 12/12] ARCv2: Add a DT which enables THP Vineet Gupta 2015-10-01 6:02 ` [PATCH v2 00/12] THP support for ARC Vineet Gupta 2015-10-09 9:33 ` Vineet Gupta 2015-10-09 10:10 ` Kirill A. Shutemov 2015-10-09 11:29 ` Vineet Gupta 2015-10-09 11:43 ` Kirill A. Shutemov 2015-10-09 11:43 ` Kirill A. Shutemov 2015-10-09 11:52 ` Vineet Gupta
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20151009095359.GA7971@node \ --to=kirill@shutemov.name \ --cc=Vineet.Gupta1@synopsys.com \ --cc=akpm@linux-foundation.org \ --cc=aneesh.kumar@linux.vnet.ibm.com \ --cc=kirill.shutemov@linux.intel.com \ --cc=linux-arch@vger.kernel.org \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-mm@kvack.org \ --cc=matthew.r.wilcox@intel.com \ --cc=mgorman@suse.de \ --cc=minchan@kernel.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).