From: Benjamin Herrenschmidt <benh@kernel.crashing.org>
To: Mel Gorman <mgorman@suse.de>
Cc: Rik van Riel <riel@redhat.com>,
Linus Torvalds <torvalds@linux-foundation.org>,
Hugh Dickins <hughd@google.com>,
Linux Kernel <linux-kernel@vger.kernel.org>,
Linux-MM <linux-mm@kvack.org>, Ingo Molnar <mingo@redhat.com>,
Paul Mackerras <paulus@samba.org>,
Aneesh Kumar <aneesh.kumar@linux.vnet.ibm.com>,
Sasha Levin <sasha.levin@oracle.com>,
Dave Jones <davej@redhat.com>,
LinuxPPC-dev <linuxppc-dev@lists.ozlabs.org>,
Kirill Shutemov <kirill.shutemov@linux.intel.com>
Subject: Re: [PATCH 02/10] mm: Add p[te|md] protnone helpers for use by NUMA balancing
Date: Tue, 02 Dec 2014 09:38:39 +1100 [thread overview]
Message-ID: <1417473519.7182.6.camel@kernel.crashing.org> (raw)
In-Reply-To: <1416578268-19597-3-git-send-email-mgorman@suse.de>
On Fri, 2014-11-21 at 13:57 +0000, Mel Gorman wrote:
> #ifdef CONFIG_NUMA_BALANCING
> +/*
> + * These work without NUMA balancing but the kernel does not care. See the
> + * comment in include/asm-generic/pgtable.h
> + */
> +static inline int pte_protnone(pte_t pte)
> +{
> + return (pte_val(pte) &
> + (_PAGE_PRESENT | _PAGE_USER)) == _PAGE_PRESENT;
> +}
I would add a comment clarifying that this only works for user pages,
ie, this accessor will always return "true" for a kernel page on ppc.
> +static inline int pmd_protnone(pmd_t pmd)
> +{
> + return pte_protnone(pmd_pte(pmd));
> +}
> +
> static inline int pte_present(pte_t pte)
> {
> return pte_val(pte) & _PAGE_NUMA_MASK;
> diff --git a/arch/x86/include/asm/pgtable.h b/arch/x86/include/asm/pgtable.h
> index 081d6f4..2e25780 100644
> --- a/arch/x86/include/asm/pgtable.h
> +++ b/arch/x86/include/asm/pgtable.h
> @@ -502,6 +502,22 @@ static inline int pmd_present(pmd_t pmd)
> _PAGE_NUMA);
> }
>
> +#ifdef CONFIG_NUMA_BALANCING
> +/*
> + * These work without NUMA balancing but the kernel does not care. See the
> + * comment in include/asm-generic/pgtable.h
> + */
> +static inline int pte_protnone(pte_t pte)
> +{
> + return pte_flags(pte) & _PAGE_PROTNONE;
> +}
> +
> +static inline int pmd_protnone(pmd_t pmd)
> +{
> + return pmd_flags(pmd) & _PAGE_PROTNONE;
> +}
> +#endif /* CONFIG_NUMA_BALANCING */
> +
> static inline int pmd_none(pmd_t pmd)
> {
> /* Only check low word on 32-bit platforms, since it might be
> diff --git a/include/asm-generic/pgtable.h b/include/asm-generic/pgtable.h
> index 177d597..d497d08 100644
> --- a/include/asm-generic/pgtable.h
> +++ b/include/asm-generic/pgtable.h
> @@ -688,6 +688,26 @@ static inline int pmd_trans_unstable(pmd_t *pmd)
> #endif
> }
>
> +#ifndef CONFIG_NUMA_BALANCING
> +/*
> + * Technically a PTE can be PROTNONE even when not doing NUMA balancing but
> + * the only case the kernel cares is for NUMA balancing and is only ever set
> + * when the VMA is accessible. For PROT_NONE VMAs, the PTEs are not marked
> + * _PAGE_PROTNONE so by by default, implement the helper as "always no". It
> + * is the responsibility of the caller to distinguish between PROT_NONE
> + * protections and NUMA hinting fault protections.
> + */
> +static inline int pte_protnone(pte_t pte)
> +{
> + return 0;
> +}
> +
> +static inline int pmd_protnone(pmd_t pmd)
> +{
> + return 0;
> +}
> +#endif /* CONFIG_NUMA_BALANCING */
> +
> #ifdef CONFIG_NUMA_BALANCING
> /*
> * _PAGE_NUMA distinguishes between an unmapped page table entry, an entry that
WARNING: multiple messages have this Message-ID (diff)
From: Benjamin Herrenschmidt <benh@kernel.crashing.org>
To: Mel Gorman <mgorman@suse.de>
Cc: Linux Kernel <linux-kernel@vger.kernel.org>,
Linux-MM <linux-mm@kvack.org>,
LinuxPPC-dev <linuxppc-dev@lists.ozlabs.org>,
Aneesh Kumar <aneesh.kumar@linux.vnet.ibm.com>,
Hugh Dickins <hughd@google.com>, Dave Jones <davej@redhat.com>,
Rik van Riel <riel@redhat.com>, Ingo Molnar <mingo@redhat.com>,
Kirill Shutemov <kirill.shutemov@linux.intel.com>,
Sasha Levin <sasha.levin@oracle.com>,
Paul Mackerras <paulus@samba.org>,
Linus Torvalds <torvalds@linux-foundation.org>
Subject: Re: [PATCH 02/10] mm: Add p[te|md] protnone helpers for use by NUMA balancing
Date: Tue, 02 Dec 2014 09:38:39 +1100 [thread overview]
Message-ID: <1417473519.7182.6.camel@kernel.crashing.org> (raw)
In-Reply-To: <1416578268-19597-3-git-send-email-mgorman@suse.de>
On Fri, 2014-11-21 at 13:57 +0000, Mel Gorman wrote:
> #ifdef CONFIG_NUMA_BALANCING
> +/*
> + * These work without NUMA balancing but the kernel does not care. See the
> + * comment in include/asm-generic/pgtable.h
> + */
> +static inline int pte_protnone(pte_t pte)
> +{
> + return (pte_val(pte) &
> + (_PAGE_PRESENT | _PAGE_USER)) == _PAGE_PRESENT;
> +}
I would add a comment clarifying that this only works for user pages,
ie, this accessor will always return "true" for a kernel page on ppc.
> +static inline int pmd_protnone(pmd_t pmd)
> +{
> + return pte_protnone(pmd_pte(pmd));
> +}
> +
> static inline int pte_present(pte_t pte)
> {
> return pte_val(pte) & _PAGE_NUMA_MASK;
> diff --git a/arch/x86/include/asm/pgtable.h b/arch/x86/include/asm/pgtable.h
> index 081d6f4..2e25780 100644
> --- a/arch/x86/include/asm/pgtable.h
> +++ b/arch/x86/include/asm/pgtable.h
> @@ -502,6 +502,22 @@ static inline int pmd_present(pmd_t pmd)
> _PAGE_NUMA);
> }
>
> +#ifdef CONFIG_NUMA_BALANCING
> +/*
> + * These work without NUMA balancing but the kernel does not care. See the
> + * comment in include/asm-generic/pgtable.h
> + */
> +static inline int pte_protnone(pte_t pte)
> +{
> + return pte_flags(pte) & _PAGE_PROTNONE;
> +}
> +
> +static inline int pmd_protnone(pmd_t pmd)
> +{
> + return pmd_flags(pmd) & _PAGE_PROTNONE;
> +}
> +#endif /* CONFIG_NUMA_BALANCING */
> +
> static inline int pmd_none(pmd_t pmd)
> {
> /* Only check low word on 32-bit platforms, since it might be
> diff --git a/include/asm-generic/pgtable.h b/include/asm-generic/pgtable.h
> index 177d597..d497d08 100644
> --- a/include/asm-generic/pgtable.h
> +++ b/include/asm-generic/pgtable.h
> @@ -688,6 +688,26 @@ static inline int pmd_trans_unstable(pmd_t *pmd)
> #endif
> }
>
> +#ifndef CONFIG_NUMA_BALANCING
> +/*
> + * Technically a PTE can be PROTNONE even when not doing NUMA balancing but
> + * the only case the kernel cares is for NUMA balancing and is only ever set
> + * when the VMA is accessible. For PROT_NONE VMAs, the PTEs are not marked
> + * _PAGE_PROTNONE so by by default, implement the helper as "always no". It
> + * is the responsibility of the caller to distinguish between PROT_NONE
> + * protections and NUMA hinting fault protections.
> + */
> +static inline int pte_protnone(pte_t pte)
> +{
> + return 0;
> +}
> +
> +static inline int pmd_protnone(pmd_t pmd)
> +{
> + return 0;
> +}
> +#endif /* CONFIG_NUMA_BALANCING */
> +
> #ifdef CONFIG_NUMA_BALANCING
> /*
> * _PAGE_NUMA distinguishes between an unmapped page table entry, an entry that
--
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: Benjamin Herrenschmidt <benh@kernel.crashing.org>
To: Mel Gorman <mgorman@suse.de>
Cc: Linux Kernel <linux-kernel@vger.kernel.org>,
Linux-MM <linux-mm@kvack.org>,
LinuxPPC-dev <linuxppc-dev@lists.ozlabs.org>,
Aneesh Kumar <aneesh.kumar@linux.vnet.ibm.com>,
Hugh Dickins <hughd@google.com>, Dave Jones <davej@redhat.com>,
Rik van Riel <riel@redhat.com>, Ingo Molnar <mingo@redhat.com>,
Kirill Shutemov <kirill.shutemov@linux.intel.com>,
Sasha Levin <sasha.levin@oracle.com>,
Paul Mackerras <paulus@samba.org>,
Linus Torvalds <torvalds@linux-foundation.org>
Subject: Re: [PATCH 02/10] mm: Add p[te|md] protnone helpers for use by NUMA balancing
Date: Tue, 02 Dec 2014 09:38:39 +1100 [thread overview]
Message-ID: <1417473519.7182.6.camel@kernel.crashing.org> (raw)
In-Reply-To: <1416578268-19597-3-git-send-email-mgorman@suse.de>
On Fri, 2014-11-21 at 13:57 +0000, Mel Gorman wrote:
> #ifdef CONFIG_NUMA_BALANCING
> +/*
> + * These work without NUMA balancing but the kernel does not care. See the
> + * comment in include/asm-generic/pgtable.h
> + */
> +static inline int pte_protnone(pte_t pte)
> +{
> + return (pte_val(pte) &
> + (_PAGE_PRESENT | _PAGE_USER)) == _PAGE_PRESENT;
> +}
I would add a comment clarifying that this only works for user pages,
ie, this accessor will always return "true" for a kernel page on ppc.
> +static inline int pmd_protnone(pmd_t pmd)
> +{
> + return pte_protnone(pmd_pte(pmd));
> +}
> +
> static inline int pte_present(pte_t pte)
> {
> return pte_val(pte) & _PAGE_NUMA_MASK;
> diff --git a/arch/x86/include/asm/pgtable.h b/arch/x86/include/asm/pgtable.h
> index 081d6f4..2e25780 100644
> --- a/arch/x86/include/asm/pgtable.h
> +++ b/arch/x86/include/asm/pgtable.h
> @@ -502,6 +502,22 @@ static inline int pmd_present(pmd_t pmd)
> _PAGE_NUMA);
> }
>
> +#ifdef CONFIG_NUMA_BALANCING
> +/*
> + * These work without NUMA balancing but the kernel does not care. See the
> + * comment in include/asm-generic/pgtable.h
> + */
> +static inline int pte_protnone(pte_t pte)
> +{
> + return pte_flags(pte) & _PAGE_PROTNONE;
> +}
> +
> +static inline int pmd_protnone(pmd_t pmd)
> +{
> + return pmd_flags(pmd) & _PAGE_PROTNONE;
> +}
> +#endif /* CONFIG_NUMA_BALANCING */
> +
> static inline int pmd_none(pmd_t pmd)
> {
> /* Only check low word on 32-bit platforms, since it might be
> diff --git a/include/asm-generic/pgtable.h b/include/asm-generic/pgtable.h
> index 177d597..d497d08 100644
> --- a/include/asm-generic/pgtable.h
> +++ b/include/asm-generic/pgtable.h
> @@ -688,6 +688,26 @@ static inline int pmd_trans_unstable(pmd_t *pmd)
> #endif
> }
>
> +#ifndef CONFIG_NUMA_BALANCING
> +/*
> + * Technically a PTE can be PROTNONE even when not doing NUMA balancing but
> + * the only case the kernel cares is for NUMA balancing and is only ever set
> + * when the VMA is accessible. For PROT_NONE VMAs, the PTEs are not marked
> + * _PAGE_PROTNONE so by by default, implement the helper as "always no". It
> + * is the responsibility of the caller to distinguish between PROT_NONE
> + * protections and NUMA hinting fault protections.
> + */
> +static inline int pte_protnone(pte_t pte)
> +{
> + return 0;
> +}
> +
> +static inline int pmd_protnone(pmd_t pmd)
> +{
> + return 0;
> +}
> +#endif /* CONFIG_NUMA_BALANCING */
> +
> #ifdef CONFIG_NUMA_BALANCING
> /*
> * _PAGE_NUMA distinguishes between an unmapped page table entry, an entry that
next prev parent reply other threads:[~2014-12-01 22:39 UTC|newest]
Thread overview: 90+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-11-21 13:57 [PATCH 0/10] Replace _PAGE_NUMA with PAGE_NONE protections v3 Mel Gorman
2014-11-21 13:57 ` Mel Gorman
2014-11-21 13:57 ` Mel Gorman
2014-11-21 13:57 ` [PATCH 01/10] mm: numa: Do not dereference pmd outside of the lock during NUMA hinting fault Mel Gorman
2014-11-21 13:57 ` Mel Gorman
2014-11-21 13:57 ` Mel Gorman
2014-11-21 13:57 ` [PATCH 02/10] mm: Add p[te|md] protnone helpers for use by NUMA balancing Mel Gorman
2014-11-21 13:57 ` Mel Gorman
2014-11-21 13:57 ` Mel Gorman
2014-12-01 22:38 ` Benjamin Herrenschmidt [this message]
2014-12-01 22:38 ` Benjamin Herrenschmidt
2014-12-01 22:38 ` Benjamin Herrenschmidt
2014-12-02 10:12 ` Mel Gorman
2014-12-02 10:12 ` Mel Gorman
2014-12-02 10:12 ` Mel Gorman
2014-11-21 13:57 ` [PATCH 03/10] mm: Convert p[te|md]_numa users to p[te|md]_protnone_numa Mel Gorman
2014-11-21 13:57 ` Mel Gorman
2014-11-21 13:57 ` Mel Gorman
2014-12-01 22:42 ` Benjamin Herrenschmidt
2014-12-01 22:42 ` Benjamin Herrenschmidt
2014-12-01 22:42 ` Benjamin Herrenschmidt
2014-12-02 7:27 ` Aneesh Kumar K.V
2014-12-02 7:27 ` Aneesh Kumar K.V
2014-12-02 7:27 ` Aneesh Kumar K.V
2014-12-02 20:11 ` Benjamin Herrenschmidt
2014-12-02 20:11 ` Benjamin Herrenschmidt
2014-12-02 20:11 ` Benjamin Herrenschmidt
2014-12-03 15:23 ` Aneesh Kumar K.V
2014-12-03 15:23 ` Aneesh Kumar K.V
2014-12-03 15:23 ` Aneesh Kumar K.V
2014-12-03 15:52 ` Mel Gorman
2014-12-03 15:52 ` Mel Gorman
2014-12-03 15:52 ` Mel Gorman
2014-12-03 17:20 ` Aneesh Kumar K.V
2014-12-03 17:20 ` Aneesh Kumar K.V
2014-12-03 17:20 ` Aneesh Kumar K.V
2014-12-04 11:17 ` Mel Gorman
2014-12-04 11:17 ` Mel Gorman
2014-12-04 11:17 ` Mel Gorman
2014-12-03 21:01 ` Benjamin Herrenschmidt
2014-12-03 21:01 ` Benjamin Herrenschmidt
2014-12-03 21:01 ` Benjamin Herrenschmidt
2014-12-04 11:15 ` Mel Gorman
2014-12-04 11:15 ` Mel Gorman
2014-12-04 11:15 ` Mel Gorman
2014-12-01 22:44 ` Benjamin Herrenschmidt
2014-12-01 22:44 ` Benjamin Herrenschmidt
2014-12-01 22:44 ` Benjamin Herrenschmidt
2014-12-02 7:31 ` Aneesh Kumar K.V
2014-12-02 7:31 ` Aneesh Kumar K.V
2014-12-02 7:31 ` Aneesh Kumar K.V
2014-12-02 20:13 ` Benjamin Herrenschmidt
2014-12-02 20:13 ` Benjamin Herrenschmidt
2014-12-02 20:13 ` Benjamin Herrenschmidt
2014-11-21 13:57 ` [PATCH 04/10] ppc64: Add paranoid warnings for unexpected DSISR_PROTFAULT Mel Gorman
2014-11-21 13:57 ` Mel Gorman
2014-11-21 13:57 ` Mel Gorman
2014-11-21 13:57 ` [PATCH 05/10] mm: Convert p[te|md]_mknonnuma and remaining page table manipulations Mel Gorman
2014-11-21 13:57 ` Mel Gorman
2014-11-21 13:57 ` Mel Gorman
2014-11-21 13:57 ` [PATCH 06/10] mm: Remove remaining references to NUMA hinting bits and helpers Mel Gorman
2014-11-21 13:57 ` Mel Gorman
2014-11-21 13:57 ` Mel Gorman
2014-11-21 13:57 ` [PATCH 07/10] mm: numa: Do not trap faults on the huge zero page Mel Gorman
2014-11-21 13:57 ` Mel Gorman
2014-11-21 13:57 ` Mel Gorman
2014-11-21 13:57 ` [PATCH 08/10] x86: mm: Restore original pte_special check Mel Gorman
2014-11-21 13:57 ` Mel Gorman
2014-11-21 13:57 ` Mel Gorman
2014-11-21 13:57 ` [PATCH 09/10] mm: numa: Add paranoid check around pte_protnone_numa Mel Gorman
2014-11-21 13:57 ` Mel Gorman
2014-11-21 13:57 ` Mel Gorman
2014-11-21 13:57 ` [PATCH 10/10] mm: numa: Avoid unnecessary TLB flushes when setting NUMA hinting entries Mel Gorman
2014-11-21 13:57 ` Mel Gorman
2014-11-21 13:57 ` Mel Gorman
-- strict thread matches above, loose matches on Subject: below --
2015-01-05 10:54 [PATCH 0/10] Replace _PAGE_NUMA with PAGE_NONE protections v5 Mel Gorman
2015-01-05 10:54 ` [PATCH 02/10] mm: Add p[te|md] protnone helpers for use by NUMA balancing Mel Gorman
2015-01-05 10:54 ` Mel Gorman
2015-01-05 10:54 ` Mel Gorman
2014-12-04 11:24 [PATCH 0/10] Replace _PAGE_NUMA with PAGE_NONE protections v4 Mel Gorman
2014-12-04 11:24 ` [PATCH 02/10] mm: Add p[te|md] protnone helpers for use by NUMA balancing Mel Gorman
2014-12-04 11:24 ` Mel Gorman
2014-12-04 11:24 ` Mel Gorman
2014-11-20 10:19 [PATCH 0/10] Replace _PAGE_NUMA with PAGE_NONE protections v2 Mel Gorman
2014-11-20 10:19 ` [PATCH 02/10] mm: Add p[te|md] protnone helpers for use by NUMA balancing Mel Gorman
2014-11-20 10:19 ` Mel Gorman
2014-11-20 10:19 ` Mel Gorman
2014-11-20 19:54 ` Linus Torvalds
2014-11-20 19:54 ` Linus Torvalds
2014-11-20 19:54 ` Linus Torvalds
2014-11-21 9:35 ` Mel Gorman
2014-11-21 9:35 ` Mel Gorman
2014-11-21 9:35 ` Mel Gorman
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=1417473519.7182.6.camel@kernel.crashing.org \
--to=benh@kernel.crashing.org \
--cc=aneesh.kumar@linux.vnet.ibm.com \
--cc=davej@redhat.com \
--cc=hughd@google.com \
--cc=kirill.shutemov@linux.intel.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=mgorman@suse.de \
--cc=mingo@redhat.com \
--cc=paulus@samba.org \
--cc=riel@redhat.com \
--cc=sasha.levin@oracle.com \
--cc=torvalds@linux-foundation.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.