mirror of
https://github.com/Dasharo/linux.git
synced 2026-03-06 15:25:10 -08:00
Merge tag 'trace-v5.7' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace
Pull tracing updates from Steven Rostedt:
"New tracing features:
- The ring buffer is no longer disabled when reading the trace file.
The trace_pipe file was made to be used for live tracing and
reading as it acted like the normal producer/consumer. As the trace
file would not consume the data, the easy way of handling it was to
just disable writes to the ring buffer.
This came to a surprise to the BPF folks who complained about lost
events due to reading. This is no longer an issue. If someone wants
to keep the old disabling there's a new option "pause-on-trace"
that can be set.
- New set_ftrace_notrace_pid file. PIDs in this file will not be
traced by the function tracer.
Similar to set_ftrace_pid, which makes the function tracer only
trace those tasks with PIDs in the file, the set_ftrace_notrace_pid
does the reverse.
- New set_event_notrace_pid file. PIDs in this file will cause events
not to be traced if triggered by a task with a matching PID.
Similar to the set_event_pid file but will not be traced. Note,
sched_waking and sched_switch events may still be traced if one of
the tasks referenced by those events contains a PID that is allowed
to be traced.
Tracing related features:
- New bootconfig option, that is attached to the initrd file.
If bootconfig is on the command line, then the initrd file is
searched looking for a bootconfig appended at the end.
- New GPU tracepoint infrastructure to help the gfx drivers to get
off debugfs (acked by Greg Kroah-Hartman)
And other minor updates and fixes"
* tag 'trace-v5.7' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace: (27 commits)
tracing: Do not allocate buffer in trace_find_next_entry() in atomic
tracing: Add documentation on set_ftrace_notrace_pid and set_event_notrace_pid
selftests/ftrace: Add test to test new set_event_notrace_pid file
selftests/ftrace: Add test to test new set_ftrace_notrace_pid file
tracing: Create set_event_notrace_pid to not trace tasks
ftrace: Create set_ftrace_notrace_pid to not trace tasks
ftrace: Make function trace pid filtering a bit more exact
ftrace/kprobe: Show the maxactive number on kprobe_events
tracing: Have the document reflect that the trace file keeps tracing enabled
ring-buffer/tracing: Have iterator acknowledge dropped events
tracing: Do not disable tracing when reading the trace file
ring-buffer: Do not disable recording when there is an iterator
ring-buffer: Make resize disable per cpu buffer instead of total buffer
ring-buffer: Optimize rb_iter_head_event()
ring-buffer: Do not die if rb_iter_peek() fails more than thrice
ring-buffer: Have rb_iter_head_event() handle concurrent writer
ring-buffer: Add page_stamp to iterator for synchronization
ring-buffer: Rename ring_buffer_read() to read_buffer_iter_advance()
ring-buffer: Have ring_buffer_empty() not depend on tracing stopped
tracing: Save off entry when peeking at next entry
...
This commit is contained in:
+17
-10
@@ -1,23 +1,30 @@
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
# Makefile for bootconfig command
|
||||
include ../scripts/Makefile.include
|
||||
|
||||
bindir ?= /usr/bin
|
||||
|
||||
HEADER = include/linux/bootconfig.h
|
||||
CFLAGS = -Wall -g -I./include
|
||||
ifeq ($(srctree),)
|
||||
srctree := $(patsubst %/,%,$(dir $(CURDIR)))
|
||||
srctree := $(patsubst %/,%,$(dir $(srctree)))
|
||||
endif
|
||||
|
||||
PROGS = bootconfig
|
||||
LIBSRC = $(srctree)/lib/bootconfig.c $(srctree)/include/linux/bootconfig.h
|
||||
CFLAGS = -Wall -g -I$(CURDIR)/include
|
||||
|
||||
all: $(PROGS)
|
||||
ALL_TARGETS := bootconfig
|
||||
ALL_PROGRAMS := $(patsubst %,$(OUTPUT)%,$(ALL_TARGETS))
|
||||
|
||||
bootconfig: ../../lib/bootconfig.c main.c $(HEADER)
|
||||
all: $(ALL_PROGRAMS)
|
||||
|
||||
$(OUTPUT)bootconfig: main.c $(LIBSRC)
|
||||
$(CC) $(filter %.c,$^) $(CFLAGS) -o $@
|
||||
|
||||
install: $(PROGS)
|
||||
install bootconfig $(DESTDIR)$(bindir)
|
||||
test: $(ALL_PROGRAMS) test-bootconfig.sh
|
||||
./test-bootconfig.sh $(OUTPUT)
|
||||
|
||||
test: bootconfig
|
||||
./test-bootconfig.sh
|
||||
install: $(ALL_PROGRAMS)
|
||||
install $(OUTPUT)bootconfig $(DESTDIR)$(bindir)
|
||||
|
||||
clean:
|
||||
$(RM) -f *.o bootconfig
|
||||
$(RM) -f $(OUTPUT)*.o $(ALL_PROGRAMS)
|
||||
|
||||
+31
-4
@@ -130,6 +130,7 @@ int load_xbc_from_initrd(int fd, char **buf)
|
||||
int ret;
|
||||
u32 size = 0, csum = 0, rcsum;
|
||||
char magic[BOOTCONFIG_MAGIC_LEN];
|
||||
const char *msg;
|
||||
|
||||
ret = fstat(fd, &stat);
|
||||
if (ret < 0)
|
||||
@@ -182,10 +183,12 @@ int load_xbc_from_initrd(int fd, char **buf)
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
ret = xbc_init(*buf);
|
||||
ret = xbc_init(*buf, &msg, NULL);
|
||||
/* Wrong data */
|
||||
if (ret < 0)
|
||||
if (ret < 0) {
|
||||
pr_err("parse error: %s.\n", msg);
|
||||
return ret;
|
||||
}
|
||||
|
||||
return size;
|
||||
}
|
||||
@@ -244,11 +247,34 @@ int delete_xbc(const char *path)
|
||||
return ret;
|
||||
}
|
||||
|
||||
static void show_xbc_error(const char *data, const char *msg, int pos)
|
||||
{
|
||||
int lin = 1, col, i;
|
||||
|
||||
if (pos < 0) {
|
||||
pr_err("Error: %s.\n", msg);
|
||||
return;
|
||||
}
|
||||
|
||||
/* Note that pos starts from 0 but lin and col should start from 1. */
|
||||
col = pos + 1;
|
||||
for (i = 0; i < pos; i++) {
|
||||
if (data[i] == '\n') {
|
||||
lin++;
|
||||
col = pos - i;
|
||||
}
|
||||
}
|
||||
pr_err("Parse Error: %s at %d:%d\n", msg, lin, col);
|
||||
|
||||
}
|
||||
|
||||
int apply_xbc(const char *path, const char *xbc_path)
|
||||
{
|
||||
u32 size, csum;
|
||||
char *buf, *data;
|
||||
int ret, fd;
|
||||
const char *msg;
|
||||
int pos;
|
||||
|
||||
ret = load_xbc_file(xbc_path, &buf);
|
||||
if (ret < 0) {
|
||||
@@ -267,11 +293,12 @@ int apply_xbc(const char *path, const char *xbc_path)
|
||||
*(u32 *)(data + size + 4) = csum;
|
||||
|
||||
/* Check the data format */
|
||||
ret = xbc_init(buf);
|
||||
ret = xbc_init(buf, &msg, &pos);
|
||||
if (ret < 0) {
|
||||
pr_err("Failed to parse %s: %d\n", xbc_path, ret);
|
||||
show_xbc_error(data, msg, pos);
|
||||
free(data);
|
||||
free(buf);
|
||||
|
||||
return ret;
|
||||
}
|
||||
printf("Apply %s to %s\n", xbc_path, path);
|
||||
|
||||
@@ -3,9 +3,16 @@
|
||||
|
||||
echo "Boot config test script"
|
||||
|
||||
BOOTCONF=./bootconfig
|
||||
INITRD=`mktemp initrd-XXXX`
|
||||
TEMPCONF=`mktemp temp-XXXX.bconf`
|
||||
if [ -d "$1" ]; then
|
||||
TESTDIR=$1
|
||||
else
|
||||
TESTDIR=.
|
||||
fi
|
||||
BOOTCONF=${TESTDIR}/bootconfig
|
||||
|
||||
INITRD=`mktemp ${TESTDIR}/initrd-XXXX`
|
||||
TEMPCONF=`mktemp ${TESTDIR}/temp-XXXX.bconf`
|
||||
OUTFILE=`mktemp ${TESTDIR}/tempout-XXXX`
|
||||
NG=0
|
||||
|
||||
cleanup() {
|
||||
@@ -65,7 +72,6 @@ new_size=$(stat -c %s $INITRD)
|
||||
xpass test $new_size -eq $initrd_size
|
||||
|
||||
echo "No error messge while applying"
|
||||
OUTFILE=`mktemp tempout-XXXX`
|
||||
dd if=/dev/zero of=$INITRD bs=4096 count=1
|
||||
printf " \0\0\0 \0\0\0" >> $INITRD
|
||||
$BOOTCONF -a $TEMPCONF $INITRD > $OUTFILE 2>&1
|
||||
|
||||
Reference in New Issue
Block a user