summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLevi Yun <yeoreum.yun@arm.com>2024-09-20 12:37:47 +0100
committermergify[bot] <37929162+mergify[bot]@users.noreply.github.com>2025-01-17 14:55:42 +0000
commit401699c3267a6fab120cdb5ee3887909728cd2de (patch)
treecf41e1a237d686c96908f36cf34e74de974896fb
parent166c3b2eb79b1bdfd74b582446d4c5fa2402d33d (diff)
downloadedk2-401699c3267a6fab120cdb5ee3887909728cd2de.tar.gz
ArmPkg: Add ArmFfaLib used in StandaloneMm
Add ArmFfaLib used in StandaloneMmCore/StandaloneMm Driver. Continuous-integration-options: PatchCheck.ignore-multi-package Signed-off-by: Levi Yun <yeoreum.yun@arm.com>
-rw-r--r--ArmPkg/ArmPkg.dsc2
-rw-r--r--ArmPkg/Library/ArmFfaLib/ArmFfaStandaloneMmCoreLib.inf36
-rw-r--r--ArmPkg/Library/ArmFfaLib/ArmFfaStandaloneMmLib.c72
-rw-r--r--ArmPkg/Library/ArmFfaLib/ArmFfaStandaloneMmLib.inf37
-rw-r--r--StandaloneMmPkg/StandaloneMmPkg.dsc1
5 files changed, 148 insertions, 0 deletions
diff --git a/ArmPkg/ArmPkg.dsc b/ArmPkg/ArmPkg.dsc
index df50b38b7d..330effdfe3 100644
--- a/ArmPkg/ArmPkg.dsc
+++ b/ArmPkg/ArmPkg.dsc
@@ -136,6 +136,8 @@
ArmPkg/Library/ArmTransferListLib/ArmTransferListLib.inf
ArmPkg/Library/ArmFfaLib/ArmFfaPeiLib.inf
ArmPkg/Library/ArmFfaLib/ArmFfaDxeLib.inf
+ ArmPkg/Library/ArmFfaLib/ArmFfaStandaloneMmCoreLib.inf
+ ArmPkg/Library/ArmFfaLib/ArmFfaStandaloneMmLib.inf
ArmPkg/Filesystem/SemihostFs/SemihostFs.inf
diff --git a/ArmPkg/Library/ArmFfaLib/ArmFfaStandaloneMmCoreLib.inf b/ArmPkg/Library/ArmFfaLib/ArmFfaStandaloneMmCoreLib.inf
new file mode 100644
index 0000000000..a31fa5b152
--- /dev/null
+++ b/ArmPkg/Library/ArmFfaLib/ArmFfaStandaloneMmCoreLib.inf
@@ -0,0 +1,36 @@
+## @file
+# Provides FF-A ABI Library used in StandaloneMmCore.
+#
+# Copyright (c) 2024, Arm Limited. All rights reserved.<BR>
+#
+# SPDX-License-Identifier: BSD-2-Clause-Patent
+##
+
+[Defines]
+ INF_VERSION = 0x0001001B
+ BASE_NAME = ArmFfaStandaloneMmCoreLib
+ FILE_GUID = 80d2c4dc-5f0b-11ef-bc86-43b3fb486d6d
+ MODULE_TYPE = MM_CORE_STANDALONE
+ VERSION_STRING = 1.0
+ PI_SPECIFICATION_VERSION = 0x00010032
+ LIBRARY_CLASS = ArmFfaLib
+ CONSTRUCTOR = ArmFfaStandaloneMmLibConstructor
+
+[Sources]
+ ArmFfaCommon.h
+ ArmFfaCommon.c
+ ArmFfaStandaloneMmLib.c
+
+[Packages]
+ MdePkg/MdePkg.dec
+ ArmPkg/ArmPkg.dec
+
+[LibraryClasses]
+ ArmSmcLib
+ ArmSvcLib
+ BaseLib
+ BaseMemoryLib
+ DebugLib
+
+[Pcd]
+ gArmTokenSpaceGuid.PcdFfaLibConduitSmc
diff --git a/ArmPkg/Library/ArmFfaLib/ArmFfaStandaloneMmLib.c b/ArmPkg/Library/ArmFfaLib/ArmFfaStandaloneMmLib.c
new file mode 100644
index 0000000000..ce70e07d48
--- /dev/null
+++ b/ArmPkg/Library/ArmFfaLib/ArmFfaStandaloneMmLib.c
@@ -0,0 +1,72 @@
+/** @file
+ Arm Ffa library code for StandaloneMmCore.
+
+ Copyright (c) 2024, Arm Limited. All rights reserved.<BR>
+ SPDX-License-Identifier: BSD-2-Clause-Patent
+
+ @par Glossary:
+ - FF-A - Firmware Framework for Arm A-profile
+
+ @par Reference(s):
+ - Arm Firmware Framework for Arm A-Profile [https://developer.arm.com/documentation/den0077/latest]
+
+**/
+
+#include <PiMm.h>
+
+#include <Library/ArmLib.h>
+#include <Library/ArmSmcLib.h>
+#include <Library/ArmFfaLib.h>
+#include <Library/BaseLib.h>
+#include <Library/BaseMemoryLib.h>
+#include <Library/DebugLib.h>
+
+#include "ArmFfaCommon.h"
+
+/**
+ Get mapped Rx/Tx buffers.
+
+ @param [out] TxBuffer Address of TxBuffer
+ @param [out] TxBufferSize Size of TxBuffer
+ @param [out] RxBuffer Address of RxBuffer
+ @param [out] RxBufferSize Size of RxBuffer
+
+ @retval EFI_SUCCESS
+ @retval Others Error.
+
+**/
+EFI_STATUS
+EFIAPI
+ArmFfaLibGetRxTxBuffers (
+ OUT VOID **TxBuffer,
+ OUT UINT64 *TxBufferSize,
+ OUT VOID **RxBuffer,
+ OUT UINT64 *RxBufferSize
+ )
+{
+ /*
+ * StandaloneMm doesn't use Rx/Tx buffer.
+ * So, return EFI_UNSUPPORTED.
+ */
+ return EFI_UNSUPPORTED;
+}
+
+/**
+ ArmFfaLib Constructor.
+
+ @param [in] ImageHandle The firmware allocated handle for the EFI image
+ @param [in] MmSystemTable A pointer to the Management mode System Table
+
+ @retval EFI_SUCCESS Success
+ @retval Others Error
+
+**/
+EFI_STATUS
+EFIAPI
+ArmFfaStandaloneMmLibConstructor (
+ IN EFI_HANDLE ImageHandle,
+ IN EFI_MM_SYSTEM_TABLE *MmSystemTable
+ )
+{
+ return ArmFfaLibCommonInit ();
+}
diff --git a/ArmPkg/Library/ArmFfaLib/ArmFfaStandaloneMmLib.inf b/ArmPkg/Library/ArmFfaLib/ArmFfaStandaloneMmLib.inf
new file mode 100644
index 0000000000..bd3ec3fe8d
--- /dev/null
+++ b/ArmPkg/Library/ArmFfaLib/ArmFfaStandaloneMmLib.inf
@@ -0,0 +1,37 @@
+## @file
+# Provides FF-A ABI Library used in StandaloneMmCore.
+#
+# Copyright (c) 2024, Arm Limited. All rights reserved.<BR>
+#
+# SPDX-License-Identifier: BSD-2-Clause-Patent
+##
+
+[Defines]
+ INF_VERSION = 0x0001001B
+ BASE_NAME = ArmFfaStandaloneMmLib
+ FILE_GUID = e07db74e-6a95-11ef-97ea-c7a6149e81c9
+ MODULE_TYPE = MM_STANDALONE
+ VERSION_STRING = 1.0
+ PI_SPECIFICATION_VERSION = 0x00010032
+ LIBRARY_CLASS = ArmFfaLib
+ CONSTRUCTOR = ArmFfaStandaloneMmLibConstructor
+
+[Sources]
+ ArmFfaCommon.h
+ ArmFfaCommon.c
+ ArmFfaStandaloneMmLib.c
+
+[Packages]
+ MdePkg/MdePkg.dec
+ ArmPkg/ArmPkg.dec
+
+[LibraryClasses]
+ ArmSmcLib
+ ArmSvcLib
+ BaseLib
+ BaseMemoryLib
+ DebugLib
+
+[Pcd]
+ gArmTokenSpaceGuid.PcdFfaLibConduitSmc
+
diff --git a/StandaloneMmPkg/StandaloneMmPkg.dsc b/StandaloneMmPkg/StandaloneMmPkg.dsc
index 857a41be44..cf2075eaf3 100644
--- a/StandaloneMmPkg/StandaloneMmPkg.dsc
+++ b/StandaloneMmPkg/StandaloneMmPkg.dsc
@@ -82,6 +82,7 @@
[LibraryClasses.common.MM_CORE_STANDALONE]
HobLib|StandaloneMmPkg/Library/StandaloneMmCoreHobLib/StandaloneMmCoreHobLib.inf
+ ArmFfaLib|ArmPkg/Library/ArmFfaLib/ArmFfaStandaloneMmCoreLib.inf
[LibraryClasses.common.MM_STANDALONE]
MemoryAllocationLib|StandaloneMmPkg/Library/StandaloneMmMemoryAllocationLib/StandaloneMmMemoryAllocationLib.inf