Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 47f78a49 authored by R Sharada's avatar R Sharada Committed by Paul Mackerras
Browse files

[PATCH] powerpc64: fix spinlock recursion in native_hpte_clear



native_hpte_clear has a spinlock recursion problem with the native_tlbie_lock
being called twice, once in native_hpte_clear() and once within tlbie().
Fix the problem by changing the call to tlbie() in native_hpte_clear() to
__tlbie(). It still supports only 4k pages for now.

Signed-off-by: default avatarR Sharada <sharada@in.ibm.com>
Signed-off-by: default avatarPaul Mackerras <paulus@samba.org>
parent 611ae59c
Loading
Loading
Loading
Loading
+6 −1
Original line number Diff line number Diff line
@@ -403,12 +403,17 @@ static void native_hpte_clear(void)
		 */
		hpte_v = hptep->v;

		/*
		 * Call __tlbie() here rather than tlbie() since we
		 * already hold the native_tlbie_lock.
		 */
		if (hpte_v & HPTE_V_VALID) {
			hptep->v = 0;
			tlbie(slot2va(hpte_v, slot), MMU_PAGE_4K, 0);
			__tlbie(slot2va(hpte_v, slot), MMU_PAGE_4K);
		}
	}

	asm volatile("eieio; tlbsync; ptesync":::"memory");
	spin_unlock(&native_tlbie_lock);
	local_irq_restore(flags);
}