summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon Glass <sjg@chromium.org>2019-04-08 13:20:52 -0600
committerSimon Glass <sjg@chromium.org>2019-04-23 20:26:43 -0600
commit1c6eb075a3fd31f3a22d72f11abc0b15c5776f1d (patch)
treeea33cd206a5b8280b6a35afe790410d46ecf42c4
parenta24a78d7e3e8b6008423d1a6aa49a6c9eb904752 (diff)
Convert CONFIG_TRACE_BUFFER_SIZE et al to Kconfig
This converts the following to Kconfig: CONFIG_TRACE_BUFFER_SIZE CONFIG_TRACE_EARLY_SIZE CONFIG_TRACE_EARLY CONFIG_TRACE_EARLY_ADDR Signed-off-by: Simon Glass <sjg@chromium.org>
-rw-r--r--lib/Kconfig48
-rw-r--r--lib/trace.c3
-rw-r--r--scripts/config_whitelist.txt4
3 files changed, 50 insertions, 5 deletions
diff --git a/lib/Kconfig b/lib/Kconfig
index a3352a4fa1..05f82d4a50 100644
--- a/lib/Kconfig
+++ b/lib/Kconfig
@@ -174,6 +174,54 @@ config TRACE
memory for exporting for analysis (e.g. using bootchart).
See doc/README.trace for full details.
+config TRACE_BUFFER_SIZE
+ hex "Size of trace buffer in U-Boot"
+ depends on TRACE
+ default 0x01000000
+ help
+ Sets the size of the trace buffer in U-Boot. This is allocated from
+ memory during relocation. If this buffer is too small, the trace
+ history will be truncated, with later records omitted.
+
+ If early trace is enabled (i.e. before relocation), this buffer must
+ be large enough to include all the data from the early trace buffer as
+ well, since this is copied over to the main buffer during relocation.
+
+ A trace record is emitted for each function call and each record is
+ 12 bytes (see struct trace_call). A suggested minimum size is 1MB. If
+ the size is too small then 'trace stats' will show a message saying
+ how many records were dropped due to buffer overflow.
+
+config TRACE_EARLY
+ bool "Enable tracing before relocation"
+ depends on TRACE
+ help
+ Sometimes it is helpful to trace execution of U-Boot before
+ relocation. This is possible by using a arch-specific, fixed buffer
+ position in memory. Enable this option to start tracing as early as
+ possible after U-Boot starts.
+
+config TRACE_EARLY_SIZE
+ hex "Size of early trace buffer in U-Boot"
+ depends on TRACE_EARLY
+ default 0x00100000
+ help
+ Sets the size of the early trace buffer in bytes. This is used to hold
+ tracing information before relocation.
+
+config TRACE_EARLY_ADDR
+ hex "Address of early trace buffer in U-Boot"
+ depends on TRACE_EARLY
+ default 0x00100000
+ help
+ Sets the address of the early trace buffer in U-Boot. This memory
+ must be accessible before relocation.
+
+ A trace record is emitted for each function call and each record is
+ 12 bytes (see struct trace_call). A suggested minimum size is 1MB. If
+ the size is too small then the message which says the amount of early
+ data being coped will the the same as the
+
source lib/dhry/Kconfig
menu "Security support"
diff --git a/lib/trace.c b/lib/trace.c
index fb7658b112..9956442fef 100644
--- a/lib/trace.c
+++ b/lib/trace.c
@@ -296,7 +296,8 @@ int __attribute__((no_instrument_function)) trace_init(void *buff,
trace_enabled = 0;
hdr = map_sysmem(CONFIG_TRACE_EARLY_ADDR,
CONFIG_TRACE_EARLY_SIZE);
- end = (char *)&hdr->ftrace[hdr->ftrace_count];
+ end = (char *)&hdr->ftrace[min(hdr->ftrace_count,
+ hdr->ftrace_size)];
used = end - (char *)hdr;
printf("trace: copying %08lx bytes of early data from %x to %08lx\n",
used, CONFIG_TRACE_EARLY_ADDR,
diff --git a/scripts/config_whitelist.txt b/scripts/config_whitelist.txt
index 2942c6945b..3e6bdf8161 100644
--- a/scripts/config_whitelist.txt
+++ b/scripts/config_whitelist.txt
@@ -4401,10 +4401,6 @@ CONFIG_TMU_TIMER
CONFIG_TPL_PAD_TO
CONFIG_TPM_TIS_BASE_ADDRESS
CONFIG_TPS6586X_POWER
-CONFIG_TRACE_BUFFER_SIZE
-CONFIG_TRACE_EARLY
-CONFIG_TRACE_EARLY_ADDR
-CONFIG_TRACE_EARLY_SIZE
CONFIG_TRAILBLAZER
CONFIG_TRATS
CONFIG_TSEC