powerpc/mm/hugetlb/book3s: add _PAGE_PRESENT to hugepd pointer.
This make hugetlb directory pointer similar to other page able entries. A hugepd entry is identified by lack of _PAGE_PTE bit set and directory size stored in HUGEPD_SHIFT_MASK. We update that to also look at _PAGE_PRESENT Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.ibm.com> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
This commit is contained in:
parent
da7ad366b4
commit
f1981b5b30
|
@ -66,7 +66,7 @@ static inline int hash__hugepd_ok(hugepd_t hpd)
|
||||||
* if it is not a pte and have hugepd shift mask
|
* if it is not a pte and have hugepd shift mask
|
||||||
* set, then it is a hugepd directory pointer
|
* set, then it is a hugepd directory pointer
|
||||||
*/
|
*/
|
||||||
if (!(hpdval & _PAGE_PTE) &&
|
if (!(hpdval & _PAGE_PTE) && (hpdval & _PAGE_PRESENT) &&
|
||||||
((hpdval & HUGEPD_SHIFT_MASK) != 0))
|
((hpdval & HUGEPD_SHIFT_MASK) != 0))
|
||||||
return true;
|
return true;
|
||||||
return false;
|
return false;
|
||||||
|
|
|
@ -39,4 +39,7 @@ static inline bool gigantic_page_supported(void)
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/* hugepd entry valid bit */
|
||||||
|
#define HUGEPD_VAL_BITS (0x8000000000000000UL)
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -95,7 +95,7 @@ static int __hugepte_alloc(struct mm_struct *mm, hugepd_t *hpdp,
|
||||||
break;
|
break;
|
||||||
else {
|
else {
|
||||||
#ifdef CONFIG_PPC_BOOK3S_64
|
#ifdef CONFIG_PPC_BOOK3S_64
|
||||||
*hpdp = __hugepd(__pa(new) |
|
*hpdp = __hugepd(__pa(new) | HUGEPD_VAL_BITS |
|
||||||
(shift_to_mmu_psize(pshift) << 2));
|
(shift_to_mmu_psize(pshift) << 2));
|
||||||
#elif defined(CONFIG_PPC_8xx)
|
#elif defined(CONFIG_PPC_8xx)
|
||||||
*hpdp = __hugepd(__pa(new) | _PMD_USER |
|
*hpdp = __hugepd(__pa(new) | _PMD_USER |
|
||||||
|
|
Loading…
Reference in New Issue