powerpc: Free a PTE bit on ppc64 with 64K pages
This frees a PTE bit when using 64K pages on ppc64. This is done by getting rid of the separate _PAGE_HASHPTE bit. Instead, we just test if any of the 16 sub-page bits is set. For non-combo pages (ie. real 64K pages), we set SUB0 and the location encoding in that field. Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org> Signed-off-by: Paul Mackerras <paulus@samba.org>
This commit is contained in:
committed by
Paul Mackerras
parent
ff1f4ee94c
commit
41743a4e34
@ -458,8 +458,7 @@ int hash_huge_page(struct mm_struct *mm, unsigned long access,
|
||||
old_pte = pte_val(*ptep);
|
||||
if (old_pte & _PAGE_BUSY)
|
||||
goto out;
|
||||
new_pte = old_pte | _PAGE_BUSY |
|
||||
_PAGE_ACCESSED | _PAGE_HASHPTE;
|
||||
new_pte = old_pte | _PAGE_BUSY | _PAGE_ACCESSED;
|
||||
} while(old_pte != __cmpxchg_u64((unsigned long *)ptep,
|
||||
old_pte, new_pte));
|
||||
|
||||
@ -499,8 +498,11 @@ repeat:
|
||||
HPTES_PER_GROUP) & ~0x7UL;
|
||||
|
||||
/* clear HPTE slot informations in new PTE */
|
||||
#ifdef CONFIG_PPC_64K_PAGES
|
||||
new_pte = (new_pte & ~_PAGE_HPTEFLAGS) | _PAGE_HPTE_SUB0;
|
||||
#else
|
||||
new_pte = (new_pte & ~_PAGE_HPTEFLAGS) | _PAGE_HASHPTE;
|
||||
|
||||
#endif
|
||||
/* Add in WIMG bits */
|
||||
/* XXX We should store these in the pte */
|
||||
/* --BenH: I think they are ... */
|
||||
|
Reference in New Issue
Block a user