diff options
author | Benjamin Herrenschmidt <benh@kernel.crashing.org> | 2010-04-27 17:22:55 -0400 |
---|---|---|
committer | Benjamin Herrenschmidt <benh@kernel.crashing.org> | 2010-05-06 02:49:26 -0400 |
commit | 75c1d539ea13117cbe95e2c343e52af67d735145 (patch) | |
tree | f45295016163b1e1914dc1f48c307e64215f5f2c /arch/powerpc/mm | |
parent | aef40e87d866355ffd279ab21021de733242d0d5 (diff) |
powerpc: Fix CONFIG_DEBUG_PAGEALLOC on 603/e300
So we tried to speed things up a bit using flush_hash_pages() directly
but that falls over on 603 of course meaning we fail to flush the TLB
properly and we may even end up having it corrupt memory randomly by
accessing a hash table that doesn't exist.
This removes the "optimization" by always going through flush_tlb_page()
for now at least.
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Diffstat (limited to 'arch/powerpc/mm')
-rw-r--r-- | arch/powerpc/mm/pgtable_32.c | 4 |
1 files changed, 0 insertions, 4 deletions
diff --git a/arch/powerpc/mm/pgtable_32.c b/arch/powerpc/mm/pgtable_32.c index 767b0cf17d33..9fc02dc72ce9 100644 --- a/arch/powerpc/mm/pgtable_32.c +++ b/arch/powerpc/mm/pgtable_32.c | |||
@@ -393,11 +393,7 @@ static int __change_page_attr(struct page *page, pgprot_t prot) | |||
393 | return -EINVAL; | 393 | return -EINVAL; |
394 | __set_pte_at(&init_mm, address, kpte, mk_pte(page, prot), 0); | 394 | __set_pte_at(&init_mm, address, kpte, mk_pte(page, prot), 0); |
395 | wmb(); | 395 | wmb(); |
396 | #ifdef CONFIG_PPC_STD_MMU | ||
397 | flush_hash_pages(0, address, pmd_val(*kpmd), 1); | ||
398 | #else | ||
399 | flush_tlb_page(NULL, address); | 396 | flush_tlb_page(NULL, address); |
400 | #endif | ||
401 | pte_unmap(kpte); | 397 | pte_unmap(kpte); |
402 | 398 | ||
403 | return 0; | 399 | return 0; |