diff options
| author | Yeoreum Yun <yeoreum.yun@arm.com> | 2026-04-22 18:12:33 +0300 |
|---|---|---|
| committer | Ard Biesheuvel <ardb@kernel.org> | 2026-04-28 20:19:44 +0300 |
| commit | ae2d2d76c1b9c1f28abaee67f335dec29c96f7ec (patch) | |
| tree | 997aaf1f657048064a5bf99e2edd8921d765aad1 /MdeModulePkg/Library | |
| parent | 50349c5e07e7a6b0451c42104c18553a14fabc32 (diff) | |
| download | edk2-ae2d2d76c1b9c1f28abaee67f335dec29c96f7ec.tar.xz | |
ArmPkg,MdePkg,MdeModulePkg: change ArmFfaLibGetVersion() with whole version
Current ArmFfaLibGetVersion()'s arguments receive two arguments
-- major version and minor version.
However, This gives some impression treating major and minor version
of the ABI as two unrelated 16-bit variables as opposed to
the upper and lower 16-bits of a 32-bit version variable.
Therefore, change the arguments with whole version and
let user to get major/minor version via ARM_FFA_MAJOR/MINOR_VERSION_GET
macros.
Also, add some useful helper to check version compatibility and
mimimum require ABI version.
Continuous-integration-options: PatchCheck.ignore-multi-package
Suggested-by: Leif Lindholm <quic_llindhol@quicinc.com>
Signed-off-by: Yeoreum Yun <yeoreum.yun@arm.com>
Diffstat (limited to 'MdeModulePkg/Library')
| -rw-r--r-- | MdeModulePkg/Library/ArmFfaLib/ArmFfaCommon.c | 44 |
1 files changed, 14 insertions, 30 deletions
diff --git a/MdeModulePkg/Library/ArmFfaLib/ArmFfaCommon.c b/MdeModulePkg/Library/ArmFfaLib/ArmFfaCommon.c index 466b12b1b3..f64d5cb2ab 100644 --- a/MdeModulePkg/Library/ArmFfaLib/ArmFfaCommon.c +++ b/MdeModulePkg/Library/ArmFfaLib/ArmFfaCommon.c @@ -176,19 +176,15 @@ ArmCallFfa ( /**
Get FF-A version.
- @param [in] RequestMajorVersion Minimal request major version
- @param [in] RequestMinorVersion Minimal request minor version
- @param [out] CurrentMajorVersion Current major version
- @param [out] CurrentMinorVersion Current minor version
+ @param [in] RequestVersion Minimal request version
+ @param [out] CurrentVersion Current major version
**/
EFI_STATUS
EFIAPI
ArmFfaLibGetVersion (
- IN UINT16 RequestMajorVersion,
- IN UINT16 RequestMinorVersion,
- OUT UINT16 *CurrentMajorVersion,
- OUT UINT16 *CurrentMinorVersion
+ IN UINT32 RequestVersion,
+ OUT UINT32 *CurrentVersion
)
{
EFI_STATUS Status;
@@ -197,10 +193,7 @@ ArmFfaLibGetVersion ( ZeroMem (&FfaArgs, sizeof (ARM_FFA_ARGS));
FfaArgs.Arg0 = ARM_FID_FFA_VERSION;
- FfaArgs.Arg1 = ARM_FFA_CREATE_VERSION (
- RequestMajorVersion,
- RequestMinorVersion
- );
+ FfaArgs.Arg1 = RequestVersion;
ArmCallFfa (&FfaArgs);
@@ -209,12 +202,8 @@ ArmFfaLibGetVersion ( return Status;
}
- if (CurrentMajorVersion != NULL) {
- *CurrentMajorVersion = ARM_FFA_MAJOR_VERSION_GET (FfaArgs.Arg0);
- }
-
- if (CurrentMinorVersion != NULL) {
- *CurrentMinorVersion = ARM_FFA_MINOR_VERSION_GET (FfaArgs.Arg0);
+ if (CurrentVersion != NULL) {
+ *CurrentVersion = FfaArgs.Arg0;
}
return EFI_SUCCESS;
@@ -1208,31 +1197,26 @@ ArmFfaLibIsFfaSupported ( )
{
EFI_STATUS Status;
- UINT16 CurrentMajorVersion;
- UINT16 CurrentMinorVersion;
+ UINT32 CurrentVersion;
Status = ArmFfaLibGetVersion (
- ARM_FFA_MAJOR_VERSION,
- ARM_FFA_MINOR_VERSION,
- &CurrentMajorVersion,
- &CurrentMinorVersion
+ ARM_FFA_CREATE_VERSION (ARM_FFA_MAJOR_VERSION, ARM_FFA_MINOR_VERSION),
+ &CurrentVersion
);
if (EFI_ERROR (Status)) {
return FALSE;
}
- if ((ARM_FFA_MAJOR_VERSION != CurrentMajorVersion) ||
- (ARM_FFA_MINOR_VERSION > CurrentMinorVersion))
- {
+ if (!ARM_FFA_ABI_COMPATIBLE (CurrentVersion, ARM_FFA_MAJOR_VERSION, ARM_FFA_MINOR_VERSION)) {
DEBUG ((
DEBUG_INFO,
"Incompatible FF-A Versions.\n" \
"Request Version: Major=0x%x, Minor=0x%x.\n" \
- "Current Version: Major=0x%x, Minor>=0x%x.\n",
+ "Current Version: Major=0x%x, Minor=0x%x.\n",
ARM_FFA_MAJOR_VERSION,
ARM_FFA_MINOR_VERSION,
- CurrentMajorVersion,
- CurrentMinorVersion
+ ARM_FFA_MAJOR_VERSION_GET (CurrentVersion),
+ ARM_FFA_MINOR_VERSION_GET (CurrentVersion)
));
return FALSE;
}
|
