ACK/cmnt: [PATCH][Zesty] UBUNTU: SAUCE: powerpc: Invalidate ERAT on powersave wakeup for POWER9

Stefan Bader stefan.bader at canonical.com
Mon Jul 10 10:13:35 UTC 2017


On 27.06.2017 18:45, Breno Leitao wrote:
> From: Michael Neuling <mikey at neuling.org>
> 
> BugLink: https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1700521
> 
> On POWER9 the ERAT may be incorrect on wakeup from some stop states
> that lose state. This causes random segvs and illegal instructions
> when these stop states are enabled.
> 
> This patch invalidates the ERAT on wakeup on POWER9 to prevent this
> from causing a problem.
> 
> Signed-off-by: Michael Neuling <mikey at neuling.org>
> Signed-off-by: Benjamin Herrenschmidt <benh at kernel.crashing.org>
> (backported from: https://patchwork.ozlabs.org/patch/780365/)
> Signed-off-by: Breno Leitao <leitao at debian.org>

Acked-by: Stefan Bader <stefan.bader at canonical.com>

> ---

This seems to be now upstream as ba6d334ac230065243a92bb7cb3fd6a5f6a7f8ac
(not a cherry-pick but should be not too hard to backport as the failing
hunk is comment only and the other just fuzz).

-Stefan

>  arch/powerpc/kernel/exceptions-64s.S | 4 +++-
>  arch/powerpc/kernel/idle_book3s.S    | 7 +++++++
>  2 files changed, 10 insertions(+), 1 deletion(-)
> 
> diff --git a/arch/powerpc/kernel/exceptions-64s.S b/arch/powerpc/kernel/exceptions-64s.S
> index f2a18432253c..3ee66dd600fc 100644
> --- a/arch/powerpc/kernel/exceptions-64s.S
> +++ b/arch/powerpc/kernel/exceptions-64s.S
> @@ -99,7 +99,9 @@ EXC_VIRT_NONE(0x4000, 0x4100)
>  #ifdef CONFIG_PPC_P7_NAP
>  	/*
>  	 * If running native on arch 2.06 or later, check if we are waking up
> -	 * from nap/sleep/winkle, and branch to idle handler.
> +	 * from nap/sleep/winkle, and branch to idle handler. This tests
> +	 * SRR1 bits 46:47. A non-0 value indicates that we are coming from
> +	 * a power saving state.
>  	 */
>  #define IDLETEST(n)							\
>  	BEGIN_FTR_SECTION ;						\
> diff --git a/arch/powerpc/kernel/idle_book3s.S b/arch/powerpc/kernel/idle_book3s.S
> index 67ba6a66fed5..fb762ee5ac6f 100644
> --- a/arch/powerpc/kernel/idle_book3s.S
> +++ b/arch/powerpc/kernel/idle_book3s.S
> @@ -433,6 +433,13 @@ FTR_SECTION_ELSE_NESTED(70)
>  	ld	r2, PACATOC(r13)
>  ALT_FTR_SECTION_END_NESTED_IFSET(CPU_FTR_POWER9_DD1, 70)
>  	/*
> +	 * Workaround for POWER9, if we lost resources, the ERAT
> +	 * might have been mixed up and needs flushing.
> +	 */
> +	blt	cr3,1f
> +	PPC_INVALIDATE_ERAT
> +1:
> +	/*
>  	 * POWER ISA 3. Use PSSCR to determine if we
>  	 * are waking up from deep idle state
>  	 */
> 


-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: OpenPGP digital signature
URL: <https://lists.ubuntu.com/archives/kernel-team/attachments/20170710/5d872e3d/attachment.sig>


More information about the kernel-team mailing list