mirror of https://gitee.com/openkylin/linux.git
powerpc/mm: cleanup HPAGE_SHIFT setup
Only book3s/64 may select default among several HPAGE_SHIFT at runtime. 8xx always defines 512K pages as default FSL_BOOK3E always defines 4M pages as default This patch limits HUGETLB_PAGE_SIZE_VARIABLE to book3s/64 moves the definitions in subarches files. Signed-off-by: Christophe Leroy <christophe.leroy@c-s.fr> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
This commit is contained in:
parent
45d0ba527b
commit
c5710cd207
|
@ -390,7 +390,7 @@ source "kernel/Kconfig.hz"
|
|||
|
||||
config HUGETLB_PAGE_SIZE_VARIABLE
|
||||
bool
|
||||
depends on HUGETLB_PAGE
|
||||
depends on HUGETLB_PAGE && PPC_BOOK3S_64
|
||||
default y
|
||||
|
||||
config MATH_EMULATION
|
||||
|
|
|
@ -15,6 +15,8 @@
|
|||
|
||||
extern bool hugetlb_disabled;
|
||||
|
||||
void hugetlbpage_init_default(void);
|
||||
|
||||
void flush_dcache_icache_hugepage(struct page *page);
|
||||
|
||||
int slice_is_hugepage_only_range(struct mm_struct *mm, unsigned long addr,
|
||||
|
|
|
@ -28,10 +28,15 @@
|
|||
#define PAGE_SIZE (ASM_CONST(1) << PAGE_SHIFT)
|
||||
|
||||
#ifndef __ASSEMBLY__
|
||||
#ifdef CONFIG_HUGETLB_PAGE
|
||||
extern unsigned int HPAGE_SHIFT;
|
||||
#else
|
||||
#ifndef CONFIG_HUGETLB_PAGE
|
||||
#define HPAGE_SHIFT PAGE_SHIFT
|
||||
#elif defined(CONFIG_PPC_BOOK3S_64)
|
||||
extern unsigned int hpage_shift;
|
||||
#define HPAGE_SHIFT hpage_shift
|
||||
#elif defined(CONFIG_PPC_8xx)
|
||||
#define HPAGE_SHIFT 19 /* 512k pages */
|
||||
#elif defined(CONFIG_PPC_FSL_BOOK3E)
|
||||
#define HPAGE_SHIFT 22 /* 4M pages */
|
||||
#endif
|
||||
#define HPAGE_SIZE ((1UL) << HPAGE_SHIFT)
|
||||
#define HPAGE_MASK (~(HPAGE_SIZE - 1))
|
||||
|
|
|
@ -15,6 +15,9 @@
|
|||
#include <asm/cacheflush.h>
|
||||
#include <asm/machdep.h>
|
||||
|
||||
unsigned int hpage_shift;
|
||||
EXPORT_SYMBOL(hpage_shift);
|
||||
|
||||
extern long hpte_insert_repeating(unsigned long hash, unsigned long vpn,
|
||||
unsigned long pa, unsigned long rlags,
|
||||
unsigned long vflags, int psize, int ssize);
|
||||
|
@ -150,3 +153,16 @@ void huge_ptep_modify_prot_commit(struct vm_area_struct *vma, unsigned long addr
|
|||
old_pte, pte);
|
||||
set_huge_pte_at(vma->vm_mm, addr, ptep, pte);
|
||||
}
|
||||
|
||||
void hugetlbpage_init_default(void)
|
||||
{
|
||||
/* Set default large page size. Currently, we pick 16M or 1M
|
||||
* depending on what is available
|
||||
*/
|
||||
if (mmu_psize_defs[MMU_PAGE_16M].shift)
|
||||
hpage_shift = mmu_psize_defs[MMU_PAGE_16M].shift;
|
||||
else if (mmu_psize_defs[MMU_PAGE_1M].shift)
|
||||
hpage_shift = mmu_psize_defs[MMU_PAGE_1M].shift;
|
||||
else if (mmu_psize_defs[MMU_PAGE_2M].shift)
|
||||
hpage_shift = mmu_psize_defs[MMU_PAGE_2M].shift;
|
||||
}
|
||||
|
|
|
@ -28,9 +28,6 @@
|
|||
|
||||
bool hugetlb_disabled = false;
|
||||
|
||||
unsigned int HPAGE_SHIFT;
|
||||
EXPORT_SYMBOL(HPAGE_SHIFT);
|
||||
|
||||
#define hugepd_none(hpd) (hpd_val(hpd) == 0)
|
||||
|
||||
#define PTE_T_ORDER (__builtin_ffs(sizeof(pte_t)) - __builtin_ffs(sizeof(void *)))
|
||||
|
@ -645,23 +642,9 @@ static int __init hugetlbpage_init(void)
|
|||
#endif
|
||||
}
|
||||
|
||||
#if defined(CONFIG_PPC_FSL_BOOK3E) || defined(CONFIG_PPC_8xx)
|
||||
/* Default hpage size = 4M on FSL_BOOK3E and 512k on 8xx */
|
||||
if (mmu_psize_defs[MMU_PAGE_4M].shift)
|
||||
HPAGE_SHIFT = mmu_psize_defs[MMU_PAGE_4M].shift;
|
||||
else if (mmu_psize_defs[MMU_PAGE_512K].shift)
|
||||
HPAGE_SHIFT = mmu_psize_defs[MMU_PAGE_512K].shift;
|
||||
#else
|
||||
/* Set default large page size. Currently, we pick 16M or 1M
|
||||
* depending on what is available
|
||||
*/
|
||||
if (mmu_psize_defs[MMU_PAGE_16M].shift)
|
||||
HPAGE_SHIFT = mmu_psize_defs[MMU_PAGE_16M].shift;
|
||||
else if (mmu_psize_defs[MMU_PAGE_1M].shift)
|
||||
HPAGE_SHIFT = mmu_psize_defs[MMU_PAGE_1M].shift;
|
||||
else if (mmu_psize_defs[MMU_PAGE_2M].shift)
|
||||
HPAGE_SHIFT = mmu_psize_defs[MMU_PAGE_2M].shift;
|
||||
#endif
|
||||
if (IS_ENABLED(HUGETLB_PAGE_SIZE_VARIABLE))
|
||||
hugetlbpage_init_default();
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue