2014-02-06 00:59:41

by Ben Hutchings

[permalink] [raw]
Subject: [PATCH 0/3] Fix perf build breakages in 3.13

perf no longer compiles on powerpc and sparc due to changes in the trace
sub-command. This series fixes those compile errors; I compile-tested
in Debian sid on armhf, i386, powerpc and sparc.

I would much prefer not to revert the tty ioctl decoding but I think
it's going to take a much more sophisticated approach to do it right
across all supported architectures.

Ben.

Ben Hutchings (3):
Revert "perf trace: Initial beautifier for ioctl's 'cmd' arg"
perf trace: Add fallback definition of EFD_SEMAPHORE
perf trace: Decode architecture-specific signal numbers

tools/perf/builtin-trace.c | 48 ++++++++++++++--------------------------------
1 file changed, 14 insertions(+), 34 deletions(-)


--
Ben Hutchings
It is a miracle that curiosity survives formal education. - Albert Einstein


Attachments:
signature.asc (811.00 B)
This is a digitally signed message part

2014-02-06 01:00:34

by Ben Hutchings

[permalink] [raw]
Subject: [PATCH 1/3] Revert "perf trace: Initial beautifier for ioctl's 'cmd' arg"

This reverts commit 78645cf3ed32860a3e83b8e35aa469f5b844a4ba,
which is incorrect for many architectures and has broken
compilation on at least powerpc and sparc.

Signed-off-by: Ben Hutchings <[email protected]>
Cc: <[email protected]>
---
tools/perf/builtin-trace.c | 34 +---------------------------------
1 file changed, 1 insertion(+), 33 deletions(-)

diff --git a/tools/perf/builtin-trace.c b/tools/perf/builtin-trace.c
index 8be17fc..c9671bd 100644
--- a/tools/perf/builtin-trace.c
+++ b/tools/perf/builtin-trace.c
@@ -275,14 +275,6 @@ static size_t syscall_arg__scnprintf_strarray(char *bf, size_t size,

#define SCA_STRARRAY syscall_arg__scnprintf_strarray

-static size_t syscall_arg__scnprintf_strhexarray(char *bf, size_t size,
- struct syscall_arg *arg)
-{
- return __syscall_arg__scnprintf_strarray(bf, size, "%#x", arg);
-}
-
-#define SCA_STRHEXARRAY syscall_arg__scnprintf_strhexarray
-
static size_t syscall_arg__scnprintf_fd(char *bf, size_t size,
struct syscall_arg *arg);

@@ -835,28 +827,6 @@ static size_t syscall_arg__scnprintf_signum(char *bf, size_t size, struct syscal

#define SCA_SIGNUM syscall_arg__scnprintf_signum

-#define TCGETS 0x5401
-
-static const char *tioctls[] = {
- "TCGETS", "TCSETS", "TCSETSW", "TCSETSF", "TCGETA", "TCSETA", "TCSETAW",
- "TCSETAF", "TCSBRK", "TCXONC", "TCFLSH", "TIOCEXCL", "TIOCNXCL",
- "TIOCSCTTY", "TIOCGPGRP", "TIOCSPGRP", "TIOCOUTQ", "TIOCSTI",
- "TIOCGWINSZ", "TIOCSWINSZ", "TIOCMGET", "TIOCMBIS", "TIOCMBIC",
- "TIOCMSET", "TIOCGSOFTCAR", "TIOCSSOFTCAR", "FIONREAD", "TIOCLINUX",
- "TIOCCONS", "TIOCGSERIAL", "TIOCSSERIAL", "TIOCPKT", "FIONBIO",
- "TIOCNOTTY", "TIOCSETD", "TIOCGETD", "TCSBRKP", [0x27] = "TIOCSBRK",
- "TIOCCBRK", "TIOCGSID", "TCGETS2", "TCSETS2", "TCSETSW2", "TCSETSF2",
- "TIOCGRS485", "TIOCSRS485", "TIOCGPTN", "TIOCSPTLCK",
- "TIOCGDEV||TCGETX", "TCSETX", "TCSETXF", "TCSETXW", "TIOCSIG",
- "TIOCVHANGUP", "TIOCGPKT", "TIOCGPTLCK", "TIOCGEXCL",
- [0x50] = "FIONCLEX", "FIOCLEX", "FIOASYNC", "TIOCSERCONFIG",
- "TIOCSERGWILD", "TIOCSERSWILD", "TIOCGLCKTRMIOS", "TIOCSLCKTRMIOS",
- "TIOCSERGSTRUCT", "TIOCSERGETLSR", "TIOCSERGETMULTI", "TIOCSERSETMULTI",
- "TIOCMIWAIT", "TIOCGICOUNT", [0x60] = "FIOQSIZE",
-};
-
-static DEFINE_STRARRAY_OFFSET(tioctls, 0x5401);
-
#define STRARRAY(arg, name, array) \
.arg_scnprintf = { [arg] = SCA_STRARRAY, }, \
.arg_parm = { [arg] = &strarray__##array, }
@@ -937,9 +907,7 @@ static struct syscall_fmt {
{ .name = "getrlimit", .errmsg = true, STRARRAY(0, resource, rlimit_resources), },
{ .name = "ioctl", .errmsg = true,
.arg_scnprintf = { [0] = SCA_FD, /* fd */
- [1] = SCA_STRHEXARRAY, /* cmd */
- [2] = SCA_HEX, /* arg */ },
- .arg_parm = { [1] = &strarray__tioctls, /* cmd */ }, },
+ [2] = SCA_HEX, /* arg */ }, },
{ .name = "kill", .errmsg = true,
.arg_scnprintf = { [1] = SCA_SIGNUM, /* sig */ }, },
{ .name = "linkat", .errmsg = true,


--
Ben Hutchings
It is a miracle that curiosity survives formal education. - Albert Einstein


Attachments:
signature.asc (811.00 B)
This is a digitally signed message part

2014-02-06 01:00:44

by Ben Hutchings

[permalink] [raw]
Subject: [PATCH 2/3] perf trace: Add fallback definition of EFD_SEMAPHORE

glibc 2.17 is missing this on sparc, despite the fact that it's
not architecture-specific.

Fixes: 49af9e93adfa ('perf trace: Beautify eventfd2 'flags' arg')
Signed-off-by: Ben Hutchings <[email protected]>
Cc: <[email protected]>
---
tools/perf/builtin-trace.c | 4 ++++
1 file changed, 4 insertions(+)

diff --git a/tools/perf/builtin-trace.c b/tools/perf/builtin-trace.c
index c9671bd..5c32dcf 100644
--- a/tools/perf/builtin-trace.c
+++ b/tools/perf/builtin-trace.c
@@ -35,6 +35,10 @@
# define MADV_UNMERGEABLE 13
#endif

+#ifndef EFD_SEMAPHORE
+# define EFD_SEMAPHORE 1
+#endif
+
struct tp_field {
int offset;
union {


--
Ben Hutchings
It is a miracle that curiosity survives formal education. - Albert Einstein


Attachments:
signature.asc (811.00 B)
This is a digitally signed message part

2014-02-06 01:00:52

by Ben Hutchings

[permalink] [raw]
Subject: [PATCH 3/3] perf trace: Decode architecture-specific signal numbers

SIGSTKFLT is not defined on alpha, mips or sparc.
SIGEMT and SIGSWI are defined on some architectures and should be
decoded here if so.

Fixes: 8bad5b0abfdb ('perf trace: Beautify signal number arg in several syscalls')
Signed-off-by: Ben Hutchings <[email protected]>
Cc: <[email protected]>
---
tools/perf/builtin-trace.c | 10 +++++++++-
1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/tools/perf/builtin-trace.c b/tools/perf/builtin-trace.c
index 5c32dcf..25ea64c 100644
--- a/tools/perf/builtin-trace.c
+++ b/tools/perf/builtin-trace.c
@@ -807,7 +807,6 @@ static size_t syscall_arg__scnprintf_signum(char *bf, size_t size, struct syscal
P_SIGNUM(PIPE);
P_SIGNUM(ALRM);
P_SIGNUM(TERM);
- P_SIGNUM(STKFLT);
P_SIGNUM(CHLD);
P_SIGNUM(CONT);
P_SIGNUM(STOP);
@@ -823,6 +822,15 @@ static size_t syscall_arg__scnprintf_signum(char *bf, size_t size, struct syscal
P_SIGNUM(IO);
P_SIGNUM(PWR);
P_SIGNUM(SYS);
+#ifdef SIGEMT
+ P_SIGNUM(EMT);
+#endif
+#ifdef SIGSTKFLT
+ P_SIGNUM(STKFLT);
+#endif
+#ifdef SIGSWI
+ P_SIGNUM(SWI);
+#endif
default: break;
}


--
Ben Hutchings
It is a miracle that curiosity survives formal education. - Albert Einstein


Attachments:
signature.asc (811.00 B)
This is a digitally signed message part

2014-02-06 13:41:13

by Arnaldo Carvalho de Melo

[permalink] [raw]
Subject: Re: [PATCH 0/3] Fix perf build breakages in 3.13

Em Thu, Feb 06, 2014 at 12:59:21AM +0000, Ben Hutchings escreveu:
> perf no longer compiles on powerpc and sparc due to changes in the trace
> sub-command. This series fixes those compile errors; I compile-tested
> in Debian sid on armhf, i386, powerpc and sparc.
>
> I would much prefer not to revert the tty ioctl decoding but I think
> it's going to take a much more sophisticated approach to do it right
> across all supported architectures.

Not a problem, we can work on that later, applying your series, thanks.

- Arnaldo

> Ben.
>
> Ben Hutchings (3):
> Revert "perf trace: Initial beautifier for ioctl's 'cmd' arg"
> perf trace: Add fallback definition of EFD_SEMAPHORE
> perf trace: Decode architecture-specific signal numbers
>
> tools/perf/builtin-trace.c | 48 ++++++++++++++--------------------------------
> 1 file changed, 14 insertions(+), 34 deletions(-)
>
>
> --
> Ben Hutchings
> It is a miracle that curiosity survives formal education. - Albert Einstein

2014-02-06 13:48:26

by Arnaldo Carvalho de Melo

[permalink] [raw]
Subject: Re: [PATCH 0/3] Fix perf build breakages in 3.13

Em Thu, Feb 06, 2014 at 12:59:21AM +0000, Ben Hutchings escreveu:
> perf no longer compiles on powerpc and sparc due to changes in the trace
> sub-command. This series fixes those compile errors; I compile-tested
> in Debian sid on armhf, i386, powerpc and sparc.
>
> I would much prefer not to revert the tty ioctl decoding but I think
> it's going to take a much more sophisticated approach to do it right
> across all supported architectures.

Second thought on the revert one:

Do you have a problem of switching the big hammer to one that makes this
work just on x86/x86-64?

That way at least those on these arches can have this while the correct
solution is worked out.

- Arnaldo

> Ben.
>
> Ben Hutchings (3):
> Revert "perf trace: Initial beautifier for ioctl's 'cmd' arg"
> perf trace: Add fallback definition of EFD_SEMAPHORE
> perf trace: Decode architecture-specific signal numbers
>
> tools/perf/builtin-trace.c | 48 ++++++++++++++--------------------------------
> 1 file changed, 14 insertions(+), 34 deletions(-)
>
>
> --
> Ben Hutchings
> It is a miracle that curiosity survives formal education. - Albert Einstein

2014-02-06 14:13:37

by Ben Hutchings

[permalink] [raw]
Subject: Re: [PATCH 0/3] Fix perf build breakages in 3.13

On Thu, 2014-02-06 at 10:48 -0300, Arnaldo Carvalho de Melo wrote:
> Em Thu, Feb 06, 2014 at 12:59:21AM +0000, Ben Hutchings escreveu:
> > perf no longer compiles on powerpc and sparc due to changes in the trace
> > sub-command. This series fixes those compile errors; I compile-tested
> > in Debian sid on armhf, i386, powerpc and sparc.
> >
> > I would much prefer not to revert the tty ioctl decoding but I think
> > it's going to take a much more sophisticated approach to do it right
> > across all supported architectures.
>
> Second thought on the revert one:
>
> Do you have a problem of switching the big hammer to one that makes this
> work just on x86/x86-64?

That seems reasonable as a temporary measure.

Ben.

> That way at least those on these arches can have this while the correct
> solution is worked out.
>
> - Arnaldo
>
> > Ben.
> >
> > Ben Hutchings (3):
> > Revert "perf trace: Initial beautifier for ioctl's 'cmd' arg"
> > perf trace: Add fallback definition of EFD_SEMAPHORE
> > perf trace: Decode architecture-specific signal numbers
> >
> > tools/perf/builtin-trace.c | 48 ++++++++++++++--------------------------------
> > 1 file changed, 14 insertions(+), 34 deletions(-)
> >
> >
> > --
> > Ben Hutchings
> > It is a miracle that curiosity survives formal education. - Albert Einstein
>
>

--
Ben Hutchings
It is a miracle that curiosity survives formal education. - Albert Einstein


Attachments:
signature.asc (811.00 B)
This is a digitally signed message part

2014-02-06 14:40:12

by Arnaldo Carvalho de Melo

[permalink] [raw]
Subject: Re: [PATCH 0/3] Fix perf build breakages in 3.13

Em Thu, Feb 06, 2014 at 02:13:15PM +0000, Ben Hutchings escreveu:
> On Thu, 2014-02-06 at 10:48 -0300, Arnaldo Carvalho de Melo wrote:
> > Em Thu, Feb 06, 2014 at 12:59:21AM +0000, Ben Hutchings escreveu:
> > > perf no longer compiles on powerpc and sparc due to changes in the trace
> > > sub-command. This series fixes those compile errors; I compile-tested
> > > in Debian sid on armhf, i386, powerpc and sparc.
> > >
> > > I would much prefer not to revert the tty ioctl decoding but I think
> > > it's going to take a much more sophisticated approach to do it right
> > > across all supported architectures.
> >
> > Second thought on the revert one:
> >
> > Do you have a problem of switching the big hammer to one that makes this
> > work just on x86/x86-64?
>
> That seems reasonable as a temporary measure.

Thank you, I'll do that then and hope to work on the right fix in the
near future, if nobody does it first.

- Arnaldo

> Ben.
>
> > That way at least those on these arches can have this while the correct
> > solution is worked out.
> >
> > - Arnaldo
> >
> > > Ben.
> > >
> > > Ben Hutchings (3):
> > > Revert "perf trace: Initial beautifier for ioctl's 'cmd' arg"
> > > perf trace: Add fallback definition of EFD_SEMAPHORE
> > > perf trace: Decode architecture-specific signal numbers
> > >
> > > tools/perf/builtin-trace.c | 48 ++++++++++++++--------------------------------
> > > 1 file changed, 14 insertions(+), 34 deletions(-)
> > >
> > >
> > > --
> > > Ben Hutchings
> > > It is a miracle that curiosity survives formal education. - Albert Einstein
> >
> >
>
> --
> Ben Hutchings
> It is a miracle that curiosity survives formal education. - Albert Einstein

2014-02-10 17:52:35

by Arnaldo Carvalho de Melo

[permalink] [raw]
Subject: Re: [PATCH 0/3] Fix perf build breakages in 3.13

Em Thu, Feb 06, 2014 at 02:13:15PM +0000, Ben Hutchings escreveu:
> On Thu, 2014-02-06 at 10:48 -0300, Arnaldo Carvalho de Melo wrote:
> > Em Thu, Feb 06, 2014 at 12:59:21AM +0000, Ben Hutchings escreveu:
> > > perf no longer compiles on powerpc and sparc due to changes in the trace
> > > sub-command. This series fixes those compile errors; I compile-tested
> > > in Debian sid on armhf, i386, powerpc and sparc.
> > >
> > > I would much prefer not to revert the tty ioctl decoding but I think
> > > it's going to take a much more sophisticated approach to do it right
> > > across all supported architectures.
> >
> > Second thought on the revert one:
> >
> > Do you have a problem of switching the big hammer to one that makes this
> > work just on x86/x86-64?
>
> That seems reasonable as a temporary measure.

Applying this to my perf/urgent branch, ack?

- Arnaldo

commit 57f7077f41104c5499a89803f58b5886ee51555f
Author: Arnaldo Carvalho de Melo <[email protected]>
Date: Mon Feb 10 14:09:48 2014 -0300

perf trace: Fix ioctl 'request' beautifier build problems on !(i386 || x86_64) arches

Supporting decoding the ioctl 'request' parameter needs more work to
properly support more architectures, the current approach doesn't work
on at least powerpc and sparc, as reported by Ben Hutchings in
http://lkml.kernel.org/r/[email protected] .

Work around that by making it to be ifdefed for the architectures known
to work with the current, limited approach, i386 and x86_64 till better
code is written.

Reported-by: Ben Hutchings <[email protected]>
Cc: Adrian Hunter <[email protected]>
Cc: David Ahern <[email protected]>
Cc: Frederic Weisbecker <[email protected]>
Cc: Jiri Olsa <[email protected]>
Cc: Mike Galbraith <[email protected]>
Cc: Namhyung Kim <[email protected]>
Cc: Paul Mackerras <[email protected]>
Cc: Peter Zijlstra <[email protected]>
Cc: Stephane Eranian <[email protected]>
Link: http://lkml.kernel.org/n/[email protected]
Signed-off-by: Arnaldo Carvalho de Melo <[email protected]>

diff --git a/tools/perf/builtin-trace.c b/tools/perf/builtin-trace.c
index 619d11c47a91..6aa6fb6f7bd9 100644
--- a/tools/perf/builtin-trace.c
+++ b/tools/perf/builtin-trace.c
@@ -283,6 +283,11 @@ static size_t syscall_arg__scnprintf_strarray(char *bf, size_t size,

#define SCA_STRARRAY syscall_arg__scnprintf_strarray

+#if defined(__i386__) || defined(__x86_64__)
+/*
+ * FIXME: Make this available to all arches as soon as the ioctl beautifier
+ * gets rewritten to support all arches.
+ */
static size_t syscall_arg__scnprintf_strhexarray(char *bf, size_t size,
struct syscall_arg *arg)
{
@@ -290,6 +295,7 @@ static size_t syscall_arg__scnprintf_strhexarray(char *bf, size_t size,
}

#define SCA_STRHEXARRAY syscall_arg__scnprintf_strhexarray
+#endif /* defined(__i386__) || defined(__x86_64__) */

static size_t syscall_arg__scnprintf_fd(char *bf, size_t size,
struct syscall_arg *arg);
@@ -843,6 +849,10 @@ static size_t syscall_arg__scnprintf_signum(char *bf, size_t size, struct syscal

#define SCA_SIGNUM syscall_arg__scnprintf_signum

+#if defined(__i386__) || defined(__x86_64__)
+/*
+ * FIXME: Make this available to all arches.
+ */
#define TCGETS 0x5401

static const char *tioctls[] = {
@@ -864,6 +874,7 @@ static const char *tioctls[] = {
};

static DEFINE_STRARRAY_OFFSET(tioctls, 0x5401);
+#endif /* defined(__i386__) || defined(__x86_64__) */

#define STRARRAY(arg, name, array) \
.arg_scnprintf = { [arg] = SCA_STRARRAY, }, \
@@ -945,9 +956,16 @@ static struct syscall_fmt {
{ .name = "getrlimit", .errmsg = true, STRARRAY(0, resource, rlimit_resources), },
{ .name = "ioctl", .errmsg = true,
.arg_scnprintf = { [0] = SCA_FD, /* fd */
+#if defined(__i386__) || defined(__x86_64__)
+/*
+ * FIXME: Make this available to all arches.
+ */
[1] = SCA_STRHEXARRAY, /* cmd */
[2] = SCA_HEX, /* arg */ },
.arg_parm = { [1] = &strarray__tioctls, /* cmd */ }, },
+#else
+ [2] = SCA_HEX, /* arg */ }, },
+#endif
{ .name = "kill", .errmsg = true,
.arg_scnprintf = { [1] = SCA_SIGNUM, /* sig */ }, },
{ .name = "linkat", .errmsg = true,

2014-02-10 21:32:26

by Ben Hutchings

[permalink] [raw]
Subject: Re: [PATCH 0/3] Fix perf build breakages in 3.13

On Mon, 2014-02-10 at 14:52 -0300, Arnaldo Carvalho de Melo wrote:
> Em Thu, Feb 06, 2014 at 02:13:15PM +0000, Ben Hutchings escreveu:
> > On Thu, 2014-02-06 at 10:48 -0300, Arnaldo Carvalho de Melo wrote:
> > > Em Thu, Feb 06, 2014 at 12:59:21AM +0000, Ben Hutchings escreveu:
> > > > perf no longer compiles on powerpc and sparc due to changes in the trace
> > > > sub-command. This series fixes those compile errors; I compile-tested
> > > > in Debian sid on armhf, i386, powerpc and sparc.
> > > >
> > > > I would much prefer not to revert the tty ioctl decoding but I think
> > > > it's going to take a much more sophisticated approach to do it right
> > > > across all supported architectures.
> > >
> > > Second thought on the revert one:
> > >
> > > Do you have a problem of switching the big hammer to one that makes this
> > > work just on x86/x86-64?
> >
> > That seems reasonable as a temporary measure.
>
> Applying this to my perf/urgent branch, ack?
>
> - Arnaldo
>
> commit 57f7077f41104c5499a89803f58b5886ee51555f
> Author: Arnaldo Carvalho de Melo <[email protected]>
> Date: Mon Feb 10 14:09:48 2014 -0300
>
> perf trace: Fix ioctl 'request' beautifier build problems on !(i386 || x86_64) arches
>
> Supporting decoding the ioctl 'request' parameter needs more work to
> properly support more architectures, the current approach doesn't work
> on at least powerpc and sparc, as reported by Ben Hutchings in
> http://lkml.kernel.org/r/[email protected] .
>
> Work around that by making it to be ifdefed for the architectures known
> to work with the current, limited approach, i386 and x86_64 till better
> code is written.
>
> Reported-by: Ben Hutchings <[email protected]>
> Cc: Adrian Hunter <[email protected]>
> Cc: David Ahern <[email protected]>
> Cc: Frederic Weisbecker <[email protected]>
> Cc: Jiri Olsa <[email protected]>
> Cc: Mike Galbraith <[email protected]>
> Cc: Namhyung Kim <[email protected]>
> Cc: Paul Mackerras <[email protected]>
> Cc: Peter Zijlstra <[email protected]>
> Cc: Stephane Eranian <[email protected]>
[...]

Please add:

Cc: <[email protected]> # 3.13
Fixes: 78645cf3ed32 ("perf trace: Initial beautifier for ioctl's 'cmd' arg")

Ben.

--
Ben Hutchings
We get into the habit of living before acquiring the habit of thinking.
- Albert Camus


Attachments:
signature.asc (811.00 B)
This is a digitally signed message part
Subject: [tip:perf/core] perf trace: Add fallback definition of EFD_SEMAPHORE

Commit-ID: 79d26a6a19ace19faabf8d8d27d3430be2e26d34
Gitweb: http://git.kernel.org/tip/79d26a6a19ace19faabf8d8d27d3430be2e26d34
Author: Ben Hutchings <[email protected]>
AuthorDate: Thu, 6 Feb 2014 01:00:35 +0000
Committer: Arnaldo Carvalho de Melo <[email protected]>
CommitDate: Mon, 10 Feb 2014 11:34:31 -0300

perf trace: Add fallback definition of EFD_SEMAPHORE

glibc 2.17 is missing this on sparc, despite the fact that it's not
architecture-specific.

Signed-off-by: Ben Hutchings <[email protected]>
Fixes: 49af9e93adfa ('perf trace: Beautify eventfd2 'flags' arg')
Cc: <[email protected]>
Cc: Ingo Molnar <[email protected]>
Cc: Paul Mackerras <[email protected]>
Cc: Peter Zijlstra <[email protected]>
Cc: [email protected]
Link: http://lkml.kernel.org/r/[email protected]
Signed-off-by: Arnaldo Carvalho de Melo <[email protected]>
---
tools/perf/builtin-trace.c | 4 ++++
1 file changed, 4 insertions(+)

diff --git a/tools/perf/builtin-trace.c b/tools/perf/builtin-trace.c
index 896f270..619d11c 100644
--- a/tools/perf/builtin-trace.c
+++ b/tools/perf/builtin-trace.c
@@ -37,6 +37,10 @@
# define MADV_UNMERGEABLE 13
#endif

+#ifndef EFD_SEMAPHORE
+# define EFD_SEMAPHORE 1
+#endif
+
struct tp_field {
int offset;
union {