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

Commit 061ec959 authored by Joakim Tjernlund's avatar Joakim Tjernlund Committed by Benjamin Herrenschmidt
Browse files

powerpc/8xx: Fix user space TLB walk in dcbX fixup



The newly added fixup for buggy dcbX insn's has
a bug that always trigger a kernel TLB walk so a user space
dcbX insn will cause a Kernel Machine Check if it hits DTLB error.

Signed-off-by: default avatarJoakim Tjernlund <Joakim.Tjernlund@transmode.se>
Signed-off-by: default avatarBenjamin Herrenschmidt <benh@kernel.crashing.org>
parent 3e7b4843
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -542,11 +542,11 @@ DARFixed:/* Return from dcbx instruction bug workaround, r10 holds value of DAR
FixupDAR:/* Entry point for dcbx workaround. */
	/* fetch instruction from memory. */
	mfspr	r10, SPRN_SRR0
	andis.	r11, r10, 0x8000	/* Address >= 0x80000000 */
	DO_8xx_CPU6(0x3780, r3)
	mtspr	SPRN_MD_EPN, r10
	mfspr	r11, SPRN_M_TWB	/* Get level 1 table entry address */
	cmplwi	cr0, r11, 0x0800
	blt-	3f		/* Branch if user space */
	beq-	3f		/* Branch if user space */
	lis	r11, (swapper_pg_dir-PAGE_OFFSET)@h
	ori	r11, r11, (swapper_pg_dir-PAGE_OFFSET)@l
	rlwimi	r11, r10, 32-20, 0xffc /* r11 = r11&~0xffc|(r10>>20)&0xffc */