public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Steven Rostedt <rostedt@goodmis.org>
To: linux-kernel@vger.kernel.org
Cc: Ingo Molnar <mingo@kernel.org>,
	Andrew Morton <akpm@linux-foundation.org>,
	"Rafael J. Wysocki" <rjw@rjwysocki.net>,
	Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
Subject: [for-next][PATCH 03/32] x86, power, suspend: Annotate restore_processor_state() with notrace
Date: Sat, 19 Jul 2014 09:15:27 -0400	[thread overview]
Message-ID: <20140719131609.615594280@goodmis.org> (raw)
In-Reply-To: 20140719131524.009152325@goodmis.org

[-- Attachment #1: 0003-x86-power-suspend-Annotate-restore_processor_state-w.patch --]
[-- Type: text/plain, Size: 2505 bytes --]

From: "Steven Rostedt (Red Hat)" <rostedt@goodmis.org>

ftrace_stop() is used to stop function tracing during suspend and resume
which removes a lot of possible debugging opportunities with tracing.
The reason was that some function in the resume path was causing a triple
fault if it were to be traced. The issue I found was that doing something
as simple as calling smp_processor_id() would reboot the box!

When function tracing was first created I didn't have a good way to figure
out what function was having issues, or it looked to be multiple ones. To
fix it, we just created a big hammer approach to the problem which was to
add a flag in the mcount trampoline that could be checked and not call
the traced functions.

Lately I developed better ways to find problem functions and I can bisect
down to see what function is causing the issue. I removed the flag that
stopped tracing and proceeded to find the problem function and it ended
up being restore_processor_state(). This function makes sense as when the
CPU comes back online from a suspend it calls this function to set up
registers, amongst them the GS register, which stores things such as
what CPU the processor is (if you call smp_processor_id() without this
set up properly, it would fault).

By making restore_processor_state() notrace, the system can suspend and
resume without the need of the big hammer tracing to stop.

Link: http://lkml.kernel.org/r/3577662.BSnUZfboWb@vostro.rjw.lan

Acked-by: "Rafael J. Wysocki" <rjw@rjwysocki.net>
Reviewed-by: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
---
 arch/x86/power/cpu.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/arch/x86/power/cpu.c b/arch/x86/power/cpu.c
index 424f4c97a44d..6ec7910f59bf 100644
--- a/arch/x86/power/cpu.c
+++ b/arch/x86/power/cpu.c
@@ -165,7 +165,7 @@ static void fix_processor_context(void)
  *		by __save_processor_state()
  *	@ctxt - structure to load the registers contents from
  */
-static void __restore_processor_state(struct saved_context *ctxt)
+static void notrace __restore_processor_state(struct saved_context *ctxt)
 {
 	if (ctxt->misc_enable_saved)
 		wrmsrl(MSR_IA32_MISC_ENABLE, ctxt->misc_enable);
@@ -239,7 +239,7 @@ static void __restore_processor_state(struct saved_context *ctxt)
 }
 
 /* Needed by apm.c */
-void restore_processor_state(void)
+void notrace restore_processor_state(void)
 {
 	__restore_processor_state(&saved_context);
 }
-- 
2.0.1



  parent reply	other threads:[~2014-07-19 13:16 UTC|newest]

Thread overview: 35+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-07-19 13:15 [for-next][PATCH 00/32] ftrace/tracing: Fixes and final removal of ftrace_start/stop() Steven Rostedt
2014-07-19 13:15 ` [for-next][PATCH 01/32] ftrace: Allow archs to specify if they need a separate function graph trampoline Steven Rostedt
2014-07-19 13:15 ` [for-next][PATCH 02/32] ftrace/x86: Have function graph tracer use its own trampoline Steven Rostedt
2014-07-19 13:15 ` Steven Rostedt [this message]
2014-07-19 13:15 ` [for-next][PATCH 04/32] PM / Sleep: Remove ftrace_stop/start() from suspend and hibernate Steven Rostedt
2014-07-19 13:15 ` [for-next][PATCH 05/32] ftrace-graph: Remove dependency of ftrace_stop() from ftrace_graph_stop() Steven Rostedt
2014-07-19 13:15 ` [for-next][PATCH 06/32] ftrace/x86: Add call to ftrace_graph_is_dead() in function graph code Steven Rostedt
2014-07-19 13:15 ` [for-next][PATCH 07/32] microblaze: ftrace: " Steven Rostedt
2014-07-19 13:15 ` [for-next][PATCH 08/32] MIPS: " Steven Rostedt
2014-07-19 13:15 ` [for-next][PATCH 09/32] parisc: " Steven Rostedt
2014-07-19 13:15 ` [for-next][PATCH 10/32] powerpc/ftrace: " Steven Rostedt
2014-07-19 13:15 ` [for-next][PATCH 11/32] sh: ftrace: " Steven Rostedt
2014-07-19 13:15 ` [for-next][PATCH 12/32] ftrace-graph: Remove usage of ftrace_stop() in ftrace_graph_stop() Steven Rostedt
2014-07-19 13:15 ` [for-next][PATCH 13/32] ftrace: Remove ftrace_start/stop() Steven Rostedt
2014-07-19 13:15 ` [for-next][PATCH 14/32] ftrace: Do no disable function tracing on enabling function tracing Steven Rostedt
2014-07-19 13:15 ` [for-next][PATCH 15/32] ftrace: Remove function_trace_stop check from list func Steven Rostedt
2014-07-19 13:15 ` [for-next][PATCH 16/32] ftrace: Remove check for HAVE_FUNCTION_TRACE_MCOUNT_TEST Steven Rostedt
2014-07-19 13:15 ` [for-next][PATCH 17/32] ftrace: x86: Remove check of obsolete variable function_trace_stop Steven Rostedt
2014-07-19 13:15 ` [for-next][PATCH 18/32] tile: ftrace: " Steven Rostedt
2014-07-19 13:15 ` [for-next][PATCH 19/32] sparc64,ftrace: " Steven Rostedt
2014-07-19 13:15 ` [for-next][PATCH 20/32] sh: ftrace: " Steven Rostedt
2014-07-21 11:05   ` Matt Fleming
2014-07-21 12:09     ` Steven Rostedt
2014-07-19 13:15 ` [for-next][PATCH 21/32] parisc: " Steven Rostedt
2014-07-19 13:15 ` [for-next][PATCH 22/32] MIPS: " Steven Rostedt
2014-07-19 13:15 ` [for-next][PATCH 23/32] microblaze: " Steven Rostedt
2014-07-19 13:15 ` [for-next][PATCH 24/32] metag: " Steven Rostedt
2014-07-19 13:15 ` [for-next][PATCH 25/32] Blackfin: " Steven Rostedt
2014-07-19 13:15 ` [for-next][PATCH 26/32] arm64, " Steven Rostedt
2014-07-19 13:15 ` [for-next][PATCH 27/32] s390/ftrace: remove " Steven Rostedt
2014-07-19 13:15 ` [for-next][PATCH 28/32] tracing: Remove function_trace_stop and HAVE_FUNCTION_TRACE_MCOUNT_TEST Steven Rostedt
2014-07-19 13:15 ` [for-next][PATCH 29/32] ring-buffer: Always run per-cpu ring buffer resize with schedule_work_on() Steven Rostedt
2014-07-19 13:15 ` [for-next][PATCH 30/32] tracing: let user specify tracing_thresh after selecting function_graph Steven Rostedt
2014-07-19 13:15 ` [for-next][PATCH 31/32] ftrace: Do not copy old hash when resetting Steven Rostedt
2014-07-19 13:15 ` [for-next][PATCH 32/32] tracing: Convert local function_graph functions to static Steven Rostedt

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=20140719131609.615594280@goodmis.org \
    --to=rostedt@goodmis.org \
    --cc=akpm@linux-foundation.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=masami.hiramatsu.pt@hitachi.com \
    --cc=mingo@kernel.org \
    --cc=rjw@rjwysocki.net \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox