2015-07-29 19:21:29

by Peter Zijlstra

[permalink] [raw]
Subject: [RFC][PATCH 3/7] avr32: Remove finish_arch_switch()

Fold the tracing hook into switch_to() in order to remove
finish_arch_switch().

Cc: Hans-Christian Egtvedt <[email protected]>
Signed-off-by: Peter Zijlstra (Intel) <[email protected]>
---
arch/avr32/include/asm/switch_to.h | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)

--- a/arch/avr32/include/asm/switch_to.h
+++ b/arch/avr32/include/asm/switch_to.h
@@ -15,11 +15,13 @@
*/
#ifdef CONFIG_OWNERSHIP_TRACE
#include <asm/ocd.h>
-#define finish_arch_switch(prev) \
+#define ocd_switch(prev, next) \
do { \
ocd_write(PID, prev->pid); \
- ocd_write(PID, current->pid); \
+ ocd_write(PID, next->pid); \
} while(0)
+#else
+#define ocd_switch(prev, next)
#endif

/*
@@ -38,6 +40,7 @@ extern struct task_struct *__switch_to(s
struct cpu_context *);
#define switch_to(prev, next, last) \
do { \
+ ocd_switch(prev, next); \
last = __switch_to(prev, &prev->thread.cpu_context + 1, \
&next->thread.cpu_context); \
} while (0)


Subject: Re: [RFC][PATCH 3/7] avr32: Remove finish_arch_switch()

Around Wed 29 Jul 2015 21:08:51 +0200 or thereabout, Peter Zijlstra wrote:
> Fold the tracing hook into switch_to() in order to remove
> finish_arch_switch().

AFAICT this should work, I do not have a nexus debugger to verify behavior.

> Cc: Hans-Christian Egtvedt <[email protected]>
> Signed-off-by: Peter Zijlstra (Intel) <[email protected]>

Acked-by: Hans-Christian Egtvedt <[email protected]>

> ---
> arch/avr32/include/asm/switch_to.h | 7 +++++--
> 1 file changed, 5 insertions(+), 2 deletions(-)
>
> --- a/arch/avr32/include/asm/switch_to.h
> +++ b/arch/avr32/include/asm/switch_to.h
> @@ -15,11 +15,13 @@
> */
> #ifdef CONFIG_OWNERSHIP_TRACE
> #include <asm/ocd.h>
> -#define finish_arch_switch(prev) \
> +#define ocd_switch(prev, next) \
> do { \
> ocd_write(PID, prev->pid); \
> - ocd_write(PID, current->pid); \
> + ocd_write(PID, next->pid); \
> } while(0)
> +#else
> +#define ocd_switch(prev, next)
> #endif
>
> /*
> @@ -38,6 +40,7 @@ extern struct task_struct *__switch_to(s
> struct cpu_context *);
> #define switch_to(prev, next, last) \
> do { \
> + ocd_switch(prev, next); \
> last = __switch_to(prev, &prev->thread.cpu_context + 1, \
> &next->thread.cpu_context); \
> } while (0)
--
mvh
Hans-Christian Egtvedt