trace: make call depth limit customizable
authorHeinrich Schuchardt <xypron.glpk@gmx.de>
Sun, 2 Jun 2019 11:30:09 +0000 (13:30 +0200)
committerSimon Glass <sjg@chromium.org>
Wed, 10 Jul 2019 22:52:58 +0000 (16:52 -0600)
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>
lib/Kconfig
lib/trace.c

index 416e63c1c736d05b4cc6118a59331a1e5631b6ff..e717eb3de50a926accc6157fcc78a1cd5a5b5b4f 100644 (file)
@@ -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
index a13e5bf228b3889e89243278431d244187d97527..04780f59d338808db605b5635393245897f70df4 100644 (file)
@@ -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;