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

Commit e5e774d8 authored by Kumar Gala's avatar Kumar Gala
Browse files

powerpc/fsl-booke: Fix problem with _tlbil_va being interrupted



An example calling sequence which we did see:

copy_user_highpage -> kmap_atomic -> flush_tlb_page -> _tlbil_va

We got interrupted after setting up the MAS registers before the
tlbwe and the interrupt handler that caused the interrupt also did
a kmap_atomic (ide code) and thus on returning from the interrupt
the MAS registers no longer contained the proper values.

Since we dont save/restore MAS registers for normal interrupts we
need to disable interrupts in _tlbil_va to ensure atomicity.

Signed-off-by: default avatarKumar Gala <galak@kernel.crashing.org>
parent ab44f462
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -479,6 +479,8 @@ _GLOBAL(_tlbil_pid)
 * (no broadcast)
 */
_GLOBAL(_tlbil_va)
	mfmsr	r10
	wrteei	0
	slwi	r4,r4,16
	mtspr	SPRN_MAS6,r4		/* assume AS=0 for now */
	tlbsx	0,r3
@@ -490,6 +492,7 @@ _GLOBAL(_tlbil_va)
	tlbwe
	msync
	isync
	wrtee	r10
	blr
#endif /* CONFIG_FSL_BOOKE */