Skip to content

Commit

Permalink
powerpc/mm: Move WIMG update to helper.
Browse files Browse the repository at this point in the history
Only difference here is, we apply the WIMG mapping early, so rflags
passed to updatepp will also be changed.

Acked-by: Scott Wood <scottwood@freescale.com>
Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
  • Loading branch information
Aneesh Kumar K.V authored and Michael Ellerman committed Dec 14, 2015
1 parent c6a3c49 commit 40e8550
Show file tree
Hide file tree
Showing 5 changed files with 12 additions and 31 deletions.
5 changes: 0 additions & 5 deletions arch/powerpc/mm/hash64_4k.c
Original file line number Diff line number Diff line change
Expand Up @@ -54,11 +54,6 @@ int __hash_page_4K(unsigned long ea, unsigned long access, unsigned long vsid,
* need to add in 0x1 if it's a read-only user page
*/
rflags = htab_convert_pte_flags(new_pte);
/*
* Add in WIMG bits
*/
rflags |= (new_pte & (_PAGE_WRITETHRU | _PAGE_NO_CACHE |
_PAGE_COHERENT | _PAGE_GUARDED));

if (!cpu_has_feature(CPU_FTR_NOEXECUTE) &&
!cpu_has_feature(CPU_FTR_COHERENT_ICACHE))
Expand Down
10 changes: 0 additions & 10 deletions arch/powerpc/mm/hash64_64k.c
Original file line number Diff line number Diff line change
Expand Up @@ -86,11 +86,6 @@ int __hash_page_4K(unsigned long ea, unsigned long access, unsigned long vsid,
*/
subpg_pte = new_pte & ~subpg_prot;
rflags = htab_convert_pte_flags(subpg_pte);
/*
* Add in WIMG bits
*/
rflags |= (subpg_pte & (_PAGE_WRITETHRU | _PAGE_NO_CACHE |
_PAGE_COHERENT | _PAGE_GUARDED));

if (!cpu_has_feature(CPU_FTR_NOEXECUTE) &&
!cpu_has_feature(CPU_FTR_COHERENT_ICACHE)) {
Expand Down Expand Up @@ -258,11 +253,6 @@ int __hash_page_64K(unsigned long ea, unsigned long access,
old_pte, new_pte));

rflags = htab_convert_pte_flags(new_pte);
/*
* Add in WIMG bits
*/
rflags |= (new_pte & (_PAGE_WRITETHRU | _PAGE_NO_CACHE |
_PAGE_COHERENT | _PAGE_GUARDED));

if (!cpu_has_feature(CPU_FTR_NOEXECUTE) &&
!cpu_has_feature(CPU_FTR_COHERENT_ICACHE))
Expand Down
13 changes: 12 additions & 1 deletion arch/powerpc/mm/hash_utils_64.c
Original file line number Diff line number Diff line change
Expand Up @@ -182,7 +182,18 @@ unsigned long htab_convert_pte_flags(unsigned long pteflags)
/*
* Always add "C" bit for perf. Memory coherence is always enabled
*/
return rflags | HPTE_R_C | HPTE_R_M;
rflags |= HPTE_R_C | HPTE_R_M;
/*
* Add in WIG bits
*/
if (pteflags & _PAGE_WRITETHRU)
rflags |= HPTE_R_W;
if (pteflags & _PAGE_NO_CACHE)
rflags |= HPTE_R_I;
if (pteflags & _PAGE_GUARDED)
rflags |= HPTE_R_G;

return rflags;
}

int htab_bolt_mapping(unsigned long vstart, unsigned long vend,
Expand Down
7 changes: 0 additions & 7 deletions arch/powerpc/mm/hugepage-hash64.c
Original file line number Diff line number Diff line change
Expand Up @@ -120,13 +120,6 @@ int __hash_page_thp(unsigned long ea, unsigned long access, unsigned long vsid,
pa = pmd_pfn(__pmd(old_pmd)) << PAGE_SHIFT;
new_pmd |= _PAGE_HASHPTE;

/* Add in WIMG bits */
rflags |= (new_pmd & (_PAGE_WRITETHRU | _PAGE_NO_CACHE |
_PAGE_GUARDED));
/*
* enable the memory coherence always
*/
rflags |= HPTE_R_M;
repeat:
hpte_group = ((hash & htab_hash_mask) * HPTES_PER_GROUP) & ~0x7UL;

Expand Down
8 changes: 0 additions & 8 deletions arch/powerpc/mm/hugetlbpage-hash64.c
Original file line number Diff line number Diff line change
Expand Up @@ -91,14 +91,6 @@ int __hash_page_huge(unsigned long ea, unsigned long access, unsigned long vsid,
/* clear HPTE slot informations in new PTE */
new_pte = (new_pte & ~_PAGE_HPTEFLAGS) | _PAGE_HASHPTE;

/* Add in WIMG bits */
rflags |= (new_pte & (_PAGE_WRITETHRU | _PAGE_NO_CACHE |
_PAGE_COHERENT | _PAGE_GUARDED));
/*
* enable the memory coherence always
*/
rflags |= HPTE_R_M;

slot = hpte_insert_repeating(hash, vpn, pa, rflags, 0,
mmu_psize, ssize);

Expand Down

0 comments on commit 40e8550

Please sign in to comment.