1
0
mirror of https://xff.cz/git/u-boot/ synced 2025-09-01 16:52:14 +02:00

trace: make call depth limit customizable

Up to now we had hard coded values for the call depth up to which trace
records are created: 200 for early tracing, 15 thereafter. UEFI
applications reach a call depth of 80 or above.

Provide customizing settings for the call trace depth limit and the early
call trace depth limit. Use the old values as defaults.

Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
Reviewed-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
Heinrich Schuchardt
2019-06-02 13:30:09 +02:00
committed by Simon Glass
parent a2fa38da20
commit da0fb5fdd4
2 changed files with 17 additions and 2 deletions

View File

@@ -192,6 +192,13 @@ config TRACE_BUFFER_SIZE
the size is too small then 'trace stats' will show a message saying the size is too small then 'trace stats' will show a message saying
how many records were dropped due to buffer overflow. how many records were dropped due to buffer overflow.
config TRACE_CALL_DEPTH_LIMIT
int "Trace call depth limit"
depends on TRACE
default 15
help
Sets the maximum call depth up to which function calls are recorded.
config TRACE_EARLY config TRACE_EARLY
bool "Enable tracing before relocation" bool "Enable tracing before relocation"
depends on TRACE depends on TRACE
@@ -209,6 +216,14 @@ config TRACE_EARLY_SIZE
Sets the size of the early trace buffer in bytes. This is used to hold Sets the size of the early trace buffer in bytes. This is used to hold
tracing information before relocation. tracing information before relocation.
config TRACE_EARLY_CALL_DEPTH_LIMIT
int "Early trace call depth limit"
depends on TRACE_EARLY
default 200
help
Sets the maximum call depth up to which function calls are recorded
during early tracing.
config TRACE_EARLY_ADDR config TRACE_EARLY_ADDR
hex "Address of early trace buffer in U-Boot" hex "Address of early trace buffer in U-Boot"
depends on TRACE_EARLY depends on TRACE_EARLY

View File

@@ -376,7 +376,7 @@ int __attribute__((no_instrument_function)) trace_init(void *buff,
add_textbase(); add_textbase();
puts("trace: enabled\n"); puts("trace: enabled\n");
hdr->depth_limit = 15; hdr->depth_limit = CONFIG_TRACE_CALL_DEPTH_LIMIT;
trace_enabled = 1; trace_enabled = 1;
trace_inited = 1; trace_inited = 1;
@@ -410,7 +410,7 @@ int __attribute__((no_instrument_function)) trace_early_init(void)
hdr->ftrace = (struct trace_call *)((char *)hdr + needed); hdr->ftrace = (struct trace_call *)((char *)hdr + needed);
hdr->ftrace_size = (buff_size - needed) / sizeof(*hdr->ftrace); hdr->ftrace_size = (buff_size - needed) / sizeof(*hdr->ftrace);
add_textbase(); add_textbase();
hdr->depth_limit = 200; hdr->depth_limit = CONFIG_TRACE_EARLY_CALL_DEPTH_LIMIT;
printf("trace: early enable at %08x\n", CONFIG_TRACE_EARLY_ADDR); printf("trace: early enable at %08x\n", CONFIG_TRACE_EARLY_ADDR);
trace_enabled = 1; trace_enabled = 1;