diff options
author | Benjamin Herrenschmidt <benh@kernel.crashing.org> | 2007-02-15 02:29:32 -0500 |
---|---|---|
committer | Paul Mackerras <paulus@samba.org> | 2007-02-15 22:00:20 -0500 |
commit | a32525449b30dfbae804f6b05cde041f35f5a811 (patch) | |
tree | 4681e5f9c2a51121c8902ed9d0360a7d9b6b4c2a /arch/powerpc/mm | |
parent | 41806ef4bfacbe5c4e520d8da2fcedcda335c922 (diff) |
[POWERPC] Fix bug with early ioremap and 64k pages
The code for bolting hash entries for ioremap done before proper
mm initialization has a grown a bug when using 64K pages on a
machine where non-cacheable mappings are demoted to 4K HW pages.
The wrong page size index is being passed to the hash table mapping
functions causing a crash at boot on some pSeries machines using
bare metal linux. This fixes it.
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Signed-off-by: Paul Mackerras <paulus@samba.org>
Diffstat (limited to 'arch/powerpc/mm')
-rw-r--r-- | arch/powerpc/mm/pgtable_64.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/arch/powerpc/mm/pgtable_64.c b/arch/powerpc/mm/pgtable_64.c index 16e4ee1c2318..1d443407423c 100644 --- a/arch/powerpc/mm/pgtable_64.c +++ b/arch/powerpc/mm/pgtable_64.c | |||
@@ -103,7 +103,7 @@ static int map_io_page(unsigned long ea, unsigned long pa, int flags) | |||
103 | * | 103 | * |
104 | */ | 104 | */ |
105 | if (htab_bolt_mapping(ea, ea + PAGE_SIZE, pa, flags, | 105 | if (htab_bolt_mapping(ea, ea + PAGE_SIZE, pa, flags, |
106 | mmu_virtual_psize)) { | 106 | mmu_io_psize)) { |
107 | printk(KERN_ERR "Failed to do bolted mapping IO " | 107 | printk(KERN_ERR "Failed to do bolted mapping IO " |
108 | "memory at %016lx !\n", pa); | 108 | "memory at %016lx !\n", pa); |
109 | return -ENOMEM; | 109 | return -ENOMEM; |