sandbox: Add a way to show the sandbox memory-mapping

This is mostly hidden in the background, but it is sometimes useful to
look at it. Add a function to allow this.

Signed-off-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
Simon Glass 2024-10-28 13:47:57 +01:00 committed by Tom Rini
parent ec6d30649c
commit 5400c4bc05
4 changed files with 52 additions and 0 deletions

View file

@ -253,6 +253,19 @@ phys_addr_t map_to_sysmem(const void *ptr)
return mentry->tag;
}
void sandbox_map_list(void)
{
struct sandbox_mapmem_entry *mentry;
struct sandbox_state *state = state_get_current();
printf("Sandbox memory-mapping\n");
printf("%8s %16s %6s\n", "Addr", "Mapping", "Refcnt");
list_for_each_entry(mentry, &state->mapmem_head, sibling_node) {
printf("%8lx %p %6d\n", mentry->tag, mentry->ptr,
mentry->refcnt);
}
}
unsigned long sandbox_read(const void *addr, enum sandboxio_size_t size)
{
struct sandbox_state *state = state_get_current();

View file

@ -8,4 +8,7 @@
void cpu_sandbox_set_current(const char *name);
/* show the mapping of sandbox addresses to pointers */
void sandbox_map_list(void);
#endif /* __SANDBOX_CPU_H */

View file

@ -7,6 +7,7 @@
#include <command.h>
#include <dm.h>
#include <spl.h>
#include <asm/cpu.h>
#include <asm/global_data.h>
#include <asm/state.h>
@ -29,6 +30,14 @@ static int do_sb_handoff(struct cmd_tbl *cmdtp, int flag, int argc,
#endif
}
static int do_sb_map(struct cmd_tbl *cmdtp, int flag, int argc,
char *const argv[])
{
sandbox_map_list();
return 0;
}
static int do_sb_state(struct cmd_tbl *cmdtp, int flag, int argc,
char *const argv[])
{
@ -42,8 +51,10 @@ static int do_sb_state(struct cmd_tbl *cmdtp, int flag, int argc,
U_BOOT_LONGHELP(sb,
"handoff - Show handoff data received from SPL\n"
"sb map - Show mapped memory\n"
"sb state - Show sandbox state");
U_BOOT_CMD_WITH_SUBCMDS(sb, "Sandbox status commands", sb_help_text,
U_BOOT_SUBCMD_MKENT(handoff, 1, 1, do_sb_handoff),
U_BOOT_SUBCMD_MKENT(map, 1, 1, do_sb_map),
U_BOOT_SUBCMD_MKENT(state, 1, 1, do_sb_state));

View file

@ -12,6 +12,7 @@ Synopsis
::
sb handoff
sb map
sb state
Description
@ -26,6 +27,24 @@ sb handoff
This shows information about any handoff information received from SPL. If
U-Boot is started from an SPL build, it shows a valid magic number.
sb map
~~~~~~
This shows any mappings between sandbox's emulated RAM and the underlying host
address-space.
Fields shown are:
Addr
Address in emulated RAM
Mapping
Equivalent address in the host address-space. While sandbox requests address
``0x10000000`` from the OS, this is not always available.
Refcnt
Shows the number of references to this mapping.
sb state
~~~~~~~~
@ -42,6 +61,12 @@ as ``sandbox_spl``::
=> sb handoff
SPL handoff magic 14f93c7b
This shows output from the *sb map* subcommand, with a single mapping::
Sandbox memory-mapping
Addr Mapping Refcnt
ff000000 000056185b46d6d0 2
This shows output from the *sb state* subcommand::
=> sb state