diff options
Diffstat (limited to 'arch/powerpc/mm/hash_native_64.c')
-rw-r--r-- | arch/powerpc/mm/hash_native_64.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/arch/powerpc/mm/hash_native_64.c b/arch/powerpc/mm/hash_native_64.c index d96bcfe4c6f6..33654d1b1b43 100644 --- a/arch/powerpc/mm/hash_native_64.c +++ b/arch/powerpc/mm/hash_native_64.c | |||
@@ -403,12 +403,17 @@ static void native_hpte_clear(void) | |||
403 | */ | 403 | */ |
404 | hpte_v = hptep->v; | 404 | hpte_v = hptep->v; |
405 | 405 | ||
406 | /* | ||
407 | * Call __tlbie() here rather than tlbie() since we | ||
408 | * already hold the native_tlbie_lock. | ||
409 | */ | ||
406 | if (hpte_v & HPTE_V_VALID) { | 410 | if (hpte_v & HPTE_V_VALID) { |
407 | hptep->v = 0; | 411 | hptep->v = 0; |
408 | tlbie(slot2va(hpte_v, slot), MMU_PAGE_4K, 0); | 412 | __tlbie(slot2va(hpte_v, slot), MMU_PAGE_4K); |
409 | } | 413 | } |
410 | } | 414 | } |
411 | 415 | ||
416 | asm volatile("eieio; tlbsync; ptesync":::"memory"); | ||
412 | spin_unlock(&native_tlbie_lock); | 417 | spin_unlock(&native_tlbie_lock); |
413 | local_irq_restore(flags); | 418 | local_irq_restore(flags); |
414 | } | 419 | } |