diff options
author | Simon Glass <sjg@chromium.org> | 2022-05-08 04:39:27 -0600 |
---|---|---|
committer | Simon Glass <sjg@chromium.org> | 2022-06-28 03:09:52 +0100 |
commit | 4f6500aa1a62a80e8df2ffdf16fe4c3eabd99f1c (patch) | |
tree | 6497bbf0356366fa0e94c0d577be81f12d6781f4 | |
parent | 2cb4ddb91ec9fcb77c895e4a1192a15aece700c6 (diff) |
dm: spl: Allow SPL to show memory usage
Add an option to tell SPL to show memory usage for driver model just
before it boots into the next phase.
Signed-off-by: Simon Glass <sjg@chromium.org>
-rw-r--r-- | common/spl/spl.c | 9 | ||||
-rw-r--r-- | drivers/core/Kconfig | 10 |
2 files changed, 19 insertions, 0 deletions
diff --git a/common/spl/spl.c b/common/spl/spl.c index 2a69a7c9324..dff4eef7071 100644 --- a/common/spl/spl.c +++ b/common/spl/spl.c @@ -34,6 +34,7 @@ #include <malloc.h> #include <mapmem.h> #include <dm/root.h> +#include <dm/util.h> #include <linux/compiler.h> #include <fdt_support.h> #include <bootcount.h> @@ -780,6 +781,14 @@ void board_init_r(gd_t *dummy1, ulong dummy2) bootcount_inc(); + /* Dump driver model states to aid analysis */ + if (CONFIG_IS_ENABLED(DM_STATS)) { + struct dm_stats mem; + + dm_get_mem(&mem); + dm_dump_mem(&mem); + } + memset(&spl_image, '\0', sizeof(spl_image)); #ifdef CONFIG_SYS_SPL_ARGS_ADDR spl_image.arg = (void *)CONFIG_SYS_SPL_ARGS_ADDR; diff --git a/drivers/core/Kconfig b/drivers/core/Kconfig index 97dc699e969..99e28713f9b 100644 --- a/drivers/core/Kconfig +++ b/drivers/core/Kconfig @@ -86,6 +86,16 @@ config DM_STATS To display the memory stats, use the 'dm mem' command. +config SPL_DM_STATS + bool "Collect and show driver model stats in SPL" + depends on DM_SPL + help + Enable this to collect and display memory statistics about driver + model. This can help to figure out where all the memory is going and + to find optimisations. + + The stats are displayed just before SPL boots to the next phase. + config DM_DEVICE_REMOVE bool "Support device removal" depends on DM |