"Aneesh Kumar K.V" <aneesh.ku...@linux.vnet.ibm.com> writes:
> Paul Mackerras <pau...@ozlabs.org> writes: > >> >> #define _PAGE_PTE (1ul << 62) /* distinguishes PTEs from >> pointers */ >> #define _PAGE_PRESENT (1ul << 63) /* pte contains a >> translation */ >> diff --git a/arch/powerpc/mm/pgtable-book3s64.c >> b/arch/powerpc/mm/pgtable-book3s64.c >> index f4f437c..7ff0289 100644 >> --- a/arch/powerpc/mm/pgtable-book3s64.c >> +++ b/arch/powerpc/mm/pgtable-book3s64.c >> @@ -86,7 +86,7 @@ pmd_t pfn_pmd(unsigned long pfn, pgprot_t pgprot) >> { >> unsigned long pmdv; >> >> - pmdv = (pfn << PAGE_SHIFT) & PTE_RPN_MASK; >> + pmdv = ((pfn << PAGE_SHIFT) & PTE_RPN_MASK) | _PAGE_LARGE; >> return pmd_set_protbits(__pmd(pmdv), pgprot); >> } >> > > I will look at this and see if can make the patch simpler. But do we > really want to use the pte bit for this ? Aren't we low on free pte bits Ok this will work, provided we are ok to take up two pte bits for this So we can use make_huge_pte() to fixup the pte entry for hugetlb and pmd_mkhuge() to fixup the THP. Now the question will be how will we support _PAGE_DEVMAP (for nvidmm). We don't have free software pte bits after we make the above change. NOTE: We do have 3 reserved bits(ppc bit 4-6 ) can we use that ? -aneesh