* [PATCH 2/4] tile: Add definition of NR_syscalls
2013-01-22 0:54 [PATCH 1/4] tile: move declaration of sys_call_table to <asm/syscall.h> Simon Marchi
@ 2013-01-22 0:54 ` Simon Marchi
2013-01-22 1:06 ` Mathieu Desnoyers
2013-01-22 1:06 ` [lttng-dev] " Mathieu Desnoyers
2013-01-22 0:54 ` [PATCH 3/4] tile: Add support for TIF_SYSCALL_TRACEPOINT Simon Marchi
` (3 subsequent siblings)
4 siblings, 2 replies; 10+ messages in thread
From: Simon Marchi @ 2013-01-22 0:54 UTC (permalink / raw)
To: cmetcalf; +Cc: linux-kernel, lttng-dev, Simon Marchi
It is required by the syscall tracepoint mechanism.
Signed-off-by: Simon Marchi <simon.marchi@polymtl.ca>
---
arch/tile/include/uapi/asm/unistd.h | 2 ++
1 files changed, 2 insertions(+), 0 deletions(-)
diff --git a/arch/tile/include/uapi/asm/unistd.h b/arch/tile/include/uapi/asm/unistd.h
index cd7b6dd..c763c86 100644
--- a/arch/tile/include/uapi/asm/unistd.h
+++ b/arch/tile/include/uapi/asm/unistd.h
@@ -20,6 +20,8 @@
/* Use the standard ABI for syscalls. */
#include <asm-generic/unistd.h>
+#define NR_syscalls (__NR_syscalls)
+
/* Additional Tilera-specific syscalls. */
#define __NR_cacheflush (__NR_arch_specific_syscall + 1)
__SYSCALL(__NR_cacheflush, sys_cacheflush)
--
1.7.1
^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [PATCH 2/4] tile: Add definition of NR_syscalls
2013-01-22 0:54 ` [PATCH 2/4] tile: Add definition of NR_syscalls Simon Marchi
@ 2013-01-22 1:06 ` Mathieu Desnoyers
2013-01-22 1:06 ` [lttng-dev] " Mathieu Desnoyers
1 sibling, 0 replies; 10+ messages in thread
From: Mathieu Desnoyers @ 2013-01-22 1:06 UTC (permalink / raw)
To: Simon Marchi; +Cc: lttng-dev, linux-kernel, cmetcalf
* Simon Marchi (simon.marchi@polymtl.ca) wrote:
> It is required by the syscall tracepoint mechanism.
>
> Signed-off-by: Simon Marchi <simon.marchi@polymtl.ca>
> ---
> arch/tile/include/uapi/asm/unistd.h | 2 ++
> 1 files changed, 2 insertions(+), 0 deletions(-)
>
> diff --git a/arch/tile/include/uapi/asm/unistd.h b/arch/tile/include/uapi/asm/unistd.h
> index cd7b6dd..c763c86 100644
> --- a/arch/tile/include/uapi/asm/unistd.h
> +++ b/arch/tile/include/uapi/asm/unistd.h
> @@ -20,6 +20,8 @@
> /* Use the standard ABI for syscalls. */
> #include <asm-generic/unistd.h>
>
> +#define NR_syscalls (__NR_syscalls)
The parenthesis around __NR_syscalls seems unnecessary. (unless
parenthesis would happen to be missing around a __NR_syscalls definition
with multiple identifiers, but clearly, the parenthesis don't belong
here).
Thanks,
Mathieu
> +
> /* Additional Tilera-specific syscalls. */
> #define __NR_cacheflush (__NR_arch_specific_syscall + 1)
> __SYSCALL(__NR_cacheflush, sys_cacheflush)
> --
> 1.7.1
>
>
> _______________________________________________
> lttng-dev mailing list
> lttng-dev@lists.lttng.org
> http://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev
--
Mathieu Desnoyers
EfficiOS Inc.
http://www.efficios.com
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [lttng-dev] [PATCH 2/4] tile: Add definition of NR_syscalls
2013-01-22 0:54 ` [PATCH 2/4] tile: Add definition of NR_syscalls Simon Marchi
2013-01-22 1:06 ` Mathieu Desnoyers
@ 2013-01-22 1:06 ` Mathieu Desnoyers
1 sibling, 0 replies; 10+ messages in thread
From: Mathieu Desnoyers @ 2013-01-22 1:06 UTC (permalink / raw)
To: Simon Marchi; +Cc: cmetcalf, lttng-dev, linux-kernel
* Simon Marchi (simon.marchi@polymtl.ca) wrote:
> It is required by the syscall tracepoint mechanism.
>
> Signed-off-by: Simon Marchi <simon.marchi@polymtl.ca>
> ---
> arch/tile/include/uapi/asm/unistd.h | 2 ++
> 1 files changed, 2 insertions(+), 0 deletions(-)
>
> diff --git a/arch/tile/include/uapi/asm/unistd.h b/arch/tile/include/uapi/asm/unistd.h
> index cd7b6dd..c763c86 100644
> --- a/arch/tile/include/uapi/asm/unistd.h
> +++ b/arch/tile/include/uapi/asm/unistd.h
> @@ -20,6 +20,8 @@
> /* Use the standard ABI for syscalls. */
> #include <asm-generic/unistd.h>
>
> +#define NR_syscalls (__NR_syscalls)
The parenthesis around __NR_syscalls seems unnecessary. (unless
parenthesis would happen to be missing around a __NR_syscalls definition
with multiple identifiers, but clearly, the parenthesis don't belong
here).
Thanks,
Mathieu
> +
> /* Additional Tilera-specific syscalls. */
> #define __NR_cacheflush (__NR_arch_specific_syscall + 1)
> __SYSCALL(__NR_cacheflush, sys_cacheflush)
> --
> 1.7.1
>
>
> _______________________________________________
> lttng-dev mailing list
> lttng-dev@lists.lttng.org
> http://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev
--
Mathieu Desnoyers
EfficiOS Inc.
http://www.efficios.com
^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH 3/4] tile: Add support for TIF_SYSCALL_TRACEPOINT
2013-01-22 0:54 [PATCH 1/4] tile: move declaration of sys_call_table to <asm/syscall.h> Simon Marchi
2013-01-22 0:54 ` [PATCH 2/4] tile: Add definition of NR_syscalls Simon Marchi
@ 2013-01-22 0:54 ` Simon Marchi
2013-01-22 0:54 ` Simon Marchi
` (2 subsequent siblings)
4 siblings, 0 replies; 10+ messages in thread
From: Simon Marchi @ 2013-01-22 0:54 UTC (permalink / raw)
To: cmetcalf; +Cc: linux-kernel, lttng-dev, Simon Marchi
This patch adds support for the TIF_SYSCALL_TRACEPOINT on the tile
architecture. Basically, it calls the appropriate tracepoints on syscall
entry and exit.
Signed-off-by: Simon Marchi <simon.marchi@polymtl.ca>
---
arch/tile/include/asm/thread_info.h | 8 ++++++++
arch/tile/kernel/intvec_64.S | 14 ++++++++++----
arch/tile/kernel/ptrace.c | 17 ++++++++++++++---
3 files changed, 32 insertions(+), 7 deletions(-)
diff --git a/arch/tile/include/asm/thread_info.h b/arch/tile/include/asm/thread_info.h
index e9c670d..c96331e 100644
--- a/arch/tile/include/asm/thread_info.h
+++ b/arch/tile/include/asm/thread_info.h
@@ -124,6 +124,7 @@ extern void _cpu_idle(void);
#define TIF_SECCOMP 6 /* secure computing */
#define TIF_MEMDIE 7 /* OOM killer at work */
#define TIF_NOTIFY_RESUME 8 /* callback before returning to user */
+#define TIF_SYSCALL_TRACEPOINT 9 /* syscall tracepoint instrumentation */
#define _TIF_SIGPENDING (1<<TIF_SIGPENDING)
#define _TIF_NEED_RESCHED (1<<TIF_NEED_RESCHED)
@@ -134,12 +135,19 @@ extern void _cpu_idle(void);
#define _TIF_SECCOMP (1<<TIF_SECCOMP)
#define _TIF_MEMDIE (1<<TIF_MEMDIE)
#define _TIF_NOTIFY_RESUME (1<<TIF_NOTIFY_RESUME)
+#define _TIF_SYSCALL_TRACEPOINT (1<<TIF_SYSCALL_TRACEPOINT)
/* Work to do on any return to user space. */
#define _TIF_ALLWORK_MASK \
(_TIF_SIGPENDING|_TIF_NEED_RESCHED|_TIF_SINGLESTEP|\
_TIF_ASYNC_TLB|_TIF_NOTIFY_RESUME)
+/* Work to do at syscall entry. */
+#define _TIF_SYSCALL_ENTRY_WORK (_TIF_SYSCALL_TRACE | _TIF_SYSCALL_TRACEPOINT)
+
+/* Work to do at syscall exit. */
+#define _TIF_SYSCALL_EXIT_WORK (_TIF_SYSCALL_TRACE | _TIF_SYSCALL_TRACEPOINT)
+
/*
* Thread-synchronous status.
*
diff --git a/arch/tile/kernel/intvec_64.S b/arch/tile/kernel/intvec_64.S
index fd78cd4..505e6d4 100644
--- a/arch/tile/kernel/intvec_64.S
+++ b/arch/tile/kernel/intvec_64.S
@@ -1000,8 +1000,11 @@ handle_syscall:
/* Trace syscalls, if requested. */
addi r31, r31, THREAD_INFO_FLAGS_OFFSET
- ld r30, r31
- andi r30, r30, _TIF_SYSCALL_TRACE
+ {
+ ld r30, r31
+ moveli r32, _TIF_SYSCALL_ENTRY_WORK
+ }
+ and r30, r30, r32
{
addi r30, r31, THREAD_INFO_STATUS_OFFSET - THREAD_INFO_FLAGS_OFFSET
beqzt r30, .Lrestore_syscall_regs
@@ -1070,8 +1073,11 @@ handle_syscall:
FEEDBACK_REENTER(handle_syscall)
/* Do syscall trace again, if requested. */
- ld r30, r31
- andi r0, r30, _TIF_SYSCALL_TRACE
+ {
+ ld r30, r31
+ moveli r32, _TIF_SYSCALL_EXIT_WORK
+ }
+ and r0, r30, r32
{
andi r0, r30, _TIF_SINGLESTEP
beqzt r0, 1f
diff --git a/arch/tile/kernel/ptrace.c b/arch/tile/kernel/ptrace.c
index 0ab8b76..363b2dd 100644
--- a/arch/tile/kernel/ptrace.c
+++ b/arch/tile/kernel/ptrace.c
@@ -25,6 +25,9 @@
#include <asm/traps.h>
#include <arch/chip.h>
+#define CREATE_TRACE_POINTS
+#include <trace/events/syscalls.h>
+
void user_enable_single_step(struct task_struct *child)
{
set_tsk_thread_flag(child, TIF_SINGLESTEP);
@@ -249,16 +252,24 @@ long compat_arch_ptrace(struct task_struct *child, compat_long_t request,
int do_syscall_trace_enter(struct pt_regs *regs)
{
- if (tracehook_report_syscall_entry(regs)) {
- regs->regs[TREG_SYSCALL_NR] = -1;
+ if (test_thread_flag(TIF_SYSCALL_TRACE)) {
+ if (tracehook_report_syscall_entry(regs))
+ regs->regs[TREG_SYSCALL_NR] = -1;
}
+ if (test_thread_flag(TIF_SYSCALL_TRACEPOINT))
+ trace_sys_enter(regs, regs->regs[TREG_SYSCALL_NR]);
+
return regs->regs[TREG_SYSCALL_NR];
}
void do_syscall_trace_exit(struct pt_regs *regs)
{
- tracehook_report_syscall_exit(regs, 0);
+ if (test_thread_flag(TIF_SYSCALL_TRACE))
+ tracehook_report_syscall_exit(regs, 0);
+
+ if (test_thread_flag(TIF_SYSCALL_TRACEPOINT))
+ trace_sys_exit(regs, regs->regs[TREG_SYSCALL_NR]);
}
void send_sigtrap(struct task_struct *tsk, struct pt_regs *regs, int error_code)
--
1.7.1
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH 3/4] tile: Add support for TIF_SYSCALL_TRACEPOINT
2013-01-22 0:54 [PATCH 1/4] tile: move declaration of sys_call_table to <asm/syscall.h> Simon Marchi
2013-01-22 0:54 ` [PATCH 2/4] tile: Add definition of NR_syscalls Simon Marchi
2013-01-22 0:54 ` [PATCH 3/4] tile: Add support for TIF_SYSCALL_TRACEPOINT Simon Marchi
@ 2013-01-22 0:54 ` Simon Marchi
2013-01-22 0:54 ` [PATCH 4/4] tile: select HAVE_SYSCALL_TRACEPOINTS Simon Marchi
2013-01-22 0:54 ` Simon Marchi
4 siblings, 0 replies; 10+ messages in thread
From: Simon Marchi @ 2013-01-22 0:54 UTC (permalink / raw)
To: cmetcalf; +Cc: lttng-dev, linux-kernel, Simon Marchi
This patch adds support for the TIF_SYSCALL_TRACEPOINT on the tile
architecture. Basically, it calls the appropriate tracepoints on syscall
entry and exit.
Signed-off-by: Simon Marchi <simon.marchi@polymtl.ca>
---
arch/tile/include/asm/thread_info.h | 8 ++++++++
arch/tile/kernel/intvec_64.S | 14 ++++++++++----
arch/tile/kernel/ptrace.c | 17 ++++++++++++++---
3 files changed, 32 insertions(+), 7 deletions(-)
diff --git a/arch/tile/include/asm/thread_info.h b/arch/tile/include/asm/thread_info.h
index e9c670d..c96331e 100644
--- a/arch/tile/include/asm/thread_info.h
+++ b/arch/tile/include/asm/thread_info.h
@@ -124,6 +124,7 @@ extern void _cpu_idle(void);
#define TIF_SECCOMP 6 /* secure computing */
#define TIF_MEMDIE 7 /* OOM killer at work */
#define TIF_NOTIFY_RESUME 8 /* callback before returning to user */
+#define TIF_SYSCALL_TRACEPOINT 9 /* syscall tracepoint instrumentation */
#define _TIF_SIGPENDING (1<<TIF_SIGPENDING)
#define _TIF_NEED_RESCHED (1<<TIF_NEED_RESCHED)
@@ -134,12 +135,19 @@ extern void _cpu_idle(void);
#define _TIF_SECCOMP (1<<TIF_SECCOMP)
#define _TIF_MEMDIE (1<<TIF_MEMDIE)
#define _TIF_NOTIFY_RESUME (1<<TIF_NOTIFY_RESUME)
+#define _TIF_SYSCALL_TRACEPOINT (1<<TIF_SYSCALL_TRACEPOINT)
/* Work to do on any return to user space. */
#define _TIF_ALLWORK_MASK \
(_TIF_SIGPENDING|_TIF_NEED_RESCHED|_TIF_SINGLESTEP|\
_TIF_ASYNC_TLB|_TIF_NOTIFY_RESUME)
+/* Work to do at syscall entry. */
+#define _TIF_SYSCALL_ENTRY_WORK (_TIF_SYSCALL_TRACE | _TIF_SYSCALL_TRACEPOINT)
+
+/* Work to do at syscall exit. */
+#define _TIF_SYSCALL_EXIT_WORK (_TIF_SYSCALL_TRACE | _TIF_SYSCALL_TRACEPOINT)
+
/*
* Thread-synchronous status.
*
diff --git a/arch/tile/kernel/intvec_64.S b/arch/tile/kernel/intvec_64.S
index fd78cd4..505e6d4 100644
--- a/arch/tile/kernel/intvec_64.S
+++ b/arch/tile/kernel/intvec_64.S
@@ -1000,8 +1000,11 @@ handle_syscall:
/* Trace syscalls, if requested. */
addi r31, r31, THREAD_INFO_FLAGS_OFFSET
- ld r30, r31
- andi r30, r30, _TIF_SYSCALL_TRACE
+ {
+ ld r30, r31
+ moveli r32, _TIF_SYSCALL_ENTRY_WORK
+ }
+ and r30, r30, r32
{
addi r30, r31, THREAD_INFO_STATUS_OFFSET - THREAD_INFO_FLAGS_OFFSET
beqzt r30, .Lrestore_syscall_regs
@@ -1070,8 +1073,11 @@ handle_syscall:
FEEDBACK_REENTER(handle_syscall)
/* Do syscall trace again, if requested. */
- ld r30, r31
- andi r0, r30, _TIF_SYSCALL_TRACE
+ {
+ ld r30, r31
+ moveli r32, _TIF_SYSCALL_EXIT_WORK
+ }
+ and r0, r30, r32
{
andi r0, r30, _TIF_SINGLESTEP
beqzt r0, 1f
diff --git a/arch/tile/kernel/ptrace.c b/arch/tile/kernel/ptrace.c
index 0ab8b76..363b2dd 100644
--- a/arch/tile/kernel/ptrace.c
+++ b/arch/tile/kernel/ptrace.c
@@ -25,6 +25,9 @@
#include <asm/traps.h>
#include <arch/chip.h>
+#define CREATE_TRACE_POINTS
+#include <trace/events/syscalls.h>
+
void user_enable_single_step(struct task_struct *child)
{
set_tsk_thread_flag(child, TIF_SINGLESTEP);
@@ -249,16 +252,24 @@ long compat_arch_ptrace(struct task_struct *child, compat_long_t request,
int do_syscall_trace_enter(struct pt_regs *regs)
{
- if (tracehook_report_syscall_entry(regs)) {
- regs->regs[TREG_SYSCALL_NR] = -1;
+ if (test_thread_flag(TIF_SYSCALL_TRACE)) {
+ if (tracehook_report_syscall_entry(regs))
+ regs->regs[TREG_SYSCALL_NR] = -1;
}
+ if (test_thread_flag(TIF_SYSCALL_TRACEPOINT))
+ trace_sys_enter(regs, regs->regs[TREG_SYSCALL_NR]);
+
return regs->regs[TREG_SYSCALL_NR];
}
void do_syscall_trace_exit(struct pt_regs *regs)
{
- tracehook_report_syscall_exit(regs, 0);
+ if (test_thread_flag(TIF_SYSCALL_TRACE))
+ tracehook_report_syscall_exit(regs, 0);
+
+ if (test_thread_flag(TIF_SYSCALL_TRACEPOINT))
+ trace_sys_exit(regs, regs->regs[TREG_SYSCALL_NR]);
}
void send_sigtrap(struct task_struct *tsk, struct pt_regs *regs, int error_code)
--
1.7.1
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH 4/4] tile: select HAVE_SYSCALL_TRACEPOINTS
2013-01-22 0:54 [PATCH 1/4] tile: move declaration of sys_call_table to <asm/syscall.h> Simon Marchi
` (2 preceding siblings ...)
2013-01-22 0:54 ` Simon Marchi
@ 2013-01-22 0:54 ` Simon Marchi
2013-01-22 20:23 ` Chris Metcalf
2013-01-22 0:54 ` Simon Marchi
4 siblings, 1 reply; 10+ messages in thread
From: Simon Marchi @ 2013-01-22 0:54 UTC (permalink / raw)
To: cmetcalf; +Cc: linux-kernel, lttng-dev, Simon Marchi
Signed-off-by: Simon Marchi <simon.marchi@polymtl.ca>
---
arch/tile/Kconfig | 1 +
1 files changed, 1 insertions(+), 0 deletions(-)
diff --git a/arch/tile/Kconfig b/arch/tile/Kconfig
index 8cab409..1adb853 100644
--- a/arch/tile/Kconfig
+++ b/arch/tile/Kconfig
@@ -22,6 +22,7 @@ config TILE
select GENERIC_CLOCKEVENTS
select MODULES_USE_ELF_RELA
select HAVE_ARCH_TRACEHOOK
+ select HAVE_SYSCALL_TRACEPOINTS
# FIXME: investigate whether we need/want these options.
# select HAVE_IOREMAP_PROT
--
1.7.1
^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [PATCH 4/4] tile: select HAVE_SYSCALL_TRACEPOINTS
2013-01-22 0:54 ` [PATCH 4/4] tile: select HAVE_SYSCALL_TRACEPOINTS Simon Marchi
@ 2013-01-22 20:23 ` Chris Metcalf
0 siblings, 0 replies; 10+ messages in thread
From: Chris Metcalf @ 2013-01-22 20:23 UTC (permalink / raw)
To: Simon Marchi; +Cc: linux-kernel, lttng-dev
On 1/21/2013 7:54 PM, Simon Marchi wrote:
> Signed-off-by: Simon Marchi <simon.marchi@polymtl.ca>
> ---
> arch/tile/Kconfig | 1 +
> 1 files changed, 1 insertions(+), 0 deletions(-)
Thanks!
I took the series of four patches into the tile tree for 3.9 (removing the parentheses around the definition of NR_syscalls).
--
Chris Metcalf, Tilera Corp.
http://www.tilera.com
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 4/4] tile: select HAVE_SYSCALL_TRACEPOINTS
@ 2013-01-22 20:23 ` Chris Metcalf
0 siblings, 0 replies; 10+ messages in thread
From: Chris Metcalf @ 2013-01-22 20:23 UTC (permalink / raw)
To: Simon Marchi; +Cc: linux-kernel, lttng-dev
On 1/21/2013 7:54 PM, Simon Marchi wrote:
> Signed-off-by: Simon Marchi <simon.marchi@polymtl.ca>
> ---
> arch/tile/Kconfig | 1 +
> 1 files changed, 1 insertions(+), 0 deletions(-)
Thanks!
I took the series of four patches into the tile tree for 3.9 (removing the parentheses around the definition of NR_syscalls).
--
Chris Metcalf, Tilera Corp.
http://www.tilera.com
^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH 4/4] tile: select HAVE_SYSCALL_TRACEPOINTS
2013-01-22 0:54 [PATCH 1/4] tile: move declaration of sys_call_table to <asm/syscall.h> Simon Marchi
` (3 preceding siblings ...)
2013-01-22 0:54 ` [PATCH 4/4] tile: select HAVE_SYSCALL_TRACEPOINTS Simon Marchi
@ 2013-01-22 0:54 ` Simon Marchi
4 siblings, 0 replies; 10+ messages in thread
From: Simon Marchi @ 2013-01-22 0:54 UTC (permalink / raw)
To: cmetcalf; +Cc: lttng-dev, linux-kernel, Simon Marchi
Signed-off-by: Simon Marchi <simon.marchi@polymtl.ca>
---
arch/tile/Kconfig | 1 +
1 files changed, 1 insertions(+), 0 deletions(-)
diff --git a/arch/tile/Kconfig b/arch/tile/Kconfig
index 8cab409..1adb853 100644
--- a/arch/tile/Kconfig
+++ b/arch/tile/Kconfig
@@ -22,6 +22,7 @@ config TILE
select GENERIC_CLOCKEVENTS
select MODULES_USE_ELF_RELA
select HAVE_ARCH_TRACEHOOK
+ select HAVE_SYSCALL_TRACEPOINTS
# FIXME: investigate whether we need/want these options.
# select HAVE_IOREMAP_PROT
--
1.7.1
^ permalink raw reply related [flat|nested] 10+ messages in thread