From: "Aneesh Kumar K.V" <aneesh.kumar@linux.vnet.ibm.com>
To: benh@kernel.crashing.org, paulus@samba.org, mpe@ellerman.id.au
Cc: linuxppc-dev@lists.ozlabs.org, linux-mm@kvack.org,
"Aneesh Kumar K.V" <aneesh.kumar@linux.vnet.ibm.com>
Subject: [PATCH V3 03/30] powerpc/mm: add _PAGE_HASHPTE similar to 4K hash
Date: Thu, 18 Feb 2016 22:20:27 +0530 [thread overview]
Message-ID: <1455814254-10226-4-git-send-email-aneesh.kumar@linux.vnet.ibm.com> (raw)
In-Reply-To: <1455814254-10226-1-git-send-email-aneesh.kumar@linux.vnet.ibm.com>
The difference between 64K and 4K hash fault handling is confusing
with respect to when we set _PAGE_HASHPTE in the linux pte.
I was trying to find out whether we miss a hpte flush in any
scenario because of this. ie, a pte update on a linux pte, for which we
are doing a parallel hash pte insert. After looking at it closer my
understanding is this won't happen because pte update also look at
_PAGE_BUSY and we will wait for hash pte insert to finish before going
ahead with the pte update. But to avoid further confusion keep the
hash fault handler for all the page size similar to __hash_page_4k.
This partially reverts commit 41743a4e34f0 ("powerpc: Free a PTE bit on ppc64 with 64K pages"
Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
---
arch/powerpc/mm/hash64_64k.c | 4 ++--
arch/powerpc/mm/hugepage-hash64.c | 2 +-
arch/powerpc/mm/hugetlbpage-hash64.c | 2 +-
3 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/arch/powerpc/mm/hash64_64k.c b/arch/powerpc/mm/hash64_64k.c
index b3895720edb0..ac589947c882 100644
--- a/arch/powerpc/mm/hash64_64k.c
+++ b/arch/powerpc/mm/hash64_64k.c
@@ -76,7 +76,7 @@ int __hash_page_4K(unsigned long ea, unsigned long access, unsigned long vsid,
* a write access. Since this is 4K insert of 64K page size
* also add _PAGE_COMBO
*/
- new_pte = old_pte | _PAGE_BUSY | _PAGE_ACCESSED | _PAGE_COMBO;
+ new_pte = old_pte | _PAGE_BUSY | _PAGE_ACCESSED | _PAGE_COMBO | _PAGE_HASHPTE;
if (access & _PAGE_RW)
new_pte |= _PAGE_DIRTY;
} while (old_pte != __cmpxchg_u64((unsigned long *)ptep,
@@ -252,7 +252,7 @@ int __hash_page_64K(unsigned long ea, unsigned long access,
* a write access. Since this is 4K insert of 64K page size
* also add _PAGE_COMBO
*/
- new_pte = old_pte | _PAGE_BUSY | _PAGE_ACCESSED;
+ new_pte = old_pte | _PAGE_BUSY | _PAGE_ACCESSED | _PAGE_HASHPTE;
if (access & _PAGE_RW)
new_pte |= _PAGE_DIRTY;
} while (old_pte != __cmpxchg_u64((unsigned long *)ptep,
diff --git a/arch/powerpc/mm/hugepage-hash64.c b/arch/powerpc/mm/hugepage-hash64.c
index 8424f46c2bf7..bfde5aebb13d 100644
--- a/arch/powerpc/mm/hugepage-hash64.c
+++ b/arch/powerpc/mm/hugepage-hash64.c
@@ -46,7 +46,7 @@ int __hash_page_thp(unsigned long ea, unsigned long access, unsigned long vsid,
* Try to lock the PTE, add ACCESSED and DIRTY if it was
* a write access
*/
- new_pmd = old_pmd | _PAGE_BUSY | _PAGE_ACCESSED;
+ new_pmd = old_pmd | _PAGE_BUSY | _PAGE_ACCESSED | _PAGE_HASHPTE;
if (access & _PAGE_RW)
new_pmd |= _PAGE_DIRTY;
} while (old_pmd != __cmpxchg_u64((unsigned long *)pmdp,
diff --git a/arch/powerpc/mm/hugetlbpage-hash64.c b/arch/powerpc/mm/hugetlbpage-hash64.c
index e2138c7ae70f..9c224b012d62 100644
--- a/arch/powerpc/mm/hugetlbpage-hash64.c
+++ b/arch/powerpc/mm/hugetlbpage-hash64.c
@@ -54,7 +54,7 @@ int __hash_page_huge(unsigned long ea, unsigned long access, unsigned long vsid,
return 1;
/* Try to lock the PTE, add ACCESSED and DIRTY if it was
* a write access */
- new_pte = old_pte | _PAGE_BUSY | _PAGE_ACCESSED;
+ new_pte = old_pte | _PAGE_BUSY | _PAGE_ACCESSED | _PAGE_HASHPTE;
if (access & _PAGE_RW)
new_pte |= _PAGE_DIRTY;
} while(old_pte != __cmpxchg_u64((unsigned long *)ptep,
--
2.5.0
next prev parent reply other threads:[~2016-02-18 16:51 UTC|newest]
Thread overview: 38+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-02-18 16:50 [PATCH V3 00/30] Book3s abstraction in preparation for new MMU model Aneesh Kumar K.V
2016-02-18 16:50 ` [PATCH V3 01/30] mm: Make vm_get_page_prot arch specific Aneesh Kumar K.V
2016-02-18 23:15 ` Paul Mackerras
2016-02-19 2:40 ` Aneesh Kumar K.V
2016-02-21 0:32 ` Benjamin Herrenschmidt
2016-02-19 1:28 ` Dave Hansen
2016-02-19 2:40 ` Aneesh Kumar K.V
2016-02-18 16:50 ` [PATCH V3 02/30] mm: Some arch may want to use HPAGE_PMD related values as variables Aneesh Kumar K.V
2016-02-18 16:50 ` Aneesh Kumar K.V [this message]
2016-02-18 16:50 ` [PATCH V3 04/30] powerpc/mm: Split pgtable types to separate header Aneesh Kumar K.V
2016-02-18 16:50 ` [PATCH V3 05/30] powerpc/mm: Don't have conditional defines for real_pte_t Aneesh Kumar K.V
2016-02-18 16:50 ` [PATCH V3 06/30] powerpc/mm: Switch book3s 64 with 64K page size to 4 level page table Aneesh Kumar K.V
2016-02-18 16:50 ` [PATCH V3 07/30] powerpc/mm: Copy pgalloc (part 1) Aneesh Kumar K.V
2016-02-18 16:50 ` [PATCH V3 08/30] powerpc/mm: Copy pgalloc (part 2) Aneesh Kumar K.V
2016-02-18 16:50 ` [PATCH V3 09/30] powerpc/mm: Copy pgalloc (part 3) Aneesh Kumar K.V
2016-02-18 16:50 ` [PATCH V3 10/30] powerpc/mm: Hugetlbfs is book3s_64 and fsl_book3e (32 or 64) Aneesh Kumar K.V
2016-02-18 16:50 ` [PATCH V3 11/30] powerpc/mm: free_hugepd_range split to hash and nonhash Aneesh Kumar K.V
2016-02-18 16:50 ` [PATCH V3 12/30] powerpc/mm: Use helper instead of opencoding Aneesh Kumar K.V
2016-02-18 16:50 ` [PATCH V3 13/30] powerpc/mm: Move hash64 specific definitions to separate header Aneesh Kumar K.V
2016-02-18 16:50 ` [PATCH V3 14/30] powerpc/mm: Move swap related definition ot hash64 header Aneesh Kumar K.V
2016-02-18 16:50 ` [PATCH V3 15/30] powerpc/mm: Move hash page table related functions to pgtable-hash64.c Aneesh Kumar K.V
2016-02-18 16:50 ` [PATCH V3 16/30] powerpc/mm: Rename hash specific page table bits (_PAGE* -> H_PAGE*) Aneesh Kumar K.V
2016-02-18 16:50 ` [PATCH V3 17/30] powerpc/mm: Use flush_tlb_page in ptep_clear_flush_young Aneesh Kumar K.V
2016-02-18 16:50 ` [PATCH V3 18/30] powerpc/mm: THP is only available on hash64 as of now Aneesh Kumar K.V
2016-02-18 16:50 ` [PATCH V3 19/30] powerpc/mm: Use generic version of pmdp_clear_flush_young Aneesh Kumar K.V
2016-02-18 16:50 ` [PATCH V3 20/30] powerpc/mm: Create a new headers for tlbflush for hash64 Aneesh Kumar K.V
2016-02-18 16:50 ` [PATCH V3 21/30] powerpc/mm: Hash linux abstraction for page table accessors Aneesh Kumar K.V
2016-02-18 16:50 ` [PATCH V3 22/30] powerpc/mm: Hash linux abstraction for functions in pgtable-hash.c Aneesh Kumar K.V
2016-02-18 16:50 ` [PATCH V3 23/30] powerpc/mm: Hash linux abstraction for mmu context handling code Aneesh Kumar K.V
2016-02-18 16:50 ` [PATCH V3 24/30] powerpc/mm: Move hash related mmu-*.h headers to book3s/ Aneesh Kumar K.V
2016-02-18 16:50 ` [PATCH V3 25/30] powerpc/mm: Hash linux abstractions for early init routines Aneesh Kumar K.V
2016-02-18 16:50 ` [PATCH V3 26/30] powerpc/mm: Hash linux abstraction for THP Aneesh Kumar K.V
2016-02-18 16:50 ` [PATCH V3 27/30] powerpc/mm: Hash linux abstraction for HugeTLB Aneesh Kumar K.V
2016-02-18 16:50 ` [PATCH V3 28/30] powerpc/mm: Hash linux abstraction for page table allocator Aneesh Kumar K.V
2016-02-18 16:50 ` [PATCH V3 29/30] powerpc/mm: Hash linux abstraction for tlbflush routines Aneesh Kumar K.V
2016-02-18 16:50 ` [PATCH V3 30/30] powerpc/mm: Hash linux abstraction for pte swap encoding Aneesh Kumar K.V
2016-02-18 23:13 ` [PATCH V3 00/30] Book3s abstraction in preparation for new MMU model Paul Mackerras
2016-02-19 2:34 ` 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=1455814254-10226-4-git-send-email-aneesh.kumar@linux.vnet.ibm.com \
--to=aneesh.kumar@linux.vnet.ibm.com \
--cc=benh@kernel.crashing.org \
--cc=linux-mm@kvack.org \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=mpe@ellerman.id.au \
--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 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).