aboutsummaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorPaul Mackerras <paulus@samba.org>2008-03-24 02:41:22 -0400
committerPaul Mackerras <paulus@samba.org>2008-03-24 02:41:22 -0400
commitcfe666b145cecffe784d98e60ffe201a5dc57ac3 (patch)
tree68ee9f4fe54810b82b8b4ef5f8f0f164c03ae988 /arch
parentd2532dd20a126020de407c1c2476a75b53fce7ac (diff)
[POWERPC] Don't use 64k pages for ioremap on pSeries
On pSeries, the hypervisor doesn't let us map in the eHEA ethernet adapter using 64k pages, and thus the ehea driver will fail if 64k pages are configured. This works around the problem by always using 4k pages for ioremap on pSeries (but not on other platforms). A better fix would be to check whether the partition could ever have an eHEA adapter, and only force 4k pages if it could, but this will do for 2.6.25. This is based on an earlier patch by Tony Breeds. Signed-off-by: Paul Mackerras <paulus@samba.org>
Diffstat (limited to 'arch')
-rw-r--r--arch/powerpc/mm/hash_utils_64.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/arch/powerpc/mm/hash_utils_64.c b/arch/powerpc/mm/hash_utils_64.c
index 590f1f67c874..a83dfa3cf40c 100644
--- a/arch/powerpc/mm/hash_utils_64.c
+++ b/arch/powerpc/mm/hash_utils_64.c
@@ -351,9 +351,14 @@ static void __init htab_init_page_sizes(void)
351 mmu_vmalloc_psize = MMU_PAGE_64K; 351 mmu_vmalloc_psize = MMU_PAGE_64K;
352 if (mmu_linear_psize == MMU_PAGE_4K) 352 if (mmu_linear_psize == MMU_PAGE_4K)
353 mmu_linear_psize = MMU_PAGE_64K; 353 mmu_linear_psize = MMU_PAGE_64K;
354 if (cpu_has_feature(CPU_FTR_CI_LARGE_PAGE)) 354 if (cpu_has_feature(CPU_FTR_CI_LARGE_PAGE)) {
355 mmu_io_psize = MMU_PAGE_64K; 355 /*
356 else 356 * Don't use 64k pages for ioremap on pSeries, since
357 * that would stop us accessing the HEA ethernet.
358 */
359 if (!machine_is(pseries))
360 mmu_io_psize = MMU_PAGE_64K;
361 } else
357 mmu_ci_restrictions = 1; 362 mmu_ci_restrictions = 1;
358 } 363 }
359#endif /* CONFIG_PPC_64K_PAGES */ 364#endif /* CONFIG_PPC_64K_PAGES */