[PATCH 06/15] sandbox: Add a way to show the sandbox memory-mapping
Ilias Apalodimas
ilias.apalodimas at linaro.org
Tue Oct 29 10:59:19 CET 2024
Hi Simon
This seems completely unrelated to the series.
Please send it as a separate patch
Thanks
/Ilias
On Mon, 28 Oct 2024 at 14:48, Simon Glass <sjg at chromium.org> wrote:
>
> 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 at chromium.org>
> ---
>
> arch/sandbox/cpu/cpu.c | 13 +++++++++++++
> arch/sandbox/include/asm/cpu.h | 3 +++
> cmd/sb.c | 11 +++++++++++
> doc/usage/cmd/sb.rst | 25 +++++++++++++++++++++++++
> 4 files changed, 52 insertions(+)
>
> diff --git a/arch/sandbox/cpu/cpu.c b/arch/sandbox/cpu/cpu.c
> index 06f8c13fab9..d1c4dcf0764 100644
> --- a/arch/sandbox/cpu/cpu.c
> +++ b/arch/sandbox/cpu/cpu.c
> @@ -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();
> diff --git a/arch/sandbox/include/asm/cpu.h b/arch/sandbox/include/asm/cpu.h
> index c97ac7ba95b..682bb3376d1 100644
> --- a/arch/sandbox/include/asm/cpu.h
> +++ b/arch/sandbox/include/asm/cpu.h
> @@ -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 */
> diff --git a/cmd/sb.c b/cmd/sb.c
> index 9dbb53275b3..9245052492e 100644
> --- a/cmd/sb.c
> +++ b/cmd/sb.c
> @@ -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));
> diff --git a/doc/usage/cmd/sb.rst b/doc/usage/cmd/sb.rst
> index 6f54f9d9eb7..37431aff7c8 100644
> --- a/doc/usage/cmd/sb.rst
> +++ b/doc/usage/cmd/sb.rst
> @@ -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
> --
> 2.43.0
>
More information about the U-Boot
mailing list