[PATCH v2 09/11] test: dm: add sandbox FF-A runtime transport tests

Harsimran Singh Tungal harsimransingh.tungal at arm.com
Wed May 27 10:39:32 CEST 2026


On 2026-05-26 23:45 -0500, Simon Glass wrote:
> Hi Harsimran,
> 
> On Tue, 26 May 2026 at 16:50, Harsimran Singh Tungal
> <harsimransingh.tungal at arm.com> wrote:
> >
> > On 2026-05-15 12:27 -0600, Simon Glass wrote:
> > > Hi Harsimran,
> > >
> > > On 2026-05-14T12:49:13, Harsimran Singh Tungal
> > > <harsimransingh.tungal at arm.com> wrote:
> > > > test: dm: add sandbox FF-A runtime transport tests
> > > >
> > > > Exercise FF-A runtime helpers via sandbox DM tests
> > > >
> > > > Test the successful runtime direct-message round trip and the invalid
> > > > destination-partition case, using the shared FF-A prepare step so the
> > > > sandbox emulator has initialized partition state before exercising the
> > > > runtime-only messaging helpers.
> > > > Add a dedicated no-context test that calls
> > > > ffa_sync_send_receive_runtime() before enabling the runtime context and
> > > > checks that it returns -EPERM. Reset the resident FF-A runtime context
> > > > around the transport tests so the runtime flag and private data do not
> > > > leak across test cases.
> > > > Split the ffa_to_std_errno() checks into a separate DM test so
> > > > error-mapping regressions are reported independently from transport
> > > > failures. Cover both the valid mappings and the boundary inputs that
> > > > must return -EINVAL.
> > > >
> > > > Replace the hard-coded synthetic partition execution-context and
> > > > property values in ffa-emul-uclass.c with the shared
> > > > [...]
> > > >
> > > > arch/sandbox/include/asm/sandbox_arm_ffa.h |  16 +++-
> > > >  drivers/firmware/arm-ffa/ffa-emul-uclass.c |  36 +++++---
> > > >  test/dm/Makefile                           |   3 +-
> > > >  test/dm/ffa_runtime.c                      | 129 +++++++++++++++++++++++++++++
> > > >  4 files changed, 172 insertions(+), 12 deletions(-)
> > >
> > > Reviewed-by: Simon Glass <sjg at chromium.org>
> > >
> > > > diff --git a/test/dm/ffa_runtime.c b/test/dm/ffa_runtime.c
> > > > @@ -0,0 +1,129 @@
> > > > +static int dm_test_ffa_to_std_errno(struct unit_test_state *uts)
> > > > +{
> > > > +     (void)uts;
> > > > +
> > > > +     ut_asserteq(-EINVAL, ffa_to_std_errno(0));
> > >
> > > (void)uts is incorrect - uts is used by the ut_asserteq() macro
> > > expansions. Please drop it.
> > >
> > > > diff --git a/test/dm/ffa_runtime.c b/test/dm/ffa_runtime.c
> > > > @@ -0,0 +1,129 @@
> > > > +     ffa_copy_runtime_priv(&(struct ffa_priv_runtime){
> > > > +             .id = NS_PHYS_ENDPOINT_ID,
> > > > +     });
> > > > +     ffa_enable_runtime_context();
> > >
> > > Twice you do reset + prepare + copy + enable + assert + reset. Please
> > > pull this into a small helper (e.g. ffa_runtime_setup()) with matching
> > > teardown, so the two tests can't drift and a failed assertion mid-test
> > > doesn't leak the runtime flag into later tests.
> > >
> > > > diff --git a/test/dm/ffa_runtime.c b/test/dm/ffa_runtime.c
> > > > @@ -0,0 +1,129 @@
> > > > +     /* Invalid partition IDs must be rejected and mapped to -EINVAL */
> > > > +     ut_asserteq(-EINVAL, ffa_sync_send_receive_runtime(0, &msg, true));
> > >
> > > Just to clarify, this works because NS_PHYS_ENDPOINT_ID happens to be
> > > 0, so the emulator's self-ID check trips first rather than the SP
> > > validity check. Please pick a clearly-invalid partition ID (e.g.
> > > 0xffff) so the test exercises the intended rejection path.
> > >
> > > > diff --git a/drivers/firmware/arm-ffa/ffa-emul-uclass.c b/drivers/firmware/arm-ffa/ffa-emul-uclass.c
> > > > @@ -19,41 +19,57 @@
> > > >  /* The partitions (SPs) table */
> > > >  static struct ffa_partition_desc sandbox_partitions[SANDBOX_PARTITIONS_CNT] = {
> > > >       {
> > > > -             .info = { .id = SANDBOX_SP1_ID, .exec_ctxt = 0x5687, .properties = 0x89325621 },
> > > > +             .info = {
> > > > +                     .id = SANDBOX_SP1_ID,
> > > > +                     .exec_ctxt = SANDBOX_SP1_EXEC_CTXT,
> > > > +                     .properties = SANDBOX_SP1_PROPERTIES,
> > > > +             },
> > >
> > > This refactor (lifting exec_ctxt/properties into SANDBOX_SP*_EXEC_CTXT
> > > / SANDBOX_SP*_PROPERTIES) is unrelated to the runtime tests - none of
> > > the new tests reference these macros. Please split it into a
> > > preparatory patch.
> > >
> >
> > Hi Simon,
> >
> > In patchset v1 [1], it has been suggested by you to squash commit 9 into
> > commit 8.
> > Can you please confirm, if seperate patch is needed for these changes?
> > I will make relevant changes in v3, if required.
> 
> It's not critical, just a suggestion as it seemed to me that the
> patches were interwined.
>

I see your point, but I think your earlier suggestion to squash these commits still makes sense.
We have now removed the redundant copy of the sandbox_partitions information from ffa_runtime.c
and rely entirely on the definition in ffa-emul-uclass.c. Given that, keeping the ffa-emul-uclass.c
changes together with the related ffa_runtime.c updates in a single patch seems cleaner and more
coherent.

Regards
Harsimran Singh Tungal

> >
> > [1] : https://lore.kernel.org/u-boot/CAFLszTiDRK-OZV-rqXs+NpJZd+ZSoxjKuAgyXJ4nH3sUYLqk7A@mail.gmail.com/
> >
> > Regards,
> > Harsimran Singh Tungal
> >
> > > > diff --git a/drivers/firmware/arm-ffa/ffa-emul-uclass.c b/drivers/firmware/arm-ffa/ffa-emul-uclass.c
> > > > @@ -19,41 +19,57 @@
> > > > -             }
> > > > -     }
> > > > +             },
> > > > +     },
> > > >
> > > >  };
> > >
> > > Stray blank line between the last entry and the closing }; — while you
> > > are reflowing this table, please drop it.
> [..]
> 
> Regards,
> Simon
> 




More information about the U-Boot mailing list