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

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

powerpc/fsl-booke: Fixup 64-bit PTE reading for SMP support



We need to create a false data dependency to ensure the loads of
the pte are done in the right order.

Signed-off-by: default avatarKumar Gala <galak@kernel.crashing.org>
parent 33a7f122
Loading
Loading
Loading
Loading
+21 −5
Original line number Diff line number Diff line
@@ -579,11 +579,17 @@ interrupt_base:

	FIND_PTE
	andc.	r13,r13,r11		/* Check permission */
	bne	2f			/* Bail if permission mismach */

#ifdef CONFIG_PTE_64BIT
	lwz	r13, 0(r12)
#ifdef CONFIG_SMP
	subf	r10,r11,r12		/* create false data dep */
	lwzx	r13,r11,r10		/* Get upper pte bits */
#else
	lwz	r13,0(r12)		/* Get upper pte bits */
#endif
#endif

	bne	2f			/* Bail if permission/valid mismach */

	/* Jump to common tlb load */
	b	finish_tlb_load
@@ -640,6 +646,16 @@ interrupt_base:

	FIND_PTE
	andc.	r13,r13,r11		/* Check permission */

#ifdef CONFIG_PTE_64BIT
#ifdef CONFIG_SMP
	subf	r10,r11,r12		/* create false data dep */
	lwzx	r13,r11,r10		/* Get upper pte bits */
#else
	lwz	r13,0(r12)		/* Get upper pte bits */
#endif
#endif

	bne	2f			/* Bail if permission mismach */

#ifdef CONFIG_PTE_64BIT
@@ -702,7 +718,7 @@ interrupt_base:
/*
 * Both the instruction and data TLB miss get to this
 * point to load the TLB.
 *	r10 - EA of fault
 *	r10 - available to use
 *	r11 - TLB (info from Linux PTE)
 *	r12 - available to use
 *	r13 - upper bits of PTE (if PTE_64BIT) or available to use