| From a7e0fb6c2029a780444d09560f739e020d54fe4d Mon Sep 17 00:00:00 2001 |
| From: Michael Ellerman <mpe@ellerman.id.au> |
| Date: Tue, 7 Feb 2017 21:01:01 +1100 |
| Subject: [PATCH] powerpc/powernv: Fix opal_exit tracepoint opcode |
| |
| commit a7e0fb6c2029a780444d09560f739e020d54fe4d upstream. |
| |
| Currently the opal_exit tracepoint usually shows the opcode as 0: |
| |
| <idle>-0 [047] d.h. 635.654292: opal_entry: opcode=63 |
| <idle>-0 [047] d.h. 635.654296: opal_exit: opcode=0 retval=0 |
| kopald-1209 [019] d... 636.420943: opal_entry: opcode=10 |
| kopald-1209 [019] d... 636.420959: opal_exit: opcode=0 retval=0 |
| |
| This is because we incorrectly load the opcode into r0 before calling |
| __trace_opal_exit(), whereas it expects the opcode in r3 (first function |
| parameter). In fact we are leaving the retval in r3, so opcode and |
| retval will always show the same value. |
| |
| Instead load the opcode into r3, resulting in: |
| |
| <idle>-0 [040] d.h. 636.618625: opal_entry: opcode=63 |
| <idle>-0 [040] d.h. 636.618627: opal_exit: opcode=63 retval=0 |
| |
| Fixes: c49f63530bb6 ("powernv: Add OPAL tracepoints") |
| Signed-off-by: Michael Ellerman <mpe@ellerman.id.au> |
| |
| diff --git a/arch/powerpc/platforms/powernv/opal-wrappers.S b/arch/powerpc/platforms/powernv/opal-wrappers.S |
| index f7c19c9c57ed..63fe1b2b1175 100644 |
| --- a/arch/powerpc/platforms/powernv/opal-wrappers.S |
| +++ b/arch/powerpc/platforms/powernv/opal-wrappers.S |
| @@ -146,7 +146,7 @@ opal_tracepoint_entry: |
| opal_tracepoint_return: |
| std r3,STK_REG(R31)(r1) |
| mr r4,r3 |
| - ld r0,STK_REG(R23)(r1) |
| + ld r3,STK_REG(R23)(r1) |
| bl __trace_opal_exit |
| ld r3,STK_REG(R31)(r1) |
| addi r1,r1,STACKFRAMESIZE |
| -- |
| 2.12.0 |
| |