From 764942a2dd9ea2c7fa3243ced4395aacd5133c82 Mon Sep 17 00:00:00 2001 From: Sami Mujawar Date: Mon, 7 Dec 2020 11:22:43 +0000 Subject: StandaloneMmPkg: Fix ECC error 4002 in StandaloneMmCoreEntryPoint Bugzilla: 3150 (https://bugzilla.tianocore.org/show_bug.cgi?id=3150) Add doxygen style function headers to fix ECC reported errors "[4002] Function header doesn't exist Function". Also update the corresponding declaration to add IN/OUT doxygen style reference tags. Signed-off-by: Sami Mujawar Acked-by: Jiewen Yao Acked-by: Ard Biesheuvel Reviewed-by: Liming Gao --- .../Library/AArch64/StandaloneMmCoreEntryPoint.h | 34 +++++++-------- .../AArch64/SetPermissions.c | 48 ++++++++++++++++++++++ .../AArch64/StandaloneMmCoreEntryPoint.c | 14 ++++++- 3 files changed, 78 insertions(+), 18 deletions(-) (limited to 'StandaloneMmPkg') diff --git a/StandaloneMmPkg/Include/Library/AArch64/StandaloneMmCoreEntryPoint.h b/StandaloneMmPkg/Include/Library/AArch64/StandaloneMmCoreEntryPoint.h index 0f9a032404..8e39ea16d7 100644 --- a/StandaloneMmPkg/Include/Library/AArch64/StandaloneMmCoreEntryPoint.h +++ b/StandaloneMmPkg/Include/Library/AArch64/StandaloneMmCoreEntryPoint.h @@ -2,7 +2,7 @@ Entry point to the Standalone MM Foundation when initialized during the SEC phase on ARM platforms -Copyright (c) 2017 - 2018, ARM Ltd. All rights reserved.
+Copyright (c) 2017 - 2021, Arm Ltd. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent **/ @@ -70,13 +70,13 @@ typedef RETURN_STATUS (*REGION_PERMISSION_UPDATE_FUNC) ( sections in the Standalone MM Core module to be able to access RO and RW data and make further progress in the boot process. - @param ImageContext Pointer to PE/COFF image context - @param ImageBase Base of image in memory - @param SectionHeaderOffset Offset of PE/COFF image section header - @param NumberOfSections Number of Sections - @param TextUpdater Function to change code permissions - @param ReadOnlyUpdater Function to change RO permissions - @param ReadWriteUpdater Function to change RW permissions + @param [in] ImageContext Pointer to PE/COFF image context + @param [in] ImageBase Base of image in memory + @param [in] SectionHeaderOffset Offset of PE/COFF image section header + @param [in] NumberOfSections Number of Sections + @param [in] TextUpdater Function to change code permissions + @param [in] ReadOnlyUpdater Function to change RO permissions + @param [in] ReadWriteUpdater Function to change RW permissions **/ EFI_STATUS @@ -98,11 +98,11 @@ UpdateMmFoundationPeCoffPermissions ( the Standalone MM Core module to be able to change permissions of the individual sections later in the boot process. - @param TeData Pointer to PE/COFF image data - @param ImageContext Pointer to PE/COFF image context - @param ImageBase Pointer to ImageBase variable - @param SectionHeaderOffset Offset of PE/COFF image section header - @param NumberOfSections Number of Sections + @param [in] TeData Pointer to PE/COFF image data + @param [in, out] ImageContext Pointer to PE/COFF image context + @param [out] ImageBase Pointer to ImageBase variable + @param [in, out] SectionHeaderOffset Offset of PE/COFF image section header + @param [in, out] NumberOfSections Number of Sections **/ EFI_STATUS @@ -121,10 +121,10 @@ GetStandaloneMmCorePeCoffSections ( by the Boot Firmware Volume. This function locates the Standalone MM Core module PE/COFF image in the BFV and returns this information. - @param BfvAddress Base Address of Boot Firmware Volume - @param TeData Pointer to address for allocating memory for - PE/COFF image data - @param TeDataSize Pointer to size of PE/COFF image data + @param [in] BfvAddress Base Address of Boot Firmware Volume + @param [in, out] TeData Pointer to address for allocating memory + for PE/COFF image data + @param [in, out] TeDataSize Pointer to size of PE/COFF image data **/ EFI_STATUS diff --git a/StandaloneMmPkg/Library/StandaloneMmCoreEntryPoint/AArch64/SetPermissions.c b/StandaloneMmPkg/Library/StandaloneMmCoreEntryPoint/AArch64/SetPermissions.c index 57325c4a5f..4a380df4a6 100644 --- a/StandaloneMmPkg/Library/StandaloneMmCoreEntryPoint/AArch64/SetPermissions.c +++ b/StandaloneMmPkg/Library/StandaloneMmCoreEntryPoint/AArch64/SetPermissions.c @@ -25,6 +25,21 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #include +/** + Privileged firmware assigns RO & Executable attributes to all memory occupied + by the Boot Firmware Volume. This function sets the correct permissions of + sections in the Standalone MM Core module to be able to access RO and RW data + and make further progress in the boot process. + + @param [in] ImageContext Pointer to PE/COFF image context + @param [in] ImageBase Base of image in memory + @param [in] SectionHeaderOffset Offset of PE/COFF image section header + @param [in] NumberOfSections Number of Sections + @param [in] TextUpdater Function to change code permissions + @param [in] ReadOnlyUpdater Function to change RO permissions + @param [in] ReadWriteUpdater Function to change RW permissions + +**/ EFI_STATUS EFIAPI UpdateMmFoundationPeCoffPermissions ( @@ -113,6 +128,17 @@ UpdateMmFoundationPeCoffPermissions ( return RETURN_SUCCESS; } +/** + Privileged firmware assigns RO & Executable attributes to all memory occupied + by the Boot Firmware Volume. This function locates the Standalone MM Core + module PE/COFF image in the BFV and returns this information. + + @param [in] BfvAddress Base Address of Boot Firmware Volume + @param [in, out] TeData Pointer to address for allocating memory + for PE/COFF image data + @param [in, out] TeDataSize Pointer to size of PE/COFF image data + +**/ EFI_STATUS EFIAPI LocateStandaloneMmCorePeCoffData ( @@ -151,6 +177,15 @@ LocateStandaloneMmCorePeCoffData ( return Status; } +/** + Returns the PC COFF section information. + + @param [in, out] ImageContext Pointer to PE/COFF image context + @param [out] ImageBase Base of image in memory + @param [out] SectionHeaderOffset Offset of PE/COFF image section header + @param [out] NumberOfSections Number of Sections + +**/ STATIC EFI_STATUS GetPeCoffSectionInformation ( @@ -241,6 +276,19 @@ GetPeCoffSectionInformation ( return RETURN_SUCCESS; } +/** + Privileged firmware assigns RO & Executable attributes to all memory occupied + by the Boot Firmware Volume. This function locates the section information of + the Standalone MM Core module to be able to change permissions of the + individual sections later in the boot process. + + @param [in] TeData Pointer to PE/COFF image data + @param [in, out] ImageContext Pointer to PE/COFF image context + @param [out] ImageBase Pointer to ImageBase variable + @param [in, out] SectionHeaderOffset Offset of PE/COFF image section header + @param [in, out] NumberOfSections Number of Sections + +**/ EFI_STATUS EFIAPI GetStandaloneMmCorePeCoffSections ( diff --git a/StandaloneMmPkg/Library/StandaloneMmCoreEntryPoint/AArch64/StandaloneMmCoreEntryPoint.c b/StandaloneMmPkg/Library/StandaloneMmCoreEntryPoint/AArch64/StandaloneMmCoreEntryPoint.c index 9cecfa667b..903e32d711 100644 --- a/StandaloneMmPkg/Library/StandaloneMmCoreEntryPoint/AArch64/StandaloneMmCoreEntryPoint.c +++ b/StandaloneMmPkg/Library/StandaloneMmCoreEntryPoint/AArch64/StandaloneMmCoreEntryPoint.c @@ -2,7 +2,7 @@ Entry point to the Standalone MM Foundation when initialized during the SEC phase on ARM platforms -Copyright (c) 2017 - 2018, ARM Ltd. All rights reserved.
+Copyright (c) 2017 - 2021, Arm Ltd. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent **/ @@ -101,6 +101,12 @@ GetAndPrintBootinformation ( return PayloadBootInfo; } +/** + A loop to delegated events. + + @param [in] EventCompleteSvcArgs Pointer to the event completion arguments. + +**/ VOID EFIAPI DelegatedEventLoop ( @@ -156,6 +162,12 @@ DelegatedEventLoop ( } } +/** + Query the SPM version, check compatibility and return success if compatible. + + @retval EFI_SUCCESS SPM versions compatible. + @retval EFI_UNSUPPORTED SPM versions not compatible. +**/ STATIC EFI_STATUS GetSpmVersion (VOID) -- cgit v1.2.3