dm: spl: Allow SPL to show memory usage
authorSimon Glass <sjg@chromium.org>
Sun, 8 May 2022 10:39:27 +0000 (04:39 -0600)
committerSimon Glass <sjg@chromium.org>
Tue, 28 Jun 2022 02:09:52 +0000 (03:09 +0100)
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>
common/spl/spl.c
drivers/core/Kconfig

index 2a69a7c..dff4eef 100644 (file)
@@ -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;
index 97dc699..99e2871 100644 (file)
@@ -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