[PATCH 06/15] sandbox: Add a way to show the sandbox memory-mapping

Simon Glass sjg at chromium.org
Tue Oct 29 16:46:34 CET 2024


Hi Ilias,

On Tue, 29 Oct 2024 at 10:59, Ilias Apalodimas
<ilias.apalodimas at linaro.org> wrote:
>
> Hi Simon
>
> This seems completely unrelated to the series.
>
> Please send it as a separate patch

I've moved the initial patches in this series to my queue in patchwork, for now.

Regards,
Simon


>
> 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