aboutsummaryrefslogtreecommitdiffstats
path: root/arch/powerpc/mm/tlb_nohash.c
diff options
context:
space:
mode:
authorDave Kleikamp <shaggy@linux.vnet.ibm.com>2011-07-04 14:38:03 -0400
committerJosh Boyer <jwboyer@linux.vnet.ibm.com>2011-07-12 09:21:55 -0400
commit91b191c71eae79c0e652c52a968d06cd96b539c5 (patch)
treef1f0aeccbba77d3a89dfbc951578570e35debe7f /arch/powerpc/mm/tlb_nohash.c
parent112d1fe9f7715db423ffeec5ac1beccff6093dc4 (diff)
powerpc/44x: don't use tlbivax on AMP systems
Since other OS's may be running on the other cores don't use tlbivax Signed-off-by: Dave Kleikamp <shaggy@linux.vnet.ibm.com> Signed-off-by: Tony Breeds <tony@bakeyournoodle.com> Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org> Cc: Josh Boyer <jwboyer@linux.vnet.ibm.com> Cc: linuxppc-dev@lists.ozlabs.org Signed-off-by: Josh Boyer <jwboyer@linux.vnet.ibm.com>
Diffstat (limited to 'arch/powerpc/mm/tlb_nohash.c')
-rw-r--r--arch/powerpc/mm/tlb_nohash.c19
1 files changed, 19 insertions, 0 deletions
diff --git a/arch/powerpc/mm/tlb_nohash.c b/arch/powerpc/mm/tlb_nohash.c
index 3722185d1865..7355211b93b3 100644
--- a/arch/powerpc/mm/tlb_nohash.c
+++ b/arch/powerpc/mm/tlb_nohash.c
@@ -35,6 +35,7 @@
35#include <linux/preempt.h> 35#include <linux/preempt.h>
36#include <linux/spinlock.h> 36#include <linux/spinlock.h>
37#include <linux/memblock.h> 37#include <linux/memblock.h>
38#include <linux/of_fdt.h>
38 39
39#include <asm/tlbflush.h> 40#include <asm/tlbflush.h>
40#include <asm/tlb.h> 41#include <asm/tlb.h>
@@ -266,6 +267,17 @@ EXPORT_SYMBOL(flush_tlb_page);
266 267
267#endif /* CONFIG_SMP */ 268#endif /* CONFIG_SMP */
268 269
270#ifdef CONFIG_PPC_47x
271void __init early_init_mmu_47x(void)
272{
273#ifdef CONFIG_SMP
274 unsigned long root = of_get_flat_dt_root();
275 if (of_get_flat_dt_prop(root, "cooperative-partition", NULL))
276 mmu_clear_feature(MMU_FTR_USE_TLBIVAX_BCAST);
277#endif /* CONFIG_SMP */
278}
279#endif /* CONFIG_PPC_47x */
280
269/* 281/*
270 * Flush kernel TLB entries in the given range 282 * Flush kernel TLB entries in the given range
271 */ 283 */
@@ -593,4 +605,11 @@ void setup_initial_memory_limit(phys_addr_t first_memblock_base,
593 /* Finally limit subsequent allocations */ 605 /* Finally limit subsequent allocations */
594 memblock_set_current_limit(first_memblock_base + ppc64_rma_size); 606 memblock_set_current_limit(first_memblock_base + ppc64_rma_size);
595} 607}
608#else /* ! CONFIG_PPC64 */
609void __init early_init_mmu(void)
610{
611#ifdef CONFIG_PPC_47x
612 early_init_mmu_47x();
613#endif
614}
596#endif /* CONFIG_PPC64 */ 615#endif /* CONFIG_PPC64 */