aboutsummaryrefslogtreecommitdiff
path: root/cmd/dm.c
diff options
context:
space:
mode:
authorSimon Glass2022-05-08 04:39:26 -0600
committerSimon Glass2022-06-28 03:09:52 +0100
commit2cb4ddb91ec9fcb77c895e4a1192a15aece700c6 (patch)
treefa5b70616fb54ee575514943c453f544ed033ab3 /cmd/dm.c
parent0dfda34ca594c701955cfcb71711a7599f97bae3 (diff)
dm: core: Add a command to show driver model statistics
This command shows the memory used by driver model along with various hints as to what it might be if some 'core' tags were moved to use the tag list instead of a core (i.e. always-there) pointer. This may help with future work to reduce memory usage. Signed-off-by: Simon Glass <sjg@chromium.org>
Diffstat (limited to 'cmd/dm.c')
-rw-r--r--cmd/dm.c24
1 files changed, 24 insertions, 0 deletions
diff --git a/cmd/dm.c b/cmd/dm.c
index 0c7554a1b1d..eb40f0865fe 100644
--- a/cmd/dm.c
+++ b/cmd/dm.c
@@ -8,6 +8,7 @@
#include <common.h>
#include <command.h>
+#include <dm/root.h>
#include <dm/util.h>
static int do_dm_dump_driver_compat(struct cmd_tbl *cmdtp, int flag, int argc,
@@ -34,6 +35,19 @@ static int do_dm_dump_drivers(struct cmd_tbl *cmdtp, int flag, int argc,
return 0;
}
+#if CONFIG_IS_ENABLED(DM_STATS)
+static int do_dm_dump_mem(struct cmd_tbl *cmdtp, int flag, int argc,
+ char *const argv[])
+{
+ struct dm_stats mem;
+
+ dm_get_mem(&mem);
+ dm_dump_mem(&mem);
+
+ return 0;
+}
+#endif /* DM_STATS */
+
static int do_dm_dump_static_driver_info(struct cmd_tbl *cmdtp, int flag,
int argc, char * const argv[])
{
@@ -58,11 +72,20 @@ static int do_dm_dump_uclass(struct cmd_tbl *cmdtp, int flag, int argc,
return 0;
}
+#if CONFIG_IS_ENABLED(DM_STATS)
+#define DM_MEM_HELP "dm mem Provide a summary of memory usage\n"
+#define DM_MEM U_BOOT_SUBCMD_MKENT(mem, 1, 1, do_dm_dump_mem),
+#else
+#define DM_MEM_HELP
+#define DM_MEM
+#endif
+
#if CONFIG_IS_ENABLED(SYS_LONGHELP)
static char dm_help_text[] =
"compat Dump list of drivers with compatibility strings\n"
"dm devres Dump list of device resources for each device\n"
"dm drivers Dump list of drivers with uclass and instances\n"
+ DM_MEM_HELP
"dm static Dump list of drivers with static platform data\n"
"dn tree Dump tree of driver model devices ('*' = activated)\n"
"dm uclass Dump list of instances for each uclass"
@@ -73,6 +96,7 @@ U_BOOT_CMD_WITH_SUBCMDS(dm, "Driver model low level access", dm_help_text,
U_BOOT_SUBCMD_MKENT(compat, 1, 1, do_dm_dump_driver_compat),
U_BOOT_SUBCMD_MKENT(devres, 1, 1, do_dm_dump_devres),
U_BOOT_SUBCMD_MKENT(drivers, 1, 1, do_dm_dump_drivers),
+ DM_MEM
U_BOOT_SUBCMD_MKENT(static, 1, 1, do_dm_dump_static_driver_info),
U_BOOT_SUBCMD_MKENT(tree, 1, 1, do_dm_dump_tree),
U_BOOT_SUBCMD_MKENT(uclass, 1, 1, do_dm_dump_uclass));