Răsfoiți Sursa

powerpc/mm/radix: Isolate hash table function from pseries guest code

Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Aneesh Kumar K.V 9 ani în urmă
părinte
comite
d8c476eeb6

+ 11 - 3
arch/powerpc/platforms/pseries/lpar.c

@@ -89,18 +89,21 @@ void vpa_init(int cpu)
 		       "%lx failed with %ld\n", cpu, hwcpu, addr, ret);
 		       "%lx failed with %ld\n", cpu, hwcpu, addr, ret);
 		return;
 		return;
 	}
 	}
+
+#ifdef CONFIG_PPC_STD_MMU_64
 	/*
 	/*
 	 * PAPR says this feature is SLB-Buffer but firmware never
 	 * PAPR says this feature is SLB-Buffer but firmware never
 	 * reports that.  All SPLPAR support SLB shadow buffer.
 	 * reports that.  All SPLPAR support SLB shadow buffer.
 	 */
 	 */
-	addr = __pa(paca[cpu].slb_shadow_ptr);
-	if (firmware_has_feature(FW_FEATURE_SPLPAR)) {
+	if (!radix_enabled() && firmware_has_feature(FW_FEATURE_SPLPAR)) {
+		addr = __pa(paca[cpu].slb_shadow_ptr);
 		ret = register_slb_shadow(hwcpu, addr);
 		ret = register_slb_shadow(hwcpu, addr);
 		if (ret)
 		if (ret)
 			pr_err("WARNING: SLB shadow buffer registration for "
 			pr_err("WARNING: SLB shadow buffer registration for "
 			       "cpu %d (hw %d) of area %lx failed with %ld\n",
 			       "cpu %d (hw %d) of area %lx failed with %ld\n",
 			       cpu, hwcpu, addr, ret);
 			       cpu, hwcpu, addr, ret);
 	}
 	}
+#endif /* CONFIG_PPC_STD_MMU_64 */
 
 
 	/*
 	/*
 	 * Register dispatch trace log, if one has been allocated.
 	 * Register dispatch trace log, if one has been allocated.
@@ -123,6 +126,8 @@ void vpa_init(int cpu)
 	}
 	}
 }
 }
 
 
+#ifdef CONFIG_PPC_STD_MMU_64
+
 static long pSeries_lpar_hpte_insert(unsigned long hpte_group,
 static long pSeries_lpar_hpte_insert(unsigned long hpte_group,
 				     unsigned long vpn, unsigned long pa,
 				     unsigned long vpn, unsigned long pa,
 				     unsigned long rflags, unsigned long vflags,
 				     unsigned long rflags, unsigned long vflags,
@@ -655,6 +660,8 @@ static void pSeries_set_page_state(struct page *page, int order,
 
 
 void arch_free_page(struct page *page, int order)
 void arch_free_page(struct page *page, int order)
 {
 {
+	if (radix_enabled())
+		return;
 	if (!cmo_free_hint_flag || !firmware_has_feature(FW_FEATURE_CMO))
 	if (!cmo_free_hint_flag || !firmware_has_feature(FW_FEATURE_CMO))
 		return;
 		return;
 
 
@@ -662,7 +669,8 @@ void arch_free_page(struct page *page, int order)
 }
 }
 EXPORT_SYMBOL(arch_free_page);
 EXPORT_SYMBOL(arch_free_page);
 
 
-#endif
+#endif /* CONFIG_PPC_SMLPAR */
+#endif /* CONFIG_PPC_STD_MMU_64 */
 
 
 #ifdef CONFIG_TRACEPOINTS
 #ifdef CONFIG_TRACEPOINTS
 #ifdef HAVE_JUMP_LABEL
 #ifdef HAVE_JUMP_LABEL

+ 2 - 1
arch/powerpc/platforms/pseries/lparcfg.c

@@ -484,8 +484,9 @@ static int pseries_lparcfg_data(struct seq_file *m, void *v)
 	seq_printf(m, "shared_processor_mode=%d\n",
 	seq_printf(m, "shared_processor_mode=%d\n",
 		   lppaca_shared_proc(get_lppaca()));
 		   lppaca_shared_proc(get_lppaca()));
 
 
+#ifdef CONFIG_PPC_STD_MMU_64
 	seq_printf(m, "slb_size=%d\n", mmu_slb_size);
 	seq_printf(m, "slb_size=%d\n", mmu_slb_size);
-
+#endif
 	parse_em_data(m);
 	parse_em_data(m);
 
 
 	return 0;
 	return 0;