[PATCH v3 1/2] trace: select TIMER_EARLY to avoid infinite recursion
Pragnesh Patel
pragnesh.patel at sifive.com
Sun Jan 10 13:42:52 CET 2021
When tracing functions is enabled this adds calls to
__cyg_profile_func_enter() and __cyg_profile_func_exit() to the traced
functions.
__cyg_profile_func_enter() and __cyg_profile_func_exit() invoke
timer_get_us() to record the entry and exit time.
initr_dm() will make gd->dm_root = NULL and gd->timer = NULL, so
timer_get_us() -> get_ticks() -> dm_timer_init() will lead to an
indefinite recursion.
So select TIMER_EARLY when tracing got enabled.
Signed-off-by: Pragnesh Patel <pragnesh.patel at sifive.com>
Reviewed-by: Simon Glass <sjg at chromium.org>
Reviewed-by: Rick Chen <rick at andestech.com>
---
Changes in v3:
- no change
Changes in v2:
- new patch
lib/Kconfig | 1 +
1 file changed, 1 insertion(+)
diff --git a/lib/Kconfig b/lib/Kconfig
index 7673d2e4e0..671386963a 100644
--- a/lib/Kconfig
+++ b/lib/Kconfig
@@ -210,6 +210,7 @@ config BITREVERSE
config TRACE
bool "Support for tracing of function calls and timing"
imply CMD_TRACE
+ select TIMER_EARLY
help
Enables function tracing within U-Boot. This allows recording of call
traces including timing information. The command can write data to
--
2.17.1
More information about the U-Boot
mailing list