From: Michael Neuling <mikey@neuling.org>
To: "Aneesh Kumar K.V" <aneesh.kumar@linux.vnet.ibm.com>
Cc: paulus@samba.org, linuxppc-dev@lists.ozlabs.org, dwg@au1.ibm.com
Subject: Re: [PATCH 1/2] powerpc: use smp_rmb when looking at deposisted pgtable to store hash index
Date: Mon, 20 May 2013 11:18:46 +1000 [thread overview]
Message-ID: <26735.1369012726@ale.ozlabs.ibm.com> (raw)
In-Reply-To: <1368778503-23230-1-git-send-email-aneesh.kumar@linux.vnet.ibm.com>
Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com> wrote:
> From: "Aneesh Kumar K.V" <aneesh.kumar@linux.vnet.ibm.com>
>
> We need to use smb_rmb when looking at hpte slot array. Otherwise we could
> reorder the hpte_slot array load bfore even we marked the pmd trans huge.
Does this need to go back into the stable series?
Mikey
>
> Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
> ---
> arch/powerpc/include/asm/pgtable-ppc64.h | 15 +++++++++++++++
> arch/powerpc/mm/hugepage-hash64.c | 6 +-----
> arch/powerpc/mm/pgtable_64.c | 6 +-----
> 3 files changed, 17 insertions(+), 10 deletions(-)
>
> diff --git a/arch/powerpc/include/asm/pgtable-ppc64.h b/arch/powerpc/include/asm/pgtable-ppc64.h
> index d046289..46db094 100644
> --- a/arch/powerpc/include/asm/pgtable-ppc64.h
> +++ b/arch/powerpc/include/asm/pgtable-ppc64.h
> @@ -10,6 +10,7 @@
> #else
> #include <asm/pgtable-ppc64-4k.h>
> #endif
> +#include <asm/barrier.h>
>
> #define FIRST_USER_ADDRESS 0
>
> @@ -393,6 +394,20 @@ static inline void mark_hpte_slot_valid(unsigned char *hpte_slot_array,
> hpte_slot_array[index] = hidx << 4 | 0x1 << 3;
> }
>
> +static inline char *get_hpte_slot_array(pmd_t *pmdp)
> +{
> + /*
> + * The hpte hindex is stored in the pgtable whose address is in the
> + * second half of the PMD
> + *
> + * Order this load with the test for pmd_trans_huge in the caller
> + */
> + smp_rmb();
> + return *(char **)(pmdp + PTRS_PER_PMD);
> +
> +
> +}
> +
> extern void hpte_do_hugepage_flush(struct mm_struct *mm, unsigned long addr,
> pmd_t *pmdp);
> #ifdef CONFIG_TRANSPARENT_HUGEPAGE
> diff --git a/arch/powerpc/mm/hugepage-hash64.c b/arch/powerpc/mm/hugepage-hash64.c
> index e430766..c3ba3d5 100644
> --- a/arch/powerpc/mm/hugepage-hash64.c
> +++ b/arch/powerpc/mm/hugepage-hash64.c
> @@ -84,11 +84,7 @@ int __hash_page_thp(unsigned long ea, unsigned long access, unsigned long vsid,
>
> vpn = hpt_vpn(ea, vsid, ssize);
> hash = hpt_hash(vpn, shift, ssize);
> - /*
> - * The hpte hindex are stored in the pgtable whose address is in the
> - * second half of the PMD
> - */
> - hpte_slot_array = *(char **)(pmdp + PTRS_PER_PMD);
> + hpte_slot_array = get_hpte_slot_array(pmdp);
>
> valid = hpte_valid(hpte_slot_array, index);
> if (valid) {
> diff --git a/arch/powerpc/mm/pgtable_64.c b/arch/powerpc/mm/pgtable_64.c
> index 8dd7c83..19d6734 100644
> --- a/arch/powerpc/mm/pgtable_64.c
> +++ b/arch/powerpc/mm/pgtable_64.c
> @@ -701,11 +701,7 @@ void hpte_do_hugepage_flush(struct mm_struct *mm, unsigned long addr,
> * Flush all the hptes mapping this hugepage
> */
> s_addr = addr & HPAGE_PMD_MASK;
> - /*
> - * The hpte hindex are stored in the pgtable whose address is in the
> - * second half of the PMD
> - */
> - hpte_slot_array = *(char **)(pmdp + PTRS_PER_PMD);
> + hpte_slot_array = get_hpte_slot_array(pmdp);
> /*
> * IF we try to do a HUGE PTE update after a withdraw is done.
> * we will find the below NULL. This happens when we do
> --
> 1.8.1.2
>
> _______________________________________________
> Linuxppc-dev mailing list
> Linuxppc-dev@lists.ozlabs.org
> https://lists.ozlabs.org/listinfo/linuxppc-dev
>
next prev parent reply other threads:[~2013-05-20 1:18 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-05-17 8:15 [PATCH 1/2] powerpc: use smp_rmb when looking at deposisted pgtable to store hash index Aneesh Kumar K.V
2013-05-17 8:15 ` [PATCH 2/2] powerpc: split hugepage when using subpage protection Aneesh Kumar K.V
2013-05-17 8:36 ` Aneesh Kumar K.V
2013-05-20 1:18 ` Michael Neuling [this message]
2013-05-20 4:27 ` [PATCH 1/2] powerpc: use smp_rmb when looking at deposisted pgtable to store hash index Aneesh Kumar K.V
2013-05-20 6:28 ` Benjamin Herrenschmidt
2013-05-20 9:26 ` Aneesh Kumar K.V
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=26735.1369012726@ale.ozlabs.ibm.com \
--to=mikey@neuling.org \
--cc=aneesh.kumar@linux.vnet.ibm.com \
--cc=dwg@au1.ibm.com \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=paulus@samba.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.