Skip to content

Commit

Permalink
powerpc/mm/radix: Add hugetlb support 4K page size
Browse files Browse the repository at this point in the history
We have hugepage at the pmd level with 4K radix config. Hence we don't
need to use hugepd format with radix.

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 May 11, 2016
1 parent 43a5c68 commit c0a6c71
Show file tree
Hide file tree
Showing 2 changed files with 47 additions and 21 deletions.
22 changes: 1 addition & 21 deletions arch/powerpc/include/asm/book3s/64/hash-4k.h
Original file line number Diff line number Diff line change
Expand Up @@ -37,26 +37,7 @@
remap_pfn_range((vma), (addr), (pfn), PAGE_SIZE, (prot))

#ifdef CONFIG_HUGETLB_PAGE
/*
* For 4k page size, we support explicit hugepage via hugepd
*/
static inline int pmd_huge(pmd_t pmd)
{
return 0;
}

static inline int pud_huge(pud_t pud)
{
return 0;
}

static inline int pgd_huge(pgd_t pgd)
{
return 0;
}
#define pgd_huge pgd_huge

static inline int hugepd_ok(hugepd_t hpd)
static inline int hash__hugepd_ok(hugepd_t hpd)
{
/*
* if it is not a pte and have hugepd shift mask
Expand All @@ -67,7 +48,6 @@ static inline int hugepd_ok(hugepd_t hpd)
return true;
return false;
}
#define is_hugepd(hpd) (hugepd_ok(hpd))
#endif

#endif /* !__ASSEMBLY__ */
Expand Down
46 changes: 46 additions & 0 deletions arch/powerpc/include/asm/book3s/64/pgtable-4k.h
Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,51 @@
/*
* hash 4k can't share hugetlb and also doesn't support THP
*/
#ifndef __ASSEMBLY__
#ifdef CONFIG_HUGETLB_PAGE
static inline int pmd_huge(pmd_t pmd)
{
/*
* leaf pte for huge page
*/
if (radix_enabled())
return !!(pmd_val(pmd) & _PAGE_PTE);
return 0;
}

static inline int pud_huge(pud_t pud)
{
/*
* leaf pte for huge page
*/
if (radix_enabled())
return !!(pud_val(pud) & _PAGE_PTE);
return 0;
}

static inline int pgd_huge(pgd_t pgd)
{
/*
* leaf pte for huge page
*/
if (radix_enabled())
return !!(pgd_val(pgd) & _PAGE_PTE);
return 0;
}
#define pgd_huge pgd_huge
/*
* With radix , we have hugepage ptes in the pud and pmd entries. We don't
* need to setup hugepage directory for them. Our pte and page directory format
* enable us to have this enabled.
*/
static inline int hugepd_ok(hugepd_t hpd)
{
if (radix_enabled())
return 0;
return hash__hugepd_ok(hpd);
}
#define is_hugepd(hpd) (hugepd_ok(hpd))
#endif /* CONFIG_HUGETLB_PAGE */
#endif /* __ASSEMBLY__ */

#endif /*_ASM_POWERPC_BOOK3S_64_PGTABLE_4K_H */

0 comments on commit c0a6c71

Please sign in to comment.