powerpc: Fix hugetlb with CONFIG_PPC_MM_SLICES=y
Commit 41151e77a4
("powerpc: Hugetlb for BookE") added some
#ifdef CONFIG_MM_SLICES conditionals to hugetlb_get_unmapped_area()
and vma_mmu_pagesize(). Unfortunately this is not the correct config
symbol; it should be CONFIG_PPC_MM_SLICES. The result is that
attempting to use hugetlbfs on 64-bit Power server processors results
in an infinite stack recursion between get_unmapped_area() and
hugetlb_get_unmapped_area().
This fixes it by changing the #ifdef to use CONFIG_PPC_MM_SLICES
in those functions and also in book3e_hugetlb_preload().
Signed-off-by: Paul Mackerras <paulus@samba.org>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
This commit is contained in:
committed by
Benjamin Herrenschmidt
parent
7b72c9f875
commit
25c29f9e32
@@ -690,7 +690,7 @@ unsigned long hugetlb_get_unmapped_area(struct file *file, unsigned long addr,
|
||||
unsigned long len, unsigned long pgoff,
|
||||
unsigned long flags)
|
||||
{
|
||||
#ifdef CONFIG_MM_SLICES
|
||||
#ifdef CONFIG_PPC_MM_SLICES
|
||||
struct hstate *hstate = hstate_file(file);
|
||||
int mmu_psize = shift_to_mmu_psize(huge_page_shift(hstate));
|
||||
|
||||
@@ -702,7 +702,7 @@ unsigned long hugetlb_get_unmapped_area(struct file *file, unsigned long addr,
|
||||
|
||||
unsigned long vma_mmu_pagesize(struct vm_area_struct *vma)
|
||||
{
|
||||
#ifdef CONFIG_MM_SLICES
|
||||
#ifdef CONFIG_PPC_MM_SLICES
|
||||
unsigned int psize = get_slice_psize(vma->vm_mm, vma->vm_start);
|
||||
|
||||
return 1UL << mmu_psize_to_shift(psize);
|
||||
|
Reference in New Issue
Block a user