[U-Boot] [PATCH 1/1] 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 --- lib/Kconfig | 15 +++++++++++++++ lib/trace.c | 4 ++-- 2 files changed, 17 insertions(+), 2 deletions(-)
diff --git a/lib/Kconfig b/lib/Kconfig index 416e63c1c7..e717eb3de5 100644 --- a/lib/Kconfig +++ b/lib/Kconfig @@ -192,6 +192,13 @@ config TRACE_BUFFER_SIZE the size is too small then 'trace stats' will show a message saying 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 bool "Enable tracing before relocation" 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 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 hex "Address of early trace buffer in U-Boot" depends on TRACE_EARLY diff --git a/lib/trace.c b/lib/trace.c index a13e5bf228..04780f59d3 100644 --- a/lib/trace.c +++ b/lib/trace.c @@ -376,7 +376,7 @@ int __attribute__((no_instrument_function)) trace_init(void *buff, add_textbase();
puts("trace: enabled\n"); - hdr->depth_limit = 15; + hdr->depth_limit = CONFIG_TRACE_CALL_DEPTH_LIMIT; trace_enabled = 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_size = (buff_size - needed) / sizeof(*hdr->ftrace); 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);
trace_enabled = 1; -- 2.20.1

On Sun, 2 Jun 2019 at 12:30, Heinrich Schuchardt xypron.glpk@gmx.de wrote:
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
lib/Kconfig | 15 +++++++++++++++ lib/trace.c | 4 ++-- 2 files changed, 17 insertions(+), 2 deletions(-)
Reviewed-by: Simon Glass sjg@chromium.org

On Sat, 22 Jun 2019 at 13:10, Simon Glass sjg@chromium.org wrote:
On Sun, 2 Jun 2019 at 12:30, Heinrich Schuchardt xypron.glpk@gmx.de wrote:
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
lib/Kconfig | 15 +++++++++++++++ lib/trace.c | 4 ++-- 2 files changed, 17 insertions(+), 2 deletions(-)
Reviewed-by: Simon Glass sjg@chromium.org
Applied to u-boot-dm/next, thanks!
participants (2)
-
Heinrich Schuchardt
-
Simon Glass