public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
* [PATCH 1/1] ArmPkg: Add SMC helper functions
@ 2021-10-19 20:35 Rebecca Cran
  2021-10-22 15:08 ` Ard Biesheuvel
  0 siblings, 1 reply; 3+ messages in thread
From: Rebecca Cran @ 2021-10-19 20:35 UTC (permalink / raw)
  To: Sami Mujawar, Ard Biesheuvel, Gerd Hoffmann, Samer El-Haj-Mahmoud,
	Leif Lindholm, devel
  Cc: Rebecca Cran

Add functions ArmCallSmc0/1/2/3 to do SMC calls with 0, 1, 2 or 3
arguments.
The functions return up to 3 values.

Signed-off-by: Rebecca Cran <rebecca@nuviainc.com>
---
 ArmPkg/Include/Library/ArmSmcLib.h           |  73 ++++++++++++
 ArmPkg/Library/ArmSmcLib/ArmSmc.c            | 122 ++++++++++++++++++++
 ArmPkg/Library/ArmSmcLib/ArmSmcLib.inf       |   3 +
 ArmPkg/Library/ArmSmcLibNull/ArmSmcLibNull.c |  85 ++++++++++++++
 4 files changed, 283 insertions(+)

diff --git a/ArmPkg/Include/Library/ArmSmcLib.h b/ArmPkg/Include/Library/ArmSmcLib.h
index ced60b3c1147..343ae7f40ad2 100644
--- a/ArmPkg/Include/Library/ArmSmcLib.h
+++ b/ArmPkg/Include/Library/ArmSmcLib.h
@@ -1,5 +1,6 @@
 /** @file
 *
+*  Copyright (c) 2021, NUVIA Inc. All rights reserved.<BR>
 *  Copyright (c) 2012-2014, ARM Limited. All rights reserved.
 *
 *  SPDX-License-Identifier: BSD-2-Clause-Patent
@@ -37,4 +38,76 @@ ArmCallSmc (
   IN OUT ARM_SMC_ARGS *Args
   );
 
+/** Trigger an SMC call with 3 arguments.
+
+  @param Function The SMC function.
+  @param Arg1     Argument/result.
+  @param Arg2     Argument/result.
+  @param Arg3     Argument/result.
+
+  @return The SMC error code.
+
+**/
+UINTN
+ArmCallSmc3 (
+  IN     UINTN Function,
+  IN OUT UINTN *Arg1,
+  IN OUT UINTN *Arg2,
+  IN OUT UINTN *Arg3
+  );
+
+/** Trigger an SMC call with 2 arguments.
+
+  @param Function The SMC function.
+  @param Arg1     Argument/result.
+  @param Arg2     Argument/result.
+  @param Arg3     Result.
+
+  @return The SMC error code.
+
+**/
+UINTN
+ArmCallSmc2 (
+  IN     UINTN Function,
+  IN OUT UINTN *Arg1,
+  IN OUT UINTN *Arg2,
+     OUT UINTN *Arg3
+  );
+
+/** Trigger an SMC call with 1 argument.
+
+  @param Function The SMC function.
+  @param Arg1     Argument/result.
+  @param Arg2     Result.
+  @param Arg3     Result.
+
+  @return The SMC error code.
+
+**/
+UINTN
+ArmCallSmc1 (
+  IN     UINTN Function,
+  IN OUT UINTN *Arg1,
+     OUT UINTN *Arg2,
+     OUT UINTN *Arg3
+  );
+
+/** Trigger an SMC call with 0 arguments.
+
+  @param Function The SMC function.
+  @param Arg1     Result.
+  @param Arg2     Result.
+  @param Arg3     Result.
+
+  @return The SMC error code.
+
+**/
+UINTN
+ArmCallSmc0 (
+  IN     UINTN Function,
+     OUT UINTN *Arg1,
+     OUT UINTN *Arg2,
+     OUT UINTN *Arg3
+  );
+
 #endif // ARM_SMC_LIB_H_
diff --git a/ArmPkg/Library/ArmSmcLib/ArmSmc.c b/ArmPkg/Library/ArmSmcLib/ArmSmc.c
new file mode 100644
index 000000000000..d596003a857e
--- /dev/null
+++ b/ArmPkg/Library/ArmSmcLib/ArmSmc.c
@@ -0,0 +1,122 @@
+/** @file
+  SMC helper functions.
+
+  Copyright (c) 2021, NUVIA Inc. All rights reserved.<BR>
+
+  SPDX-License-Identifier: BSD-2-Clause-Patent
+
+**/
+
+#include <Library/ArmSmcLib.h>
+
+/** Triggers an SMC call with 3 arguments.
+
+  @param Function The SMC function.
+  @param Arg1     Argument/result.
+  @param Arg2     Argument/result.
+  @param Arg3     Argument/result.
+
+  @return The SMC error code.
+**/
+UINTN
+ArmCallSmc3 (
+  IN     UINTN Function,
+  IN OUT UINTN *Arg1,
+  IN OUT UINTN *Arg2,
+  IN OUT UINTN *Arg3
+  )
+{
+  ARM_SMC_ARGS Args;
+  UINTN        ErrorCode;
+
+  Args.Arg0 = Function;
+
+  if (Arg1 != NULL) {
+    Args.Arg1 = *Arg1;
+  }
+  if (Arg2 != NULL) {
+    Args.Arg2 = *Arg2;
+  }
+  if (Arg3 != NULL) {
+    Args.Arg3 = *Arg3;
+  }
+
+  ArmCallSmc (&Args);
+
+  ErrorCode = Args.Arg0;
+
+  if (Arg1 != NULL) {
+    *Arg1 = Args.Arg1;
+  }
+  if (Arg2 != NULL) {
+    *Arg2 = Args.Arg2;
+  }
+  if (Arg3 != NULL) {
+    *Arg3 = Args.Arg3;
+  }
+
+  return ErrorCode;
+}
+
+/** Trigger an SMC call with 2 arguments.
+
+  @param Function The SMC function.
+  @param Arg1     Argument/result.
+  @param Arg2     Argument/result.
+  @param Arg3     Result.
+
+  @return The SMC error code.
+
+**/
+UINTN
+ArmCallSmc2 (
+  IN     UINTN Function,
+  IN OUT UINTN *Arg1,
+  IN OUT UINTN *Arg2,
+     OUT UINTN *Arg3
+  )
+{
+  return ArmCallSmc3 (Function, Arg1, Arg2, Arg3);
+}
+
+/** Trigger an SMC call with 1 argument.
+
+  @param Function The SMC function.
+  @param Arg1     Argument/result.
+  @param Arg2     Result.
+  @param Arg3     Result.
+
+  @return The SMC error code.
+
+**/
+UINTN
+ArmCallSmc1 (
+  IN     UINTN Function,
+  IN OUT UINTN *Arg1,
+     OUT UINTN *Arg2,
+     OUT UINTN *Arg3
+  )
+{
+  return ArmCallSmc3 (Function, Arg1, Arg2, Arg3);
+}
+
+/** Trigger an SMC call with 0 arguments.
+
+  @param Function The SMC function.
+  @param Arg1     Result.
+  @param Arg2     Result.
+  @param Arg3     Result.
+
+  @return The SMC error code.
+
+**/
+UINTN
+ArmCallSmc0 (
+  IN     UINTN Function,
+     OUT UINTN *Arg1,
+     OUT UINTN *Arg2,
+     OUT UINTN *Arg3
+  )
+{
+  return ArmCallSmc3 (Function, Arg1, Arg2, Arg3);
+}
diff --git a/ArmPkg/Library/ArmSmcLib/ArmSmcLib.inf b/ArmPkg/Library/ArmSmcLib/ArmSmcLib.inf
index 4f4b09f4528a..a89f9203fb7e 100644
--- a/ArmPkg/Library/ArmSmcLib/ArmSmcLib.inf
+++ b/ArmPkg/Library/ArmSmcLib/ArmSmcLib.inf
@@ -20,6 +20,9 @@
 [Sources.AARCH64]
   AArch64/ArmSmc.S
 
+[Sources]
+  ArmSmc.c
+
 [Packages]
   MdePkg/MdePkg.dec
   ArmPkg/ArmPkg.dec
diff --git a/ArmPkg/Library/ArmSmcLibNull/ArmSmcLibNull.c b/ArmPkg/Library/ArmSmcLibNull/ArmSmcLibNull.c
index 2d79aadaf1fa..ca1b8830a119 100644
--- a/ArmPkg/Library/ArmSmcLibNull/ArmSmcLibNull.c
+++ b/ArmPkg/Library/ArmSmcLibNull/ArmSmcLibNull.c
@@ -1,4 +1,5 @@
 //
+//  Copyright (c) 2021, NUVIA Inc. All rights reserved.
 //  Copyright (c) 2016, Linaro Limited. All rights reserved.
 //
 //  SPDX-License-Identifier: BSD-2-Clause-Patent
@@ -7,6 +8,7 @@
 
 #include <Base.h>
 #include <Library/ArmSmcLib.h>
+#include <IndustryStandard/ArmStdSmc.h>
 
 VOID
 ArmCallSmc (
@@ -14,3 +16,86 @@ ArmCallSmc (
   )
 {
 }
+
+/** Triggers an SMC call with 3 arguments.
+
+  @param Function The SMC function.
+  @param Arg1     Argument/result.
+  @param Arg2     Argument/result.
+  @param Arg3     Argument/result.
+
+  @return The SMC error code.
+**/
+UINTN
+ArmCallSmc3 (
+  IN     UINTN Function,
+  IN OUT UINTN *Arg1,
+  IN OUT UINTN *Arg2,
+  IN OUT UINTN *Arg3
+  )
+{
+  return SMC_ARCH_CALL_NOT_SUPPORTED;
+}
+
+/** Trigger an SMC call with 2 arguments.
+
+  @param Function The SMC function.
+  @param Arg1     Argument/result.
+  @param Arg2     Argument/result.
+  @param Arg3     Result.
+
+  @return The SMC error code.
+
+**/
+UINTN
+ArmCallSmc2 (
+  IN     UINTN Function,
+  IN OUT UINTN *Arg1,
+  IN OUT UINTN *Arg2,
+     OUT UINTN *Arg3
+  )
+{
+  return SMC_ARCH_CALL_NOT_SUPPORTED;
+}
+
+/** Trigger an SMC call with 1 argument.
+
+  @param Function The SMC function.
+  @param Arg1     Argument/result.
+  @param Arg2     Result.
+  @param Arg3     Result.
+
+  @return The SMC error code.
+
+**/
+UINTN
+ArmCallSmc1 (
+  IN     UINTN Function,
+  IN OUT UINTN *Arg1,
+     OUT UINTN *Arg2,
+     OUT UINTN *Arg3
+  )
+{
+  return SMC_ARCH_CALL_NOT_SUPPORTED;
+}
+
+/** Trigger an SMC call with 0 arguments.
+
+  @param Function The SMC function.
+  @param Arg1     Result.
+  @param Arg2     Result.
+  @param Arg3     Result.
+
+  @return The SMC error code.
+
+**/
+UINTN
+ArmCallSmc0 (
+  IN     UINTN Function,
+     OUT UINTN *Arg1,
+     OUT UINTN *Arg2,
+     OUT UINTN *Arg3
+  )
+{
+  return SMC_ARCH_CALL_NOT_SUPPORTED;
+}
-- 
2.31.1


^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [PATCH 1/1] ArmPkg: Add SMC helper functions
  2021-10-19 20:35 [PATCH 1/1] ArmPkg: Add SMC helper functions Rebecca Cran
@ 2021-10-22 15:08 ` Ard Biesheuvel
  2021-10-22 16:53   ` Rebecca Cran
  0 siblings, 1 reply; 3+ messages in thread
From: Ard Biesheuvel @ 2021-10-22 15:08 UTC (permalink / raw)
  To: Rebecca Cran
  Cc: Sami Mujawar, Ard Biesheuvel, Gerd Hoffmann, Samer El-Haj-Mahmoud,
	Leif Lindholm, edk2-devel-groups-io

Hi Rebecca,

On Tue, 19 Oct 2021 at 22:35, Rebecca Cran <rebecca@nuviainc.com> wrote:
>
> Add functions ArmCallSmc0/1/2/3 to do SMC calls with 0, 1, 2 or 3
> arguments.
> The functions return up to 3 values.
>

This is a lot of code to do something we already do in our code.

Care to elaborate what the use case is here? In any case, we generally
try to avoid submitting helper libraries like this without the user,
to avoid merging code that is already dead.



> Signed-off-by: Rebecca Cran <rebecca@nuviainc.com>
> ---
>  ArmPkg/Include/Library/ArmSmcLib.h           |  73 ++++++++++++
>  ArmPkg/Library/ArmSmcLib/ArmSmc.c            | 122 ++++++++++++++++++++
>  ArmPkg/Library/ArmSmcLib/ArmSmcLib.inf       |   3 +
>  ArmPkg/Library/ArmSmcLibNull/ArmSmcLibNull.c |  85 ++++++++++++++
>  4 files changed, 283 insertions(+)
>
> diff --git a/ArmPkg/Include/Library/ArmSmcLib.h b/ArmPkg/Include/Library/ArmSmcLib.h
> index ced60b3c1147..343ae7f40ad2 100644
> --- a/ArmPkg/Include/Library/ArmSmcLib.h
> +++ b/ArmPkg/Include/Library/ArmSmcLib.h
> @@ -1,5 +1,6 @@
>  /** @file
>  *
> +*  Copyright (c) 2021, NUVIA Inc. All rights reserved.<BR>
>  *  Copyright (c) 2012-2014, ARM Limited. All rights reserved.
>  *
>  *  SPDX-License-Identifier: BSD-2-Clause-Patent
> @@ -37,4 +38,76 @@ ArmCallSmc (
>    IN OUT ARM_SMC_ARGS *Args
>    );
>
> +/** Trigger an SMC call with 3 arguments.
> +
> +  @param Function The SMC function.
> +  @param Arg1     Argument/result.
> +  @param Arg2     Argument/result.
> +  @param Arg3     Argument/result.
> +
> +  @return The SMC error code.
> +
> +**/
> +UINTN
> +ArmCallSmc3 (
> +  IN     UINTN Function,
> +  IN OUT UINTN *Arg1,
> +  IN OUT UINTN *Arg2,
> +  IN OUT UINTN *Arg3
> +  );
> +
> +/** Trigger an SMC call with 2 arguments.
> +
> +  @param Function The SMC function.
> +  @param Arg1     Argument/result.
> +  @param Arg2     Argument/result.
> +  @param Arg3     Result.
> +
> +  @return The SMC error code.
> +
> +**/
> +UINTN
> +ArmCallSmc2 (
> +  IN     UINTN Function,
> +  IN OUT UINTN *Arg1,
> +  IN OUT UINTN *Arg2,
> +     OUT UINTN *Arg3
> +  );
> +
> +/** Trigger an SMC call with 1 argument.
> +
> +  @param Function The SMC function.
> +  @param Arg1     Argument/result.
> +  @param Arg2     Result.
> +  @param Arg3     Result.
> +
> +  @return The SMC error code.
> +
> +**/
> +UINTN
> +ArmCallSmc1 (
> +  IN     UINTN Function,
> +  IN OUT UINTN *Arg1,
> +     OUT UINTN *Arg2,
> +     OUT UINTN *Arg3
> +  );
> +
> +/** Trigger an SMC call with 0 arguments.
> +
> +  @param Function The SMC function.
> +  @param Arg1     Result.
> +  @param Arg2     Result.
> +  @param Arg3     Result.
> +
> +  @return The SMC error code.
> +
> +**/
> +UINTN
> +ArmCallSmc0 (
> +  IN     UINTN Function,
> +     OUT UINTN *Arg1,
> +     OUT UINTN *Arg2,
> +     OUT UINTN *Arg3
> +  );
> +
>  #endif // ARM_SMC_LIB_H_
> diff --git a/ArmPkg/Library/ArmSmcLib/ArmSmc.c b/ArmPkg/Library/ArmSmcLib/ArmSmc.c
> new file mode 100644
> index 000000000000..d596003a857e
> --- /dev/null
> +++ b/ArmPkg/Library/ArmSmcLib/ArmSmc.c
> @@ -0,0 +1,122 @@
> +/** @file
> +  SMC helper functions.
> +
> +  Copyright (c) 2021, NUVIA Inc. All rights reserved.<BR>
> +
> +  SPDX-License-Identifier: BSD-2-Clause-Patent
> +
> +**/
> +
> +#include <Library/ArmSmcLib.h>
> +
> +/** Triggers an SMC call with 3 arguments.
> +
> +  @param Function The SMC function.
> +  @param Arg1     Argument/result.
> +  @param Arg2     Argument/result.
> +  @param Arg3     Argument/result.
> +
> +  @return The SMC error code.
> +**/
> +UINTN
> +ArmCallSmc3 (
> +  IN     UINTN Function,
> +  IN OUT UINTN *Arg1,
> +  IN OUT UINTN *Arg2,
> +  IN OUT UINTN *Arg3
> +  )
> +{
> +  ARM_SMC_ARGS Args;
> +  UINTN        ErrorCode;
> +
> +  Args.Arg0 = Function;
> +
> +  if (Arg1 != NULL) {
> +    Args.Arg1 = *Arg1;
> +  }
> +  if (Arg2 != NULL) {
> +    Args.Arg2 = *Arg2;
> +  }
> +  if (Arg3 != NULL) {
> +    Args.Arg3 = *Arg3;
> +  }
> +
> +  ArmCallSmc (&Args);
> +
> +  ErrorCode = Args.Arg0;
> +
> +  if (Arg1 != NULL) {
> +    *Arg1 = Args.Arg1;
> +  }
> +  if (Arg2 != NULL) {
> +    *Arg2 = Args.Arg2;
> +  }
> +  if (Arg3 != NULL) {
> +    *Arg3 = Args.Arg3;
> +  }
> +
> +  return ErrorCode;
> +}
> +
> +/** Trigger an SMC call with 2 arguments.
> +
> +  @param Function The SMC function.
> +  @param Arg1     Argument/result.
> +  @param Arg2     Argument/result.
> +  @param Arg3     Result.
> +
> +  @return The SMC error code.
> +
> +**/
> +UINTN
> +ArmCallSmc2 (
> +  IN     UINTN Function,
> +  IN OUT UINTN *Arg1,
> +  IN OUT UINTN *Arg2,
> +     OUT UINTN *Arg3
> +  )
> +{
> +  return ArmCallSmc3 (Function, Arg1, Arg2, Arg3);
> +}
> +
> +/** Trigger an SMC call with 1 argument.
> +
> +  @param Function The SMC function.
> +  @param Arg1     Argument/result.
> +  @param Arg2     Result.
> +  @param Arg3     Result.
> +
> +  @return The SMC error code.
> +
> +**/
> +UINTN
> +ArmCallSmc1 (
> +  IN     UINTN Function,
> +  IN OUT UINTN *Arg1,
> +     OUT UINTN *Arg2,
> +     OUT UINTN *Arg3
> +  )
> +{
> +  return ArmCallSmc3 (Function, Arg1, Arg2, Arg3);
> +}
> +
> +/** Trigger an SMC call with 0 arguments.
> +
> +  @param Function The SMC function.
> +  @param Arg1     Result.
> +  @param Arg2     Result.
> +  @param Arg3     Result.
> +
> +  @return The SMC error code.
> +
> +**/
> +UINTN
> +ArmCallSmc0 (
> +  IN     UINTN Function,
> +     OUT UINTN *Arg1,
> +     OUT UINTN *Arg2,
> +     OUT UINTN *Arg3
> +  )
> +{
> +  return ArmCallSmc3 (Function, Arg1, Arg2, Arg3);
> +}
> diff --git a/ArmPkg/Library/ArmSmcLib/ArmSmcLib.inf b/ArmPkg/Library/ArmSmcLib/ArmSmcLib.inf
> index 4f4b09f4528a..a89f9203fb7e 100644
> --- a/ArmPkg/Library/ArmSmcLib/ArmSmcLib.inf
> +++ b/ArmPkg/Library/ArmSmcLib/ArmSmcLib.inf
> @@ -20,6 +20,9 @@
>  [Sources.AARCH64]
>    AArch64/ArmSmc.S
>
> +[Sources]
> +  ArmSmc.c
> +
>  [Packages]
>    MdePkg/MdePkg.dec
>    ArmPkg/ArmPkg.dec
> diff --git a/ArmPkg/Library/ArmSmcLibNull/ArmSmcLibNull.c b/ArmPkg/Library/ArmSmcLibNull/ArmSmcLibNull.c
> index 2d79aadaf1fa..ca1b8830a119 100644
> --- a/ArmPkg/Library/ArmSmcLibNull/ArmSmcLibNull.c
> +++ b/ArmPkg/Library/ArmSmcLibNull/ArmSmcLibNull.c
> @@ -1,4 +1,5 @@
>  //
> +//  Copyright (c) 2021, NUVIA Inc. All rights reserved.
>  //  Copyright (c) 2016, Linaro Limited. All rights reserved.
>  //
>  //  SPDX-License-Identifier: BSD-2-Clause-Patent
> @@ -7,6 +8,7 @@
>
>  #include <Base.h>
>  #include <Library/ArmSmcLib.h>
> +#include <IndustryStandard/ArmStdSmc.h>
>
>  VOID
>  ArmCallSmc (
> @@ -14,3 +16,86 @@ ArmCallSmc (
>    )
>  {
>  }
> +
> +/** Triggers an SMC call with 3 arguments.
> +
> +  @param Function The SMC function.
> +  @param Arg1     Argument/result.
> +  @param Arg2     Argument/result.
> +  @param Arg3     Argument/result.
> +
> +  @return The SMC error code.
> +**/
> +UINTN
> +ArmCallSmc3 (
> +  IN     UINTN Function,
> +  IN OUT UINTN *Arg1,
> +  IN OUT UINTN *Arg2,
> +  IN OUT UINTN *Arg3
> +  )
> +{
> +  return SMC_ARCH_CALL_NOT_SUPPORTED;
> +}
> +
> +/** Trigger an SMC call with 2 arguments.
> +
> +  @param Function The SMC function.
> +  @param Arg1     Argument/result.
> +  @param Arg2     Argument/result.
> +  @param Arg3     Result.
> +
> +  @return The SMC error code.
> +
> +**/
> +UINTN
> +ArmCallSmc2 (
> +  IN     UINTN Function,
> +  IN OUT UINTN *Arg1,
> +  IN OUT UINTN *Arg2,
> +     OUT UINTN *Arg3
> +  )
> +{
> +  return SMC_ARCH_CALL_NOT_SUPPORTED;
> +}
> +
> +/** Trigger an SMC call with 1 argument.
> +
> +  @param Function The SMC function.
> +  @param Arg1     Argument/result.
> +  @param Arg2     Result.
> +  @param Arg3     Result.
> +
> +  @return The SMC error code.
> +
> +**/
> +UINTN
> +ArmCallSmc1 (
> +  IN     UINTN Function,
> +  IN OUT UINTN *Arg1,
> +     OUT UINTN *Arg2,
> +     OUT UINTN *Arg3
> +  )
> +{
> +  return SMC_ARCH_CALL_NOT_SUPPORTED;
> +}
> +
> +/** Trigger an SMC call with 0 arguments.
> +
> +  @param Function The SMC function.
> +  @param Arg1     Result.
> +  @param Arg2     Result.
> +  @param Arg3     Result.
> +
> +  @return The SMC error code.
> +
> +**/
> +UINTN
> +ArmCallSmc0 (
> +  IN     UINTN Function,
> +     OUT UINTN *Arg1,
> +     OUT UINTN *Arg2,
> +     OUT UINTN *Arg3
> +  )
> +{
> +  return SMC_ARCH_CALL_NOT_SUPPORTED;
> +}
> --
> 2.31.1
>

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH 1/1] ArmPkg: Add SMC helper functions
  2021-10-22 15:08 ` Ard Biesheuvel
@ 2021-10-22 16:53   ` Rebecca Cran
  0 siblings, 0 replies; 3+ messages in thread
From: Rebecca Cran @ 2021-10-22 16:53 UTC (permalink / raw)
  To: Ard Biesheuvel
  Cc: Sami Mujawar, Ard Biesheuvel, Gerd Hoffmann, Samer El-Haj-Mahmoud,
	Leif Lindholm, edk2-devel-groups-io

On 10/22/21 9:08 AM, Ard Biesheuvel wrote:
> On Tue, 19 Oct 2021 at 22:35, Rebecca Cran <rebecca@nuviainc.com> wrote:
>> Add functions ArmCallSmc0/1/2/3 to do SMC calls with 0, 1, 2 or 3
>> arguments.
>> The functions return up to 3 values.
>>
> This is a lot of code to do something we already do in our code.
>
> Care to elaborate what the use case is here? In any case, we generally
> try to avoid submitting helper libraries like this without the user,
> to avoid merging code that is already dead.


Sure! With the current interface, there's lots of template code to set 
up the structure and extract results from it. By passing pointers to the 
arguments and results into the functions, this patch removes that 
template code.

I can send out a v2 patch set which includes changes to existing SMC 
calls so the new functions are used.


-- 
Rebecca Cran


^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2021-10-22 16:53 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2021-10-19 20:35 [PATCH 1/1] ArmPkg: Add SMC helper functions Rebecca Cran
2021-10-22 15:08 ` Ard Biesheuvel
2021-10-22 16:53   ` Rebecca Cran

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox