Re: [PATCH 2/3] powernv:idle: Decouple TB restore & Per-core SPRs restore

From: Michael Neuling
Date: Thu Apr 13 2017 - 02:55:58 EST


On Wed, 2017-04-12 at 17:16 +0530, Gautham R. Shenoy wrote:
> From: "Gautham R. Shenoy" <ego@xxxxxxxxxxxxxxxxxx>
>
> The idle-exit code assumes that if Timebase is not lost, then neither
> are the per-core hypervisor resources lost.

Double negative! How about:

The idle-exit code assumes that if the timebase is restored, then the
per-core hypervisor resources are also restored.

> This was true on POWER8
> where fast-sleep lost only TB but not per-core resources, and winkle
> lost both.
>
> This assumption is not true for POWER9 however, since there can be
> states which do not lose timebase but can lose per-core SPRs.
>
> Hence check if we need to restore the per-core hypervisor state even
> if timebase is not lost.

I think I understand what you're doing, just seems awkwardly worded.

Is this actually what the patch is doing? It seem to be just changing one
branch.

Mikey

>
> Signed-off-by: Gautham R. Shenoy <ego@xxxxxxxxxxxxxxxxxx>
> ---
> Âarch/powerpc/kernel/idle_book3s.S | 7 ++++---
> Â1 file changed, 4 insertions(+), 3 deletions(-)
>
> diff --git a/arch/powerpc/kernel/idle_book3s.S
> b/arch/powerpc/kernel/idle_book3s.S
> index 9b747e9..6a9bd28 100644
> --- a/arch/powerpc/kernel/idle_book3s.S
> +++ b/arch/powerpc/kernel/idle_book3s.S
> @@ -723,13 +723,14 @@ timebase_resync:
> Â Â* Use cr3 which indicates that we are waking up with atleast partial
> Â Â* hypervisor state loss to determine if TIMEBASE RESYNC is needed.
> Â Â*/
> - ble cr3,clear_lock
> + ble cr3,.Ltb_resynced
> Â /* Time base re-sync */
> Â bl opal_resync_timebase;
> Â /*
> - Â* If waking up from sleep, per core state is not lost, skip to
> - Â* clear_lock.
> + Â* If waking up from sleep (POWER8), per core state
> + Â* is not lost, skip to clear_lock.
> Â Â*/
> +.Ltb_resynced:
> Â blt cr4,clear_lock
> Â
> Â /*