All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Naveen N. Rao" <naveen.n.rao@linux.vnet.ibm.com>
To: Michael Ellerman <mpe@ellerman.id.au>,
	Paul Mackerras <paulus@ozlabs.org>,
	Steven Rostedt <rostedt@goodmis.org>
Cc: Anton Blanchard <anton@samba.org>,
	linuxppc-dev@lists.ozlabs.org,
	Nicholas Piggin <npiggin@gmail.com>,
	sathnaga@linux.vnet.ibm.com
Subject: Re: [PATCH v2 1/5] powerpc64/ftrace: Add a field in paca to disable ftrace in unsafe code paths
Date: Thu, 22 Mar 2018 13:23:05 +0530	[thread overview]
Message-ID: <1521705085.6fya98gc1m.naveen@linux.ibm.com> (raw)
In-Reply-To: <b6aff6c7194bd7bb97828db63ca0c82ee4598918.1521627906.git.naveen.n.rao__49352. 2364100956$1521630977$gmane$org@linux.vnet.ibm.com>

Naveen N. Rao wrote:
> We have some C code that we call into from real mode where we cannot
> take any exceptions. Though the C functions themselves are mostly safe,
> if these functions are traced, there is a possibility that we may take
> an exception. For instance, in certain conditions, the ftrace code uses
> WARN(), which uses a 'trap' to do its job.
>=20
> For such scenarios, introduce a new field in paca 'ftrace_disabled',
> which is checked on ftrace entry before continuing. This field can then
> be set to a non-zero value to disable/pause ftrace, and reset to zero to
> resume ftrace.
>=20
> Signed-off-by: Naveen N. Rao <naveen.n.rao@linux.vnet.ibm.com>
> ---
> Changes since v1:
> - Do not guard the paca field check within CONFIG_KVM.
> - Move the early return code out of the usual path to optimize for=20
>   better cache performance in the normal case when ftrace is enabled.
>=20
>  arch/powerpc/include/asm/paca.h                |  1 +
>  arch/powerpc/kernel/asm-offsets.c              |  1 +
>  arch/powerpc/kernel/trace/ftrace_64_mprofile.S | 14 ++++++++++++++
>  arch/powerpc/kernel/trace/ftrace_64_pg.S       |  4 ++++
>  4 files changed, 20 insertions(+)
>=20
> diff --git a/arch/powerpc/include/asm/paca.h b/arch/powerpc/include/asm/p=
aca.h
> index d2bf71dddbef..4f47adc2a408 100644
> --- a/arch/powerpc/include/asm/paca.h
> +++ b/arch/powerpc/include/asm/paca.h
> @@ -211,6 +211,7 @@ struct paca_struct {
>  	u16 in_mce;
>  	u8 hmi_event_available;		/* HMI event is available */
>  	u8 hmi_p9_special_emu;		/* HMI P9 special emulation */
> +	u8 ftrace_disabled;
>  #endif
> =20
>  	/* Stuff for accurate time accounting */
> diff --git a/arch/powerpc/kernel/asm-offsets.c b/arch/powerpc/kernel/asm-=
offsets.c
> index ea5eb91b836e..8e4fc96ff6bc 100644
> --- a/arch/powerpc/kernel/asm-offsets.c
> +++ b/arch/powerpc/kernel/asm-offsets.c
> @@ -240,6 +240,7 @@ int main(void)
>  	OFFSET(PACA_RFI_FLUSH_FALLBACK_AREA, paca_struct, rfi_flush_fallback_ar=
ea);
>  	OFFSET(PACA_EXRFI, paca_struct, exrfi);
>  	OFFSET(PACA_L1D_FLUSH_SIZE, paca_struct, l1d_flush_size);
> +	OFFSET(PACA_FTRACE_DISABLED, paca_struct, ftrace_disabled);
> =20
>  #endif
>  	OFFSET(PACAHWCPUID, paca_struct, hw_cpu_id);
> diff --git a/arch/powerpc/kernel/trace/ftrace_64_mprofile.S b/arch/powerp=
c/kernel/trace/ftrace_64_mprofile.S
> index 3f3e81852422..8f2380304ef1 100644
> --- a/arch/powerpc/kernel/trace/ftrace_64_mprofile.S
> +++ b/arch/powerpc/kernel/trace/ftrace_64_mprofile.S
> @@ -47,6 +47,12 @@ _GLOBAL(ftrace_caller)
>  	/* Save all gprs to pt_regs */
>  	SAVE_GPR(0, r1)
>  	SAVE_10GPRS(2, r1)
> +
> +	/* Ok to continue? */
> +	lbz	r3, PACA_FTRACE_DISABLED(r13)
> +	cmpdi	r3, 0
> +	beq	ftrace_no_trace
	^^^ bne

:facepalm:

- Naveen

=

      parent reply	other threads:[~2018-03-22  7:53 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-03-21 10:43 [PATCH v2 0/5] powerpc/ftrace: Add support for ftrace_modify_call() and a few other fixes Naveen N. Rao
2018-03-21 10:43 ` [PATCH v2 1/5] powerpc64/ftrace: Add a field in paca to disable ftrace in unsafe code paths Naveen N. Rao
2018-03-21 13:46   ` Steven Rostedt
2018-03-21 10:43 ` [PATCH v2 2/5] powerpc64/ftrace: Disable ftrace during kvm guest entry/exit Naveen N. Rao
2018-03-21 10:43 ` [PATCH v2 3/5] powerpc64/module: Tighten detection of mcount call sites with -mprofile-kernel Naveen N. Rao
2018-03-21 10:43 ` [PATCH v2 4/5] powerpc64/ftrace: Use the generic version of ftrace_replace_code() Naveen N. Rao
2018-03-21 10:43 ` [PATCH v2 5/5] powerpc64/ftrace: Implement support for ftrace_regs_caller() Naveen N. Rao
2018-03-21 13:59   ` Steven Rostedt
2018-03-21 14:37     ` Naveen N. Rao
2018-03-21 15:22       ` Steven Rostedt
2018-03-21 15:29         ` Naveen N. Rao
2018-03-21 15:31           ` Steven Rostedt
2018-03-21 19:10             ` Naveen N. Rao
     [not found] ` <b6aff6c7194bd7bb97828db63ca0c82ee4598918.1521627906.git.naveen.n.rao__49352.2364100956$1521630977$gmane$org@linux.vnet.ibm.com>
     [not found]   ` <b6aff6c7194bd7bb97828db63ca0c82ee4598918.1521627906.git.naveen.n.rao__49352. 2364100956$1521630977$gmane$org@linux.vnet.ibm.com>
2018-03-22  7:53     ` Naveen N. Rao [this message]

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=1521705085.6fya98gc1m.naveen@linux.ibm.com \
    --to=naveen.n.rao@linux.vnet.ibm.com \
    --cc=anton@samba.org \
    --cc=linuxppc-dev@lists.ozlabs.org \
    --cc=mpe@ellerman.id.au \
    --cc=npiggin@gmail.com \
    --cc=paulus@ozlabs.org \
    --cc=rostedt@goodmis.org \
    --cc=sathnaga@linux.vnet.ibm.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.