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: 33+ 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-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-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 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: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.