diff options
Diffstat (limited to 'arch/ppc/mm/pgtable.c')
| -rw-r--r-- | arch/ppc/mm/pgtable.c | 4 |
1 files changed, 1 insertions, 3 deletions
diff --git a/arch/ppc/mm/pgtable.c b/arch/ppc/mm/pgtable.c index 43505b1fc5d8..6ea9185fd120 100644 --- a/arch/ppc/mm/pgtable.c +++ b/arch/ppc/mm/pgtable.c | |||
| @@ -280,18 +280,16 @@ map_page(unsigned long va, phys_addr_t pa, int flags) | |||
| 280 | pte_t *pg; | 280 | pte_t *pg; |
| 281 | int err = -ENOMEM; | 281 | int err = -ENOMEM; |
| 282 | 282 | ||
| 283 | spin_lock(&init_mm.page_table_lock); | ||
| 284 | /* Use upper 10 bits of VA to index the first level map */ | 283 | /* Use upper 10 bits of VA to index the first level map */ |
| 285 | pd = pmd_offset(pgd_offset_k(va), va); | 284 | pd = pmd_offset(pgd_offset_k(va), va); |
| 286 | /* Use middle 10 bits of VA to index the second-level map */ | 285 | /* Use middle 10 bits of VA to index the second-level map */ |
| 287 | pg = pte_alloc_kernel(&init_mm, pd, va); | 286 | pg = pte_alloc_kernel(pd, va); |
| 288 | if (pg != 0) { | 287 | if (pg != 0) { |
| 289 | err = 0; | 288 | err = 0; |
| 290 | set_pte_at(&init_mm, va, pg, pfn_pte(pa >> PAGE_SHIFT, __pgprot(flags))); | 289 | set_pte_at(&init_mm, va, pg, pfn_pte(pa >> PAGE_SHIFT, __pgprot(flags))); |
| 291 | if (mem_init_done) | 290 | if (mem_init_done) |
| 292 | flush_HPTE(0, va, pmd_val(*pd)); | 291 | flush_HPTE(0, va, pmd_val(*pd)); |
| 293 | } | 292 | } |
| 294 | spin_unlock(&init_mm.page_table_lock); | ||
| 295 | return err; | 293 | return err; |
| 296 | } | 294 | } |
| 297 | 295 | ||
