Hi Steve,

Steven Rostedt wrote:
On Wed,  7 Mar 2018 22:16:19 +0530
"Naveen N. Rao" <naveen.n....@linux.vnet.ibm.com> wrote:

We can't take a trap in most parts of real mode code. Instead of adding
the 'notrace' annotation to all C functions that can be invoked from
real mode, detect that we are in real mode on ftrace entry and return
back.

Signed-off-by: Naveen N. Rao <naveen.n....@linux.vnet.ibm.com>
---
This RFC only handles -mprofile-kernel to demonstrate the approach being considered. We will need to handle other ftrace entry if we decide to continue down this path.

I do prefer this trade off.

Great, thanks!



diff --git a/arch/powerpc/kernel/trace/ftrace_64_mprofile.S 
b/arch/powerpc/kernel/trace/ftrace_64_mprofile.S
index 3f3e81852422..ecc0e8e38ead 100644
--- a/arch/powerpc/kernel/trace/ftrace_64_mprofile.S
+++ b/arch/powerpc/kernel/trace/ftrace_64_mprofile.S
@@ -56,6 +56,21 @@ _GLOBAL(ftrace_caller)
/* Load special regs for save below */
        mfmsr   r8
+
+       /* Only proceed if we are not in real mode and can take interrupts */
+       andi.   r9, r8, MSR_IR|MSR_DR|MSR_RI
+       cmpdi   r9, MSR_IR|MSR_DR|MSR_RI
+       beq     1f

OK, I assume this check and branch is negligible compared to the mfmsr
call?

Yes, that's negligible.
Though, to be honest, I will have to introduce a 'mfmsr' for the older -pg variant. I still think that the improved reliability far outweighs the minor slowdown there.

- Naveen


Reply via email to