Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

Merge branch 'booke-hugetlb' into next

+155 -87
+1
arch/powerpc/configs/corenet32_smp_defconfig
··· 155 155 CONFIG_NTFS_FS=y 156 156 CONFIG_PROC_KCORE=y 157 157 CONFIG_TMPFS=y 158 + CONFIG_HUGETLBFS=y 158 159 CONFIG_JFFS2_FS=y 159 160 CONFIG_CRAMFS=y 160 161 CONFIG_NFS_FS=y
+1
arch/powerpc/configs/corenet64_smp_defconfig
··· 81 81 # CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set 82 82 CONFIG_PROC_KCORE=y 83 83 CONFIG_TMPFS=y 84 + CONFIG_HUGETLBFS=y 84 85 # CONFIG_MISC_FILESYSTEMS is not set 85 86 CONFIG_PARTITION_ADVANCED=y 86 87 CONFIG_MAC_PARTITION=y
+1
arch/powerpc/configs/mpc85xx_defconfig
··· 182 182 CONFIG_NTFS_FS=y 183 183 CONFIG_PROC_KCORE=y 184 184 CONFIG_TMPFS=y 185 + CONFIG_HUGETLBFS=y 185 186 CONFIG_ADFS_FS=m 186 187 CONFIG_AFFS_FS=m 187 188 CONFIG_HFS_FS=m
+1
arch/powerpc/configs/mpc85xx_smp_defconfig
··· 183 183 CONFIG_NTFS_FS=y 184 184 CONFIG_PROC_KCORE=y 185 185 CONFIG_TMPFS=y 186 + CONFIG_HUGETLBFS=y 186 187 CONFIG_ADFS_FS=m 187 188 CONFIG_AFFS_FS=m 188 189 CONFIG_HFS_FS=m
+29 -9
arch/powerpc/include/asm/hugetlb.h
··· 5 5 #include <asm/page.h> 6 6 7 7 extern struct kmem_cache *hugepte_cache; 8 - extern void __init reserve_hugetlb_gpages(void); 9 8 10 9 static inline pte_t *hugepd_page(hugepd_t hpd) 11 10 { ··· 21 22 unsigned pdshift) 22 23 { 23 24 /* 24 - * On 32-bit, we have multiple higher-level table entries that point to 25 - * the same hugepte. Just use the first one since they're all 25 + * On FSL BookE, we have multiple higher-level table entries that 26 + * point to the same hugepte. Just use the first one since they're all 26 27 * identical. So for that case, idx=0. 27 28 */ 28 29 unsigned long idx = 0; 29 30 30 31 pte_t *dir = hugepd_page(*hpdp); 31 - #ifdef CONFIG_PPC64 32 + #ifndef CONFIG_PPC_FSL_BOOK3E 32 33 idx = (addr & ((1UL << pdshift) - 1)) >> hugepd_shift(*hpdp); 33 34 #endif 34 35 ··· 52 53 } 53 54 #endif 54 55 55 - void book3e_hugetlb_preload(struct mm_struct *mm, unsigned long ea, pte_t pte); 56 + void book3e_hugetlb_preload(struct vm_area_struct *vma, unsigned long ea, 57 + pte_t pte); 56 58 void flush_hugetlb_page(struct vm_area_struct *vma, unsigned long vmaddr); 57 59 58 60 void hugetlb_free_pgd_range(struct mmu_gather *tlb, unsigned long addr, ··· 124 124 unsigned long addr, pte_t *ptep, 125 125 pte_t pte, int dirty) 126 126 { 127 + #ifdef HUGETLB_NEED_PRELOAD 128 + /* 129 + * The "return 1" forces a call of update_mmu_cache, which will write a 130 + * TLB entry. Without this, platforms that don't do a write of the TLB 131 + * entry in the TLB miss handler asm will fault ad infinitum. 132 + */ 133 + ptep_set_access_flags(vma, addr, ptep, pte, dirty); 134 + return 1; 135 + #else 127 136 return ptep_set_access_flags(vma, addr, ptep, pte, dirty); 137 + #endif 128 138 } 129 139 130 140 static inline pte_t huge_ptep_get(pte_t *ptep) ··· 152 142 } 153 143 154 144 #else /* ! CONFIG_HUGETLB_PAGE */ 155 - static inline void reserve_hugetlb_gpages(void) 156 - { 157 - pr_err("Cannot reserve gpages without hugetlb enabled\n"); 158 - } 159 145 static inline void flush_hugetlb_page(struct vm_area_struct *vma, 160 146 unsigned long vmaddr) 147 + { 148 + } 149 + #endif /* CONFIG_HUGETLB_PAGE */ 150 + 151 + 152 + /* 153 + * FSL Book3E platforms require special gpage handling - the gpages 154 + * are reserved early in the boot process by memblock instead of via 155 + * the .dts as on IBM platforms. 156 + */ 157 + #if defined(CONFIG_HUGETLB_PAGE) && defined(CONFIG_PPC_FSL_BOOK3E) 158 + extern void __init reserve_hugetlb_gpages(void); 159 + #else 160 + static inline void reserve_hugetlb_gpages(void) 161 161 { 162 162 } 163 163 #endif
+7
arch/powerpc/include/asm/mmu-book3e.h
··· 258 258 259 259 #ifdef CONFIG_PPC64 260 260 extern unsigned long linear_map_top; 261 + 262 + /* 263 + * 64-bit booke platforms don't load the tlb in the tlb miss handler code. 264 + * HUGETLB_NEED_PRELOAD handles this - it causes huge_ptep_set_access_flags to 265 + * return 1, indicating that the tlb requires preloading. 266 + */ 267 + #define HUGETLB_NEED_PRELOAD 261 268 #endif 262 269 263 270 #endif /* !__ASSEMBLY__ */
+2
arch/powerpc/include/asm/page_64.h
··· 130 130 131 131 #ifdef CONFIG_HUGETLB_PAGE 132 132 133 + #ifdef CONFIG_PPC_MM_SLICES 133 134 #define HAVE_ARCH_HUGETLB_UNMAPPED_AREA 135 + #endif 134 136 135 137 #endif /* !CONFIG_HUGETLB_PAGE */ 136 138
+10
arch/powerpc/kernel/setup_64.c
··· 35 35 #include <linux/pci.h> 36 36 #include <linux/lockdep.h> 37 37 #include <linux/memblock.h> 38 + #include <linux/hugetlb.h> 39 + 38 40 #include <asm/io.h> 39 41 #include <asm/kdump.h> 40 42 #include <asm/prom.h> ··· 66 64 #include <asm/mmu_context.h> 67 65 #include <asm/code-patching.h> 68 66 #include <asm/kvm_ppc.h> 67 + #include <asm/hugetlb.h> 69 68 70 69 #include "setup.h" 71 70 ··· 219 216 220 217 /* Initialize the hash table or TLB handling */ 221 218 early_init_mmu(); 219 + 220 + /* 221 + * Reserve any gigantic pages requested on the command line. 222 + * memblock needs to have been initialized by the time this is 223 + * called since this will reserve memory. 224 + */ 225 + reserve_hugetlb_gpages(); 222 226 223 227 DBG(" <- early_setup()\n"); 224 228 }
+11 -10
arch/powerpc/mm/hugetlbpage-book3e.c
··· 37 37 return found; 38 38 } 39 39 40 - void book3e_hugetlb_preload(struct mm_struct *mm, unsigned long ea, pte_t pte) 40 + void book3e_hugetlb_preload(struct vm_area_struct *vma, unsigned long ea, 41 + pte_t pte) 41 42 { 42 43 unsigned long mas1, mas2; 43 44 u64 mas7_3; 44 45 unsigned long psize, tsize, shift; 45 46 unsigned long flags; 47 + struct mm_struct *mm; 46 48 47 49 #ifdef CONFIG_PPC_FSL_BOOK3E 48 - int index, lz, ncams; 49 - struct vm_area_struct *vma; 50 + int index, ncams; 50 51 #endif 51 52 52 53 if (unlikely(is_kernel_addr(ea))) 53 54 return; 54 55 56 + mm = vma->vm_mm; 57 + 55 58 #ifdef CONFIG_PPC_MM_SLICES 56 - psize = mmu_get_tsize(get_slice_psize(mm, ea)); 57 - tsize = mmu_get_psize(psize); 59 + psize = get_slice_psize(mm, ea); 60 + tsize = mmu_get_tsize(psize); 58 61 shift = mmu_psize_defs[psize].shift; 59 62 #else 60 - vma = find_vma(mm, ea); 61 - psize = vma_mmu_pagesize(vma); /* returns actual size in bytes */ 62 - asm (PPC_CNTLZL "%0,%1" : "=r" (lz) : "r" (psize)); 63 - shift = 31 - lz; 64 - tsize = 21 - lz; 63 + psize = vma_mmu_pagesize(vma); 64 + shift = __ilog2(psize); 65 + tsize = shift - 10; 65 66 #endif 66 67 67 68 /*
+73 -43
arch/powerpc/mm/hugetlbpage.c
··· 28 28 29 29 /* 30 30 * Tracks gpages after the device tree is scanned and before the 31 - * huge_boot_pages list is ready. On 64-bit implementations, this is 32 - * just used to track 16G pages and so is a single array. 32-bit 33 - * implementations may have more than one gpage size due to limitations 34 - * of the memory allocators, so we need multiple arrays 31 + * huge_boot_pages list is ready. On non-Freescale implementations, this is 32 + * just used to track 16G pages and so is a single array. FSL-based 33 + * implementations may have more than one gpage size, so we need multiple 34 + * arrays 35 35 */ 36 - #ifdef CONFIG_PPC64 37 - #define MAX_NUMBER_GPAGES 1024 38 - static u64 gpage_freearray[MAX_NUMBER_GPAGES]; 39 - static unsigned nr_gpages; 40 - #else 36 + #ifdef CONFIG_PPC_FSL_BOOK3E 41 37 #define MAX_NUMBER_GPAGES 128 42 38 struct psize_gpages { 43 39 u64 gpage_list[MAX_NUMBER_GPAGES]; 44 40 unsigned int nr_gpages; 45 41 }; 46 42 static struct psize_gpages gpage_freearray[MMU_PAGE_COUNT]; 43 + #else 44 + #define MAX_NUMBER_GPAGES 1024 45 + static u64 gpage_freearray[MAX_NUMBER_GPAGES]; 46 + static unsigned nr_gpages; 47 47 #endif 48 48 49 49 static inline int shift_to_mmu_psize(unsigned int shift) ··· 114 114 struct kmem_cache *cachep; 115 115 pte_t *new; 116 116 117 - #ifdef CONFIG_PPC64 118 - cachep = PGT_CACHE(pdshift - pshift); 119 - #else 117 + #ifdef CONFIG_PPC_FSL_BOOK3E 120 118 int i; 121 119 int num_hugepd = 1 << (pshift - pdshift); 122 120 cachep = hugepte_cache; 121 + #else 122 + cachep = PGT_CACHE(pdshift - pshift); 123 123 #endif 124 124 125 125 new = kmem_cache_zalloc(cachep, GFP_KERNEL|__GFP_REPEAT); ··· 131 131 return -ENOMEM; 132 132 133 133 spin_lock(&mm->page_table_lock); 134 - #ifdef CONFIG_PPC64 135 - if (!hugepd_none(*hpdp)) 136 - kmem_cache_free(cachep, new); 137 - else 138 - hpdp->pd = ((unsigned long)new & ~PD_HUGE) | pshift; 139 - #else 134 + #ifdef CONFIG_PPC_FSL_BOOK3E 140 135 /* 141 136 * We have multiple higher-level entries that point to the same 142 137 * actual pte location. Fill in each as we go and backtrack on error. ··· 150 155 hpdp->pd = 0; 151 156 kmem_cache_free(cachep, new); 152 157 } 158 + #else 159 + if (!hugepd_none(*hpdp)) 160 + kmem_cache_free(cachep, new); 161 + else 162 + hpdp->pd = ((unsigned long)new & ~PD_HUGE) | pshift; 153 163 #endif 154 164 spin_unlock(&mm->page_table_lock); 155 165 return 0; 156 166 } 167 + 168 + /* 169 + * These macros define how to determine which level of the page table holds 170 + * the hpdp. 171 + */ 172 + #ifdef CONFIG_PPC_FSL_BOOK3E 173 + #define HUGEPD_PGD_SHIFT PGDIR_SHIFT 174 + #define HUGEPD_PUD_SHIFT PUD_SHIFT 175 + #else 176 + #define HUGEPD_PGD_SHIFT PUD_SHIFT 177 + #define HUGEPD_PUD_SHIFT PMD_SHIFT 178 + #endif 157 179 158 180 pte_t *huge_pte_alloc(struct mm_struct *mm, unsigned long addr, unsigned long sz) 159 181 { ··· 184 172 addr &= ~(sz-1); 185 173 186 174 pg = pgd_offset(mm, addr); 187 - if (pshift >= PUD_SHIFT) { 175 + 176 + if (pshift >= HUGEPD_PGD_SHIFT) { 188 177 hpdp = (hugepd_t *)pg; 189 178 } else { 190 179 pdshift = PUD_SHIFT; 191 180 pu = pud_alloc(mm, pg, addr); 192 - if (pshift >= PMD_SHIFT) { 181 + if (pshift >= HUGEPD_PUD_SHIFT) { 193 182 hpdp = (hugepd_t *)pu; 194 183 } else { 195 184 pdshift = PMD_SHIFT; ··· 210 197 return hugepte_offset(hpdp, addr, pdshift); 211 198 } 212 199 213 - #ifdef CONFIG_PPC32 200 + #ifdef CONFIG_PPC_FSL_BOOK3E 214 201 /* Build list of addresses of gigantic pages. This function is used in early 215 202 * boot before the buddy or bootmem allocator is setup. 216 203 */ ··· 330 317 } 331 318 } 332 319 333 - #else /* PPC64 */ 320 + #else /* !PPC_FSL_BOOK3E */ 334 321 335 322 /* Build list of addresses of gigantic pages. This function is used in early 336 323 * boot before the buddy or bootmem allocator is setup. ··· 368 355 return 0; 369 356 } 370 357 371 - #ifdef CONFIG_PPC32 358 + #ifdef CONFIG_PPC_FSL_BOOK3E 372 359 #define HUGEPD_FREELIST_SIZE \ 373 360 ((PAGE_SIZE - sizeof(struct hugepd_freelist)) / sizeof(pte_t)) 374 361 ··· 428 415 unsigned long pdmask = ~((1UL << pdshift) - 1); 429 416 unsigned int num_hugepd = 1; 430 417 431 - #ifdef CONFIG_PPC64 432 - unsigned int shift = hugepd_shift(*hpdp); 433 - #else 434 - /* Note: On 32-bit the hpdp may be the first of several */ 418 + #ifdef CONFIG_PPC_FSL_BOOK3E 419 + /* Note: On fsl the hpdp may be the first of several */ 435 420 num_hugepd = (1 << (hugepd_shift(*hpdp) - pdshift)); 421 + #else 422 + unsigned int shift = hugepd_shift(*hpdp); 436 423 #endif 437 424 438 425 start &= pdmask; ··· 450 437 hpdp->pd = 0; 451 438 452 439 tlb->need_flush = 1; 453 - #ifdef CONFIG_PPC64 454 - pgtable_free_tlb(tlb, hugepte, pdshift - shift); 455 - #else 440 + 441 + #ifdef CONFIG_PPC_FSL_BOOK3E 456 442 hugepd_free(tlb, hugepte); 443 + #else 444 + pgtable_free_tlb(tlb, hugepte, pdshift - shift); 457 445 #endif 458 446 } 459 447 ··· 467 453 unsigned long start; 468 454 469 455 start = addr; 470 - pmd = pmd_offset(pud, addr); 471 456 do { 457 + pmd = pmd_offset(pud, addr); 472 458 next = pmd_addr_end(addr, end); 473 459 if (pmd_none(*pmd)) 474 460 continue; 461 + #ifdef CONFIG_PPC_FSL_BOOK3E 462 + /* 463 + * Increment next by the size of the huge mapping since 464 + * there may be more than one entry at this level for a 465 + * single hugepage, but all of them point to 466 + * the same kmem cache that holds the hugepte. 467 + */ 468 + next = addr + (1 << hugepd_shift(*(hugepd_t *)pmd)); 469 + #endif 475 470 free_hugepd_range(tlb, (hugepd_t *)pmd, PMD_SHIFT, 476 471 addr, next, floor, ceiling); 477 - } while (pmd++, addr = next, addr != end); 472 + } while (addr = next, addr != end); 478 473 479 474 start &= PUD_MASK; 480 475 if (start < floor) ··· 510 487 unsigned long start; 511 488 512 489 start = addr; 513 - pud = pud_offset(pgd, addr); 514 490 do { 491 + pud = pud_offset(pgd, addr); 515 492 next = pud_addr_end(addr, end); 516 493 if (!is_hugepd(pud)) { 517 494 if (pud_none_or_clear_bad(pud)) ··· 519 496 hugetlb_free_pmd_range(tlb, pud, addr, next, floor, 520 497 ceiling); 521 498 } else { 499 + #ifdef CONFIG_PPC_FSL_BOOK3E 500 + /* 501 + * Increment next by the size of the huge mapping since 502 + * there may be more than one entry at this level for a 503 + * single hugepage, but all of them point to 504 + * the same kmem cache that holds the hugepte. 505 + */ 506 + next = addr + (1 << hugepd_shift(*(hugepd_t *)pud)); 507 + #endif 522 508 free_hugepd_range(tlb, (hugepd_t *)pud, PUD_SHIFT, 523 509 addr, next, floor, ceiling); 524 510 } 525 - } while (pud++, addr = next, addr != end); 511 + } while (addr = next, addr != end); 526 512 527 513 start &= PGDIR_MASK; 528 514 if (start < floor) ··· 586 554 continue; 587 555 hugetlb_free_pud_range(tlb, pgd, addr, next, floor, ceiling); 588 556 } else { 589 - #ifdef CONFIG_PPC32 557 + #ifdef CONFIG_PPC_FSL_BOOK3E 590 558 /* 591 559 * Increment next by the size of the huge mapping since 592 - * on 32-bit there may be more than one entry at the pgd 593 - * level for a single hugepage, but all of them point to 594 - * the same kmem cache that holds the hugepte. 560 + * there may be more than one entry at the pgd level 561 + * for a single hugepage, but all of them point to the 562 + * same kmem cache that holds the hugepte. 595 563 */ 596 564 next = addr + (1 << hugepd_shift(*(hugepd_t *)pgd)); 597 565 #endif ··· 729 697 return 1; 730 698 } 731 699 700 + #ifdef CONFIG_PPC_MM_SLICES 732 701 unsigned long hugetlb_get_unmapped_area(struct file *file, unsigned long addr, 733 702 unsigned long len, unsigned long pgoff, 734 703 unsigned long flags) 735 704 { 736 - #ifdef CONFIG_PPC_MM_SLICES 737 705 struct hstate *hstate = hstate_file(file); 738 706 int mmu_psize = shift_to_mmu_psize(huge_page_shift(hstate)); 739 707 740 708 return slice_get_unmapped_area(addr, len, flags, mmu_psize, 1, 0); 741 - #else 742 - return get_unmapped_area(file, addr, len, pgoff, flags); 743 - #endif 744 709 } 710 + #endif 745 711 746 712 unsigned long vma_mmu_pagesize(struct vm_area_struct *vma) 747 713 { ··· 813 783 } 814 784 __setup("hugepagesz=", hugepage_setup_sz); 815 785 816 - #ifdef CONFIG_FSL_BOOKE 786 + #ifdef CONFIG_PPC_FSL_BOOK3E 817 787 struct kmem_cache *hugepte_cache; 818 788 static int __init hugetlbpage_init(void) 819 789 {
+1 -1
arch/powerpc/mm/mem.c
··· 553 553 #if (defined(CONFIG_PPC_BOOK3E_64) || defined(CONFIG_PPC_FSL_BOOK3E)) \ 554 554 && defined(CONFIG_HUGETLB_PAGE) 555 555 if (is_vm_hugetlb_page(vma)) 556 - book3e_hugetlb_preload(vma->vm_mm, address, *ptep); 556 + book3e_hugetlb_preload(vma, address, *ptep); 557 557 #endif 558 558 } 559 559
+15 -21
arch/powerpc/mm/tlb_low_64e.S
··· 94 94 95 95 srdi r15,r16,60 /* get region */ 96 96 rldicl. r10,r16,64-PGTABLE_EADDR_SIZE,PGTABLE_EADDR_SIZE+4 97 - bne- dtlb_miss_fault_bolted 97 + bne- dtlb_miss_fault_bolted /* Bail if fault addr is invalid */ 98 98 99 99 rlwinm r10,r11,32-19,27,27 100 100 rlwimi r10,r11,32-16,19,19 101 - cmpwi r15,0 101 + cmpwi r15,0 /* user vs kernel check */ 102 102 ori r10,r10,_PAGE_PRESENT 103 103 oris r11,r10,_PAGE_ACCESSED@h 104 104 ··· 120 120 rldicl r15,r16,64-PGDIR_SHIFT+3,64-PGD_INDEX_SIZE-3 121 121 cmpldi cr0,r14,0 122 122 clrrdi r15,r15,3 123 - beq tlb_miss_fault_bolted 123 + beq tlb_miss_fault_bolted /* No PGDIR, bail */ 124 124 125 125 BEGIN_MMU_FTR_SECTION 126 126 /* Set the TLB reservation and search for existing entry. Then load 127 127 * the entry. 128 128 */ 129 129 PPC_TLBSRX_DOT(0,r16) 130 - ldx r14,r14,r15 131 - beq normal_tlb_miss_done 130 + ldx r14,r14,r15 /* grab pgd entry */ 131 + beq normal_tlb_miss_done /* tlb exists already, bail */ 132 132 MMU_FTR_SECTION_ELSE 133 - ldx r14,r14,r15 133 + ldx r14,r14,r15 /* grab pgd entry */ 134 134 ALT_MMU_FTR_SECTION_END_IFSET(MMU_FTR_USE_TLBRSRV) 135 135 136 136 #ifndef CONFIG_PPC_64K_PAGES 137 137 rldicl r15,r16,64-PUD_SHIFT+3,64-PUD_INDEX_SIZE-3 138 138 clrrdi r15,r15,3 139 - 140 - cmpldi cr0,r14,0 141 - beq tlb_miss_fault_bolted 142 - 143 - ldx r14,r14,r15 139 + cmpdi cr0,r14,0 140 + bge tlb_miss_fault_bolted /* Bad pgd entry or hugepage; bail */ 141 + ldx r14,r14,r15 /* grab pud entry */ 144 142 #endif /* CONFIG_PPC_64K_PAGES */ 145 143 146 144 rldicl r15,r16,64-PMD_SHIFT+3,64-PMD_INDEX_SIZE-3 147 145 clrrdi r15,r15,3 148 - 149 - cmpldi cr0,r14,0 150 - beq tlb_miss_fault_bolted 151 - 152 - ldx r14,r14,r15 146 + cmpdi cr0,r14,0 147 + bge tlb_miss_fault_bolted 148 + ldx r14,r14,r15 /* Grab pmd entry */ 153 149 154 150 rldicl r15,r16,64-PAGE_SHIFT+3,64-PTE_INDEX_SIZE-3 155 151 clrrdi r15,r15,3 156 - 157 - cmpldi cr0,r14,0 158 - beq tlb_miss_fault_bolted 159 - 160 - ldx r14,r14,r15 152 + cmpdi cr0,r14,0 153 + bge tlb_miss_fault_bolted 154 + ldx r14,r14,r15 /* Grab PTE, normal (!huge) page */ 161 155 162 156 /* Check if required permissions are met */ 163 157 andc. r15,r11,r14
+1 -1
arch/powerpc/mm/tlb_nohash.c
··· 52 52 * indirect page table entries. 53 53 */ 54 54 #ifdef CONFIG_PPC_BOOK3E_MMU 55 - #ifdef CONFIG_FSL_BOOKE 55 + #ifdef CONFIG_PPC_FSL_BOOK3E 56 56 struct mmu_psize_def mmu_psize_defs[MMU_PAGE_COUNT] = { 57 57 [MMU_PAGE_4K] = { 58 58 .shift = 12,
+2 -2
arch/powerpc/platforms/Kconfig.cputype
··· 174 174 config FSL_BOOKE 175 175 bool 176 176 depends on (E200 || E500) && PPC32 177 - select SYS_SUPPORTS_HUGETLBFS if PHYS_64BIT 178 177 default y 179 178 180 179 # this is for common code between PPC32 & PPC64 FSL BOOKE ··· 181 182 bool 182 183 select FSL_EMB_PERFMON 183 184 select PPC_SMP_MUXED_IPI 185 + select SYS_SUPPORTS_HUGETLBFS if PHYS_64BIT || PPC64 184 186 default y if FSL_BOOKE 185 187 186 188 config PTE_64BIT ··· 309 309 310 310 config PPC_MM_SLICES 311 311 bool 312 - default y if (PPC64 && HUGETLB_PAGE) || (PPC_STD_MMU_64 && PPC_64K_PAGES) 312 + default y if (!PPC_FSL_BOOK3E && PPC64 && HUGETLB_PAGE) || (PPC_STD_MMU_64 && PPC_64K_PAGES) 313 313 default n 314 314 315 315 config VIRT_CPU_ACCOUNTING