diff options
Diffstat (limited to 'arch/powerpc/mm')
-rw-r--r-- | arch/powerpc/mm/hash_utils_64.c | 3 | ||||
-rw-r--r-- | arch/powerpc/mm/init_64.c | 2 | ||||
-rw-r--r-- | arch/powerpc/mm/slb.c | 3 |
3 files changed, 5 insertions, 3 deletions
diff --git a/arch/powerpc/mm/hash_utils_64.c b/arch/powerpc/mm/hash_utils_64.c index 611ad08..c78dc91 100644 --- a/arch/powerpc/mm/hash_utils_64.c +++ b/arch/powerpc/mm/hash_utils_64.c @@ -209,9 +209,10 @@ static int __init htab_dt_scan_seg_sizes(unsigned long node, if (prop[0] == 40) { DBG("1T segment support detected\n"); cur_cpu_spec->cpu_features |= CPU_FTR_1T_SEGMENT; + return 1; } - return 1; } + cur_cpu_spec->cpu_features &= ~CPU_FTR_NO_SLBIE_B; return 0; } diff --git a/arch/powerpc/mm/init_64.c b/arch/powerpc/mm/init_64.c index e91da67..d9c82d3 100644 --- a/arch/powerpc/mm/init_64.c +++ b/arch/powerpc/mm/init_64.c @@ -240,7 +240,7 @@ int __meminit vmemmap_populate(struct page *start_page, return -ENOMEM; printk(KERN_WARNING "vmemmap %08lx allocated at %p, " - "physical %p.\n", start, p, __pa(p)); + "physical %08lx.\n", start, p, __pa(p)); mapped = htab_bolt_mapping(start, start + page_size, __pa(p), mode_rw, mmu_linear_psize, diff --git a/arch/powerpc/mm/slb.c b/arch/powerpc/mm/slb.c index 6c164ce..bbd2c51 100644 --- a/arch/powerpc/mm/slb.c +++ b/arch/powerpc/mm/slb.c @@ -157,7 +157,8 @@ void switch_slb(struct task_struct *tsk, struct mm_struct *mm) unsigned long stack = KSTK_ESP(tsk); unsigned long unmapped_base; - if (offset <= SLB_CACHE_ENTRIES) { + if (!cpu_has_feature(CPU_FTR_NO_SLBIE_B) && + offset <= SLB_CACHE_ENTRIES) { int i; asm volatile("isync" : : : "memory"); for (i = 0; i < offset; i++) { |