[GIT,PULL] tracing/tooling: Fixes for v6.8-rc4
Commit Message
Linus,
Tracing tooling updates for 6.8-rc4:
RTLA:
- rtla tools are exiting with a positive value when usage()
is called. Make them return 0 if the usage was called via
-h/--help.
- the -P priority sets the sched priority for rtla workload.
When the SCHED_OTHER scheduler is selected, it sets
the rt_priority instead of the nice parameter. Setting
the nice value is the correct thing, so fix it.
- rtla is failing to compile with clang due to unsupported
options from gcc. Adjusting the compiler/linker options
makes clang work properly.
- Remove the sched_getattr() unused function on utils.c.
- Fixes on variable initialization and size, reported by
clang.
Verification:
- rv is failing to compile with clang due to unsupported
options from gcc. Adjusting the compiler/linker options
makes clang work properly.
- Fix an uninitialized variable on in_kernel.c reported by
clang.
Please pull the latest trace-tools-v6.8-rc4 tree, which can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/trace/linux-trace.git
trace-tools-v6.8-rc4
Tag SHA1: 43f245e8613c3a071441ab907842c1b9b7812ee1
Head SHA1: b5f319360371087d52070d8f3fc7789e80ce69a6
Daniel Bristot de Oliveira (6):
tools/rtla: Fix Makefile compiler options for clang
tools/rtla: Fix uninitialized bucket/data->bucket_size warning
tools/rtla: Fix clang warning about mount_point var size
tools/rtla: Remove unused sched_getattr() function
tools/rv: Fix Makefile compiler options for clang
tools/rv: Fix curr_reactor uninitialized variable
John Kacur (1):
tools/rtla: Exit with EXIT_SUCCESS when help is invoked
limingming3 (1):
tools/rtla: Replace setting prio with nice for SCHED_OTHER
----
tools/tracing/rtla/Makefile | 7 ++++++-
tools/tracing/rtla/src/osnoise_hist.c | 9 ++++++---
tools/tracing/rtla/src/osnoise_top.c | 6 +++++-
tools/tracing/rtla/src/timerlat_hist.c | 9 ++++++---
tools/tracing/rtla/src/timerlat_top.c | 6 +++++-
tools/tracing/rtla/src/utils.c | 14 ++++----------
tools/tracing/rtla/src/utils.h | 2 ++
tools/verification/rv/Makefile | 7 ++++++-
tools/verification/rv/src/in_kernel.c | 2 +-
9 files changed, 41 insertions(+), 21 deletions(-)
---------------------------
Comments
On Mon, 12 Feb 2024 at 14:00, Steven Rostedt <rostedt@goodmis.org> wrote:
>
> Tracing tooling updates for 6.8-rc4:
Bah. I've pulled this, but since I did a new system install due to a
disk upgrade some time ago, I once again don't have libtracefs-devel
installed.
And guess what? The dependency rules are - once again - completely
broken, and trying to build this gets the bad old unhelpful error
latency-collector.c:26:10: fatal error: tracefs.h: No such file or directory
with no help for the user.
Yes, I know what to do. That isn't the point. And no, this isn't new
to this pull request, it's just that on this machine I haven't tried
building the tracing tools in a while.
Let's not make the user experience for people who want to do kernel
builds any worse than it has to be.
Side note: instead of the (clearly broken) special Makefile rules, can
you please just take a look at the perf code instead? In fact, maybe
it's time for the kernel tooling people to try to unify and come to an
agreement about these things, and share more of the code.
Because unlike the tracing tools, the perf tools seem to generally get
this part of the build system right, despite (or probably due to)
having a lot *more* (and more complex) library dependencies.
Linus
The pull request you sent on Mon, 12 Feb 2024 17:01:07 -0500:
> git://git.kernel.org/pub/scm/linux/kernel/git/trace/linux-trace.git trace-tools-v6.8-rc4
has been merged into torvalds/linux.git:
https://git.kernel.org/torvalds/c/7e90b5c295ec1e47c8ad865429f046970c549a66
Thank you!
On Tue, 13 Feb 2024 09:32:26 -0800
Linus Torvalds <torvalds@linux-foundation.org> wrote:
> On Mon, 12 Feb 2024 at 14:00, Steven Rostedt <rostedt@goodmis.org> wrote:
> >
> > Tracing tooling updates for 6.8-rc4:
>
> Bah. I've pulled this, but since I did a new system install due to a
> disk upgrade some time ago, I once again don't have libtracefs-devel
> installed.
>
> And guess what? The dependency rules are - once again - completely
> broken, and trying to build this gets the bad old unhelpful error
>
> latency-collector.c:26:10: fatal error: tracefs.h: No such file or directory
>
Hmm, that's not from this pull request. But still needs to be fixed.
> with no help for the user.
>
> Yes, I know what to do. That isn't the point. And no, this isn't new
> to this pull request, it's just that on this machine I haven't tried
> building the tracing tools in a while.
>
> Let's not make the user experience for people who want to do kernel
> builds any worse than it has to be.
>
> Side note: instead of the (clearly broken) special Makefile rules, can
> you please just take a look at the perf code instead? In fact, maybe
> it's time for the kernel tooling people to try to unify and come to an
> agreement about these things, and share more of the code.
>
> Because unlike the tracing tools, the perf tools seem to generally get
> this part of the build system right, despite (or probably due to)
> having a lot *more* (and more complex) library dependencies.
Daniel is mostly maintaining this work.
Daniel, can you talk with Arnaldo and be able to collaborate with him on
consolidating the build process?
I'm even fine if this starts going through Arnaldo's tree as I'm not really
using it for my work anymore. I just did a smoke test, but as I have the
necessary libraries, it didn't fail for me.
Thanks!
-- Steve
On 2/13/24 18:48, Steven Rostedt wrote:
> On Tue, 13 Feb 2024 09:32:26 -0800
> Linus Torvalds <torvalds@linux-foundation.org> wrote:
>
>> On Mon, 12 Feb 2024 at 14:00, Steven Rostedt <rostedt@goodmis.org> wrote:
>>>
>>> Tracing tooling updates for 6.8-rc4:
>>
>> Bah. I've pulled this, but since I did a new system install due to a
>> disk upgrade some time ago, I once again don't have libtracefs-devel
>> installed.
>>
>> And guess what? The dependency rules are - once again - completely
>> broken, and trying to build this gets the bad old unhelpful error
>>
>> latency-collector.c:26:10: fatal error: tracefs.h: No such file or directory
>>
>
> Hmm, that's not from this pull request. But still needs to be fixed.
I did not catch that because it is in the tracing dir, but not on rtla. It is an old
sample code, still... bad it was not covered. Sorry for that :-(.
>
>> with no help for the user.
>>
>> Yes, I know what to do. That isn't the point. And no, this isn't new
>> to this pull request, it's just that on this machine I haven't tried
>> building the tracing tools in a while.
>>
>> Let's not make the user experience for people who want to do kernel
>> builds any worse than it has to be.
>>
>> Side note: instead of the (clearly broken) special Makefile rules, can
>> you please just take a look at the perf code instead? In fact, maybe
>> it's time for the kernel tooling people to try to unify and come to an
>> agreement about these things, and share more of the code.
>>
>> Because unlike the tracing tools, the perf tools seem to generally get
>> this part of the build system right, despite (or probably due to)
>> having a lot *more* (and more complex) library dependencies.
>
> Daniel is mostly maintaining this work.
>
> Daniel, can you talk with Arnaldo and be able to collaborate with him on
> consolidating the build process?
Sure, I have a good relation with Arnaldo, and he is aware of my work as well.
-- Daniel
@@ -28,10 +28,15 @@ FOPTS := -flto=auto -ffat-lto-objects -fexceptions -fstack-protector-strong \
-fasynchronous-unwind-tables -fstack-clash-protection
WOPTS := -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -Wno-maybe-uninitialized
+ifeq ($(CC),clang)
+ FOPTS := $(filter-out -ffat-lto-objects, $(FOPTS))
+ WOPTS := $(filter-out -Wno-maybe-uninitialized, $(WOPTS))
+endif
+
TRACEFS_HEADERS := $$($(PKG_CONFIG) --cflags libtracefs)
CFLAGS := -O -g -DVERSION=\"$(VERSION)\" $(FOPTS) $(MOPTS) $(WOPTS) $(TRACEFS_HEADERS) $(EXTRA_CFLAGS)
-LDFLAGS := -ggdb $(EXTRA_LDFLAGS)
+LDFLAGS := -flto=auto -ggdb $(EXTRA_LDFLAGS)
LIBS := $$($(PKG_CONFIG) --libs libtracefs)
SRC := $(wildcard src/*.c)
@@ -135,8 +135,7 @@ static void osnoise_hist_update_multiple(struct osnoise_tool *tool, int cpu,
if (params->output_divisor)
duration = duration / params->output_divisor;
- if (data->bucket_size)
- bucket = duration / data->bucket_size;
+ bucket = duration / data->bucket_size;
total_duration = duration * count;
@@ -480,7 +479,11 @@ static void osnoise_hist_usage(char *usage)
for (i = 0; msg[i]; i++)
fprintf(stderr, "%s\n", msg[i]);
- exit(1);
+
+ if (usage)
+ exit(EXIT_FAILURE);
+
+ exit(EXIT_SUCCESS);
}
/*
@@ -331,7 +331,11 @@ static void osnoise_top_usage(struct osnoise_top_params *params, char *usage)
for (i = 0; msg[i]; i++)
fprintf(stderr, "%s\n", msg[i]);
- exit(1);
+
+ if (usage)
+ exit(EXIT_FAILURE);
+
+ exit(EXIT_SUCCESS);
}
/*
@@ -178,8 +178,7 @@ timerlat_hist_update(struct osnoise_tool *tool, int cpu,
if (params->output_divisor)
latency = latency / params->output_divisor;
- if (data->bucket_size)
- bucket = latency / data->bucket_size;
+ bucket = latency / data->bucket_size;
if (!context) {
hist = data->hist[cpu].irq;
@@ -546,7 +545,11 @@ static void timerlat_hist_usage(char *usage)
for (i = 0; msg[i]; i++)
fprintf(stderr, "%s\n", msg[i]);
- exit(1);
+
+ if (usage)
+ exit(EXIT_FAILURE);
+
+ exit(EXIT_SUCCESS);
}
/*
@@ -375,7 +375,11 @@ static void timerlat_top_usage(char *usage)
for (i = 0; msg[i]; i++)
fprintf(stderr, "%s\n", msg[i]);
- exit(1);
+
+ if (usage)
+ exit(EXIT_FAILURE);
+
+ exit(EXIT_SUCCESS);
}
/*
@@ -238,12 +238,6 @@ static inline int sched_setattr(pid_t pid, const struct sched_attr *attr,
return syscall(__NR_sched_setattr, pid, attr, flags);
}
-static inline int sched_getattr(pid_t pid, struct sched_attr *attr,
- unsigned int size, unsigned int flags)
-{
- return syscall(__NR_sched_getattr, pid, attr, size, flags);
-}
-
int __set_sched_attr(int pid, struct sched_attr *attr)
{
int flags = 0;
@@ -479,13 +473,13 @@ int parse_prio(char *arg, struct sched_attr *sched_param)
if (prio == INVALID_VAL)
return -1;
- if (prio < sched_get_priority_min(SCHED_OTHER))
+ if (prio < MIN_NICE)
return -1;
- if (prio > sched_get_priority_max(SCHED_OTHER))
+ if (prio > MAX_NICE)
return -1;
sched_param->sched_policy = SCHED_OTHER;
- sched_param->sched_priority = prio;
+ sched_param->sched_nice = prio;
break;
default:
return -1;
@@ -536,7 +530,7 @@ int set_cpu_dma_latency(int32_t latency)
*/
static const int find_mount(const char *fs, char *mp, int sizeof_mp)
{
- char mount_point[MAX_PATH];
+ char mount_point[MAX_PATH+1];
char type[100];
int found = 0;
FILE *fp;
@@ -9,6 +9,8 @@
*/
#define BUFF_U64_STR_SIZE 24
#define MAX_PATH 1024
+#define MAX_NICE 20
+#define MIN_NICE -19
#define container_of(ptr, type, member)({ \
const typeof(((type *)0)->member) *__mptr = (ptr); \
@@ -28,10 +28,15 @@ FOPTS := -flto=auto -ffat-lto-objects -fexceptions -fstack-protector-strong \
-fasynchronous-unwind-tables -fstack-clash-protection
WOPTS := -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -Wno-maybe-uninitialized
+ifeq ($(CC),clang)
+ FOPTS := $(filter-out -ffat-lto-objects, $(FOPTS))
+ WOPTS := $(filter-out -Wno-maybe-uninitialized, $(WOPTS))
+endif
+
TRACEFS_HEADERS := $$($(PKG_CONFIG) --cflags libtracefs)
CFLAGS := -O -g -DVERSION=\"$(VERSION)\" $(FOPTS) $(MOPTS) $(WOPTS) $(TRACEFS_HEADERS) $(EXTRA_CFLAGS) -I include
-LDFLAGS := -ggdb $(EXTRA_LDFLAGS)
+LDFLAGS := -flto=auto -ggdb $(EXTRA_LDFLAGS)
LIBS := $$($(PKG_CONFIG) --libs libtracefs)
SRC := $(wildcard src/*.c)
@@ -210,9 +210,9 @@ static char *ikm_read_reactor(char *monitor_name)
static char *ikm_get_current_reactor(char *monitor_name)
{
char *reactors = ikm_read_reactor(monitor_name);
+ char *curr_reactor = NULL;
char *start;
char *end;
- char *curr_reactor;
if (!reactors)
return NULL;