From: Vivek Goyal <vgoyal@redhat.com>
To: Huang Ying <ying.huang@intel.com>
Cc: nigel@nigel.suspend2.net,
Kexec Mailing List <kexec@lists.infradead.org>,
linux-kernel@vger.kernel.org, "Rafael J. Wysocki" <rjw@sisk.pl>,
"Eric W. Biederman" <ebiederm@xmission.com>,
Pavel Machek <pavel@ucw.cz>,
Andrew Morton <akpm@linux-foundation.org>,
Linus Torvalds <torvalds@linux-foundation.org>,
mingo@elte.hu
Subject: Re: [PATCH 6/6] kexec jump: fix for ftrace
Date: Thu, 7 Aug 2008 09:38:05 -0400 [thread overview]
Message-ID: <20080807133805.GD27783@redhat.com> (raw)
In-Reply-To: <1218099937.5164.37.camel@caritas-dev.intel.com>
On Thu, Aug 07, 2008 at 05:05:37PM +0800, Huang Ying wrote:
> Restore ftrace after jumping back from kexeced kernel.
>
> Signed-off-by: Huang Ying <ying.huang@intel.com>
>
> ---
> arch/x86/kernel/machine_kexec_32.c | 19 +++++++++++++++++++
> kernel/kexec.c | 2 --
> 2 files changed, 19 insertions(+), 2 deletions(-)
>
> --- a/arch/x86/kernel/machine_kexec_32.c
> +++ b/arch/x86/kernel/machine_kexec_32.c
> @@ -12,6 +12,7 @@
> #include <linux/init.h>
> #include <linux/numa.h>
> #include <linux/ftrace.h>
> +#include <linux/suspend.h>
>
> #include <asm/pgtable.h>
> #include <asm/pgalloc.h>
> @@ -117,6 +118,7 @@ void machine_kexec(struct kimage *image)
> {
> unsigned long page_list[PAGES_NR];
> void *control_page;
> + int save_ftrace_enabled;
> asmlinkage unsigned long
> (*relocate_kernel_ptr)(unsigned long indirection_page,
> unsigned long control_page,
> @@ -124,7 +126,15 @@ void machine_kexec(struct kimage *image)
> unsigned int has_pae,
> unsigned int preserve_context);
>
> +#ifdef CONFIG_KEXEC_JUMP
> + if (kexec_image->preserve_context)
> + save_processor_state();
> +#endif
> +
> +#ifdef CONFIG_FTRACE
> + save_ftrace_enabled = ftrace_enabled;
> tracer_disable();
> +#endif
>
> /* Interrupts aren't acceptable while we reboot */
> raw_local_irq_disable();
> @@ -182,6 +192,15 @@ void machine_kexec(struct kimage *image)
> (unsigned long)page_list,
> image->start, cpu_has_pae,
> image->preserve_context);
> +
> +#ifdef CONFIG_KEXEC_JUMP
> + if (kexec_image->preserve_context)
> + restore_processor_state();
> +#endif
> +
> +#ifdef CONFIG_FTRACE
> + ftrace_enabled = save_ftrace_enabled;
> +#endif
> }
>
Hi Huang,
What kind of problem we run into if we don't disable the ftracer?
I think there are too many #ifdefs now and probably we can at least
get rid if #ifdef CONFIG_FTRACE thing.
I think ftracer needs to export the function to enable the tracer
back (tracer_enable()) so that we don't directly play with ftrace_enabled
variable. tracer_enable() can be do {} while{0} in case of CONFIG_FTRACE=n
so that we can get rid of #ifdefs here.
Thanks
Vivek
_______________________________________________
kexec mailing list
kexec@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/kexec
WARNING: multiple messages have this Message-ID (diff)
From: Vivek Goyal <vgoyal@redhat.com>
To: Huang Ying <ying.huang@intel.com>
Cc: "Eric W. Biederman" <ebiederm@xmission.com>,
Pavel Machek <pavel@ucw.cz>,
nigel@nigel.suspend2.net, "Rafael J. Wysocki" <rjw@sisk.pl>,
Andrew Morton <akpm@linux-foundation.org>,
mingo@elte.hu, Linus Torvalds <torvalds@linux-foundation.org>,
linux-kernel@vger.kernel.org,
Kexec Mailing List <kexec@lists.infradead.org>
Subject: Re: [PATCH 6/6] kexec jump: fix for ftrace
Date: Thu, 7 Aug 2008 09:38:05 -0400 [thread overview]
Message-ID: <20080807133805.GD27783@redhat.com> (raw)
In-Reply-To: <1218099937.5164.37.camel@caritas-dev.intel.com>
On Thu, Aug 07, 2008 at 05:05:37PM +0800, Huang Ying wrote:
> Restore ftrace after jumping back from kexeced kernel.
>
> Signed-off-by: Huang Ying <ying.huang@intel.com>
>
> ---
> arch/x86/kernel/machine_kexec_32.c | 19 +++++++++++++++++++
> kernel/kexec.c | 2 --
> 2 files changed, 19 insertions(+), 2 deletions(-)
>
> --- a/arch/x86/kernel/machine_kexec_32.c
> +++ b/arch/x86/kernel/machine_kexec_32.c
> @@ -12,6 +12,7 @@
> #include <linux/init.h>
> #include <linux/numa.h>
> #include <linux/ftrace.h>
> +#include <linux/suspend.h>
>
> #include <asm/pgtable.h>
> #include <asm/pgalloc.h>
> @@ -117,6 +118,7 @@ void machine_kexec(struct kimage *image)
> {
> unsigned long page_list[PAGES_NR];
> void *control_page;
> + int save_ftrace_enabled;
> asmlinkage unsigned long
> (*relocate_kernel_ptr)(unsigned long indirection_page,
> unsigned long control_page,
> @@ -124,7 +126,15 @@ void machine_kexec(struct kimage *image)
> unsigned int has_pae,
> unsigned int preserve_context);
>
> +#ifdef CONFIG_KEXEC_JUMP
> + if (kexec_image->preserve_context)
> + save_processor_state();
> +#endif
> +
> +#ifdef CONFIG_FTRACE
> + save_ftrace_enabled = ftrace_enabled;
> tracer_disable();
> +#endif
>
> /* Interrupts aren't acceptable while we reboot */
> raw_local_irq_disable();
> @@ -182,6 +192,15 @@ void machine_kexec(struct kimage *image)
> (unsigned long)page_list,
> image->start, cpu_has_pae,
> image->preserve_context);
> +
> +#ifdef CONFIG_KEXEC_JUMP
> + if (kexec_image->preserve_context)
> + restore_processor_state();
> +#endif
> +
> +#ifdef CONFIG_FTRACE
> + ftrace_enabled = save_ftrace_enabled;
> +#endif
> }
>
Hi Huang,
What kind of problem we run into if we don't disable the ftracer?
I think there are too many #ifdefs now and probably we can at least
get rid if #ifdef CONFIG_FTRACE thing.
I think ftracer needs to export the function to enable the tracer
back (tracer_enable()) so that we don't directly play with ftrace_enabled
variable. tracer_enable() can be do {} while{0} in case of CONFIG_FTRACE=n
so that we can get rid of #ifdefs here.
Thanks
Vivek
next prev parent reply other threads:[~2008-08-07 13:38 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-08-07 9:05 [PATCH 6/6] kexec jump: fix for ftrace Huang Ying
2008-08-07 9:05 ` Huang Ying
2008-08-07 9:24 ` Pavel Machek
2008-08-07 9:24 ` Pavel Machek
2008-08-07 13:38 ` Vivek Goyal [this message]
2008-08-07 13:38 ` Vivek Goyal
2008-08-08 2:59 ` Huang Ying
2008-08-08 2:59 ` Huang Ying
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=20080807133805.GD27783@redhat.com \
--to=vgoyal@redhat.com \
--cc=akpm@linux-foundation.org \
--cc=ebiederm@xmission.com \
--cc=kexec@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@elte.hu \
--cc=nigel@nigel.suspend2.net \
--cc=pavel@ucw.cz \
--cc=rjw@sisk.pl \
--cc=torvalds@linux-foundation.org \
--cc=ying.huang@intel.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.