[PATCH 3/3] bsps/aarch64: use SMC API in bspreset-arm-psci

Gedare Bloom gedare at rtems.org
Sat Dec 11 16:20:03 UTC 2021


On Mon, Oct 18, 2021 at 8:40 AM Kinsey Moore <kinsey.moore at oarcorp.com> wrote:
>
> Comments below.
>
> On 10/16/2021 15:12, Gedare Bloom wrote:
> > ---
> >   bsps/shared/start/bspreset-arm-psci.c | 20 ++++++++++++++++++++
> >   1 file changed, 20 insertions(+)
> >
> > diff --git a/bsps/shared/start/bspreset-arm-psci.c b/bsps/shared/start/bspreset-arm-psci.c
> > index 215be5c9b5..bafdfe6299 100644
> > --- a/bsps/shared/start/bspreset-arm-psci.c
> > +++ b/bsps/shared/start/bspreset-arm-psci.c
> > @@ -37,9 +37,28 @@
> >   #include <bsp.h>
> >   #include <bsp/bootcard.h>
> >
> > +#if defined( AARCH64_MULTILIB_ARCH_V8 ) || \
> > +  defined( AARCH64_MULTILIB_ARCH_V8_ILP32 )
> > +#include <rtems/score/aarch64-smc.h>
> > +#endif
> > +
> >   void bsp_reset(void)
> >   {
> >       uint32_t PSCI_FN_SYSTEM_RESET = 0x84000009;
> > +#ifdef BSP_RESET_SMC
> > +  (void) _AArch64_SMC_Invoke(
> > +      PSCI_FN_SYSTEM_RESET,
> > +      0,
> > +      0,
> > +      0,
> > +      0,
> > +      0,
> > +      0,
> > +      0,
> > +      0,
> > +      NULL
> > +  );
> > +#else
> >       __asm__ volatile(
> >   #if defined(AARCH64_MULTILIB_ARCH_V8) || defined(AARCH64_MULTILIB_ARCH_V8_ILP32)
> >               "mov x0, %0\n"
> > @@ -53,4 +72,5 @@ void bsp_reset(void)
> >   #endif
> This leaves dead code just above the break in this patch.
> >               : : "r" (PSCI_FN_SYSTEM_RESET)
> >       );
> > +#endif
> >   }
>
>
> The existing PSCI functionality was coded such that both ARM and AArch64
> could use it in either mode. The way this has been added breaks SMC
> conduit functionality on 32-bit ARM for both secondary CPU startup and
> system reset.
>
I decided to separate the two cases (aarch64/32) a little bit more
cleanly to resolve this issue. Thanks for the review!

>
> Kinsey
>
> _______________________________________________
> devel mailing list
> devel at rtems.org
> http://lists.rtems.org/mailman/listinfo/devel


More information about the devel mailing list