From 54e394b4a20ea5ad0a1dee32e3ea498f5d7d3188 Mon Sep 17 00:00:00 2001 From: "levi.yun" Date: Mon, 23 Dec 2024 18:36:00 +0000 Subject: [PATCH] ArmPkg/StandaloneMmMmuLib: Introduce a SPM_MM status helper fucntion Introduce a new helper function SpmMmStatusToEfiStatus() to convert the SPM_MM status values to EFI_STATUS values. Signed-off-by: Levi yun --- .../ArmMmuStandaloneMmLib.c | 46 +++++++++++-------- 1 file changed, 28 insertions(+), 18 deletions(-) diff --git a/ArmPkg/Library/StandaloneMmMmuLib/ArmMmuStandaloneMmLib.c b/ArmPkg/Library/StandaloneMmMmuLib/ArmMmuStandaloneMmLib.c index a30273c011..bfec689a0c 100644 --- a/ArmPkg/Library/StandaloneMmMmuLib/ArmMmuStandaloneMmLib.c +++ b/ArmPkg/Library/StandaloneMmMmuLib/ArmMmuStandaloneMmLib.c @@ -25,6 +25,33 @@ #include #include +/** + Convert FFA return code to EFI_STATUS. + + @param [in] SpmMmStatus SPM_MM return code + + @retval EFI_STATUS correspond EFI_STATUS to SpmMmStatus +**/ +STATIC +EFI_STATUS +SpmMmStatusToEfiStatus ( + IN UINTN SpmMmStatus + ) +{ + switch (SpmMmStatus) { + case ARM_SPM_MM_RET_SUCCESS: + return EFI_SUCCESS; + case ARM_SPM_MM_RET_INVALID_PARAMS: + return EFI_INVALID_PARAMETER; + case ARM_SPM_MM_RET_DENIED: + return EFI_ACCESS_DENIED; + case ARM_SPM_MM_RET_NO_MEMORY: + return EFI_OUT_OF_RESOURCES; + default: + return EFI_UNSUPPORTED; + } +} + /** Send memory permission request to target. @param [in, out] SvcArgs Pointer to SVC arguments to send. On @@ -106,24 +133,7 @@ SendMemoryPermissionRequest ( // Bit 31 set means there is an error returned // See [1], Section 13.5.5.1 MM_SP_MEMORY_ATTRIBUTES_GET_AARCH64 and // Section 13.5.5.2 MM_SP_MEMORY_ATTRIBUTES_SET_AARCH64. - switch (*RetVal) { - case ARM_SPM_MM_RET_NOT_SUPPORTED: - return EFI_UNSUPPORTED; - - case ARM_SPM_MM_RET_INVALID_PARAMS: - return EFI_INVALID_PARAMETER; - - case ARM_SPM_MM_RET_DENIED: - return EFI_ACCESS_DENIED; - - case ARM_SPM_MM_RET_NO_MEMORY: - return EFI_OUT_OF_RESOURCES; - - default: - // Undefined error code received. - ASSERT (0); - return EFI_INVALID_PARAMETER; - } + SpmMmStatusToEfiStatus (*RetVal); } return EFI_SUCCESS;