summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKun Qin <kuqin@microsoft.com>2025-02-05 16:00:12 -0800
committermergify[bot] <37929162+mergify[bot]@users.noreply.github.com>2025-02-11 21:21:40 +0000
commit523dbb6d597b63181bba85a337d1f53e511f4822 (patch)
treeb68f9f6f447c382af96c539898453425ba394f65
parent96cf70951f53f16853fdd42129b73940e71bab2d (diff)
downloadedk2-523dbb6d597b63181bba85a337d1f53e511f4822.tar.gz
ArmPkg: ArmFfaStandaloneMmLib: Fix non-FFA path
ArmFfaLibCommonInit will return EFI_UNSUPPORTED when there is no FFA supported on the platform. This is expected behavior. However, the return of error code will incur program asserts. This change fixed the non-FFA path for the Standalone MM instance. Signed-off-by: Kun Qin <kun.qin@microsoft.com>
-rw-r--r--ArmPkg/Library/ArmFfaLib/ArmFfaStandaloneMmLib.c19
1 files changed, 18 insertions, 1 deletions
diff --git a/ArmPkg/Library/ArmFfaLib/ArmFfaStandaloneMmLib.c b/ArmPkg/Library/ArmFfaLib/ArmFfaStandaloneMmLib.c
index ce70e07d48..2d7f834219 100644
--- a/ArmPkg/Library/ArmFfaLib/ArmFfaStandaloneMmLib.c
+++ b/ArmPkg/Library/ArmFfaLib/ArmFfaStandaloneMmLib.c
@@ -68,5 +68,22 @@ ArmFfaStandaloneMmLibConstructor (
IN EFI_MM_SYSTEM_TABLE *MmSystemTable
)
{
- return ArmFfaLibCommonInit ();
+ EFI_STATUS Status;
+
+ Status = ArmFfaLibCommonInit ();
+ if (Status == EFI_UNSUPPORTED) {
+ /*
+ * EFI_UNSUPPORTED means FF-A interface isn't available.
+ * However, for Standalone MM modules, FF-A availability is not required.
+ * i.e. Standalone MM could use SpmMm as a legitimate protocol.
+ * Thus, returning EFI_SUCCESS here to avoid the entrypoint to assert.
+ */
+ return EFI_SUCCESS;
+ }
+
+ if (EFI_ERROR (Status)) {
+ DEBUG ((DEBUG_ERROR, "%a failed. Status = %r\n", __func__, Status));
+ }
+
+ return Status;
}