All of lore.kernel.org
 help / color / mirror / Atom feed
From: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
To: gregkh@linuxfoundation.org
Cc: catalin.marinas@arm.com, rostedt@goodmis.org,
	takahiro.akashi@linaro.org, will.deacon@arm.com,
	stable@vger.kernel.org, stable-commits@vger.kernel.org,
	sudeep.holla@arm.com
Subject: Re: Patch "arm64: kernel: pause/unpause function graph tracer in cpu_suspend()" has been added to the 4.1-stable tree
Date: Tue, 15 Mar 2016 14:08:19 +0000	[thread overview]
Message-ID: <20160315140806.GA11376@red-moon> (raw)
In-Reply-To: <1453877690189116@kroah.com>

Hi Greg,

On Tue, Jan 26, 2016 at 10:54:50PM -0800, gregkh@linuxfoundation.org wrote:
> 
> This is a note to let you know that I've just added the patch titled
> 
>     arm64: kernel: pause/unpause function graph tracer in cpu_suspend()
> 
> to the 4.1-stable tree which can be found at:
>     http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
> 
> The filename of the patch is:
>      arm64-kernel-pause-unpause-function-graph-tracer-in-cpu_suspend.patch
> and it can be found in the queue-4.1 subdirectory.
> 
> If you, or anyone else, feels it should not be added to the stable tree,
> please let <stable@vger.kernel.org> know about it.

We have just noticed this patch did not make it to 3.18 stable kernel
even though it was marked for #3.16+, probably it has slipped through
the cracks, please let us know what we can do to get it applied
to the 3.18 stable tree.

Thanks !
Lorenzo

> 
> 
> From de818bd4522c40ea02a81b387d2fa86f989c9623 Mon Sep 17 00:00:00 2001
> From: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
> Date: Tue, 17 Nov 2015 11:50:51 +0000
> Subject: arm64: kernel: pause/unpause function graph tracer in cpu_suspend()
> 
> From: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
> 
> commit de818bd4522c40ea02a81b387d2fa86f989c9623 upstream.
> 
> The function graph tracer adds instrumentation that is required to trace
> both entry and exit of a function. In particular the function graph
> tracer updates the "return address" of a function in order to insert
> a trace callback on function exit.
> 
> Kernel power management functions like cpu_suspend() are called
> upon power down entry with functions called "finishers" that are in turn
> called to trigger the power down sequence but they may not return to the
> kernel through the normal return path.
> 
> When the core resumes from low-power it returns to the cpu_suspend()
> function through the cpu_resume path, which leaves the trace stack frame
> set-up by the function tracer in an incosistent state upon return to the
> kernel when tracing is enabled.
> 
> This patch fixes the issue by pausing/resuming the function graph
> tracer on the thread executing cpu_suspend() (ie the function call that
> subsequently triggers the "suspend finishers"), so that the function graph
> tracer state is kept consistent across functions that enter power down
> states and never return by effectively disabling graph tracer while they
> are executing.
> 
> Fixes: 819e50e25d0c ("arm64: Add ftrace support")
> Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
> Reported-by: Catalin Marinas <catalin.marinas@arm.com>
> Reported-by: AKASHI Takahiro <takahiro.akashi@linaro.org>
> Suggested-by: Steven Rostedt <rostedt@goodmis.org>
> Acked-by: Steven Rostedt <rostedt@goodmis.org>
> Cc: Will Deacon <will.deacon@arm.com>
> Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
> 
> ---
>  arch/arm64/kernel/suspend.c |   10 ++++++++++
>  1 file changed, 10 insertions(+)
> 
> --- a/arch/arm64/kernel/suspend.c
> +++ b/arch/arm64/kernel/suspend.c
> @@ -1,3 +1,4 @@
> +#include <linux/ftrace.h>
>  #include <linux/percpu.h>
>  #include <linux/slab.h>
>  #include <asm/cacheflush.h>
> @@ -71,6 +72,13 @@ int cpu_suspend(unsigned long arg, int (
>  	local_dbg_save(flags);
>  
>  	/*
> +	 * Function graph tracer state gets incosistent when the kernel
> +	 * calls functions that never return (aka suspend finishers) hence
> +	 * disable graph tracing during their execution.
> +	 */
> +	pause_graph_tracing();
> +
> +	/*
>  	 * mm context saved on the stack, it will be restored when
>  	 * the cpu comes out of reset through the identity mapped
>  	 * page tables, so that the thread address space is properly
> @@ -111,6 +119,8 @@ int cpu_suspend(unsigned long arg, int (
>  			hw_breakpoint_restore(NULL);
>  	}
>  
> +	unpause_graph_tracing();
> +
>  	/*
>  	 * Restore pstate flags. OS lock and mdscr have been already
>  	 * restored, so from this point onwards, debugging is fully
> 
> 
> Patches currently in stable-queue which might be from lorenzo.pieralisi@arm.com are
> 
> queue-4.1/arm64-kernel-pause-unpause-function-graph-tracer-in-cpu_suspend.patch
> 

  reply	other threads:[~2016-03-15 14:06 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-01-27  6:54 Patch "arm64: kernel: pause/unpause function graph tracer in cpu_suspend()" has been added to the 4.1-stable tree gregkh
2016-03-15 14:08 ` Lorenzo Pieralisi [this message]
2016-03-15 14:07   ` Steven Rostedt
2016-03-15 14:39     ` Lorenzo Pieralisi
2016-03-15 15:04   ` Greg KH
2016-03-15 16:28     ` Lorenzo Pieralisi

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20160315140806.GA11376@red-moon \
    --to=lorenzo.pieralisi@arm.com \
    --cc=catalin.marinas@arm.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=rostedt@goodmis.org \
    --cc=stable-commits@vger.kernel.org \
    --cc=stable@vger.kernel.org \
    --cc=sudeep.holla@arm.com \
    --cc=takahiro.akashi@linaro.org \
    --cc=will.deacon@arm.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.