summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKun Qin <kuqin@microsoft.com>2025-04-10 09:32:19 -0700
committermergify[bot] <37929162+mergify[bot]@users.noreply.github.com>2025-04-10 17:52:48 +0000
commitbe03ceb1176d71f2adc7634fb0f68491e743e699 (patch)
treed05d88a6aab382052f04fe14a4c20209f1906624
parent937ffef8ed4bf20504fdc17806a36d1553c72619 (diff)
downloadedk2-be03ceb1176d71f2adc7634fb0f68491e743e699.zip
edk2-be03ceb1176d71f2adc7634fb0f68491e743e699.tar.gz
edk2-be03ceb1176d71f2adc7634fb0f68491e743e699.tar.bz2
ArmPkg: ArmFfaLib: Move ArmFfaLib implementation to MdeModulePkg
ArmFfaLib is an implementation of an industry specification-defined interface with UEFI specific method of handling Rx/Tx buffer sharing across multiple boot phases, which is more appropriately placed in MdeModulePkg. This update relocates the implementation of ArmFfaLib to MdeModulePkg, thereby supporting the FFA call primitives for all other packages that depend on this interface. Continuous-integration-options: PatchCheck.ignore-multi-package Signed-off-by: Kun Qin <kun.qin@microsoft.com>
-rw-r--r--ArmPkg/ArmPkg.dec12
-rw-r--r--ArmPkg/ArmPkg.dsc8
-rw-r--r--MdeModulePkg/Library/ArmFfaLib/ArmFfaCommon.c (renamed from ArmPkg/Library/ArmFfaLib/ArmFfaCommon.c)0
-rw-r--r--MdeModulePkg/Library/ArmFfaLib/ArmFfaCommon.h (renamed from ArmPkg/Library/ArmFfaLib/ArmFfaCommon.h)0
-rw-r--r--MdeModulePkg/Library/ArmFfaLib/ArmFfaDxeLib.c (renamed from ArmPkg/Library/ArmFfaLib/ArmFfaDxeLib.c)0
-rw-r--r--MdeModulePkg/Library/ArmFfaLib/ArmFfaDxeLib.inf (renamed from ArmPkg/Library/ArmFfaLib/ArmFfaDxeLib.inf)12
-rw-r--r--MdeModulePkg/Library/ArmFfaLib/ArmFfaPeiLib.c (renamed from ArmPkg/Library/ArmFfaLib/ArmFfaPeiLib.c)0
-rw-r--r--MdeModulePkg/Library/ArmFfaLib/ArmFfaPeiLib.inf (renamed from ArmPkg/Library/ArmFfaLib/ArmFfaPeiLib.inf)12
-rw-r--r--MdeModulePkg/Library/ArmFfaLib/ArmFfaRxTxMap.c (renamed from ArmPkg/Library/ArmFfaLib/ArmFfaRxTxMap.c)0
-rw-r--r--MdeModulePkg/Library/ArmFfaLib/ArmFfaRxTxMap.h (renamed from ArmPkg/Library/ArmFfaLib/ArmFfaRxTxMap.h)0
-rw-r--r--MdeModulePkg/Library/ArmFfaLib/ArmFfaStandaloneMmCoreLib.inf (renamed from ArmPkg/Library/ArmFfaLib/ArmFfaStandaloneMmCoreLib.inf)4
-rw-r--r--MdeModulePkg/Library/ArmFfaLib/ArmFfaStandaloneMmLib.c (renamed from ArmPkg/Library/ArmFfaLib/ArmFfaStandaloneMmLib.c)0
-rw-r--r--MdeModulePkg/Library/ArmFfaLib/ArmFfaStandaloneMmLib.inf (renamed from ArmPkg/Library/ArmFfaLib/ArmFfaStandaloneMmLib.inf)4
-rw-r--r--MdeModulePkg/MdeModulePkg.dec24
-rw-r--r--MdeModulePkg/MdeModulePkg.dsc8
-rw-r--r--StandaloneMmPkg/StandaloneMmPkg.dsc3
16 files changed, 51 insertions, 36 deletions
diff --git a/ArmPkg/ArmPkg.dec b/ArmPkg/ArmPkg.dec
index 0ed7f41..5f3f41b 100644
--- a/ArmPkg/ArmPkg.dec
+++ b/ArmPkg/ArmPkg.dec
@@ -93,8 +93,6 @@
gArmMmuReplaceLiveTranslationEntryFuncGuid = { 0xa8b50ff3, 0x08ec, 0x4dd3, {0xbf, 0x04, 0x28, 0xbf, 0x71, 0x75, 0xc7, 0x4a} }
- gArmFfaRxTxBufferInfoGuid = { 0x96fd3d26, 0x6fb1, 0x11ef, { 0x8c, 0x11, 0xf3, 0xc9, 0xc5, 0x02, 0x31, 0xab } }
-
[Protocols.common]
## Arm System Control and Management Interface(SCMI) Base protocol
## ArmPkg/Include/Protocol/ArmScmiBaseProtocol.h
@@ -293,12 +291,6 @@
gArmTokenSpaceGuid.PcdSystemBiosRelease|0xFFFF|UINT16|0x30000058
gArmTokenSpaceGuid.PcdEmbeddedControllerFirmwareRelease|0xFFFF|UINT16|0x30000059
- #
- # Define the conduit to use ArmFfalib.
- # Default PcdFfaLibConduitSmc == TRUE, conduit = SMC
- # If PcdFfaLibConduitSvc == FALSE, conduit = SVC
- gArmTokenSpaceGuid.PcdFfaLibConduitSmc|TRUE|BOOLEAN|0x00000063
-
[PcdsFixedAtBuild.common, PcdsDynamic.common]
# ARM Architectural Timer Interrupt(GIC PPI) numbers
gArmTokenSpaceGuid.PcdArmArchTimerSecIntrNum|29|UINT32|0x00000035
@@ -389,7 +381,3 @@
# the LinuxBoot payload.
#
gArmTokenSpaceGuid.PcdLinuxBootFileGuid|{0x0}|VOID*|0x0000005C
- gArmTokenSpaceGuid.PcdFfaTxBuffer|0x00|UINT64|0x0000005F
- gArmTokenSpaceGuid.PcdFfaRxBuffer|0x00|UINT64|0x00000060
- gArmTokenSpaceGuid.PcdFfaTxRxPageCount|1|UINT64|0x00000061
- gArmTokenSpaceGuid.PcdFfaExitBootEventRegistered|FALSE|BOOLEAN|0x00000062
diff --git a/ArmPkg/ArmPkg.dsc b/ArmPkg/ArmPkg.dsc
index 0239ac0..09eafc5 100644
--- a/ArmPkg/ArmPkg.dsc
+++ b/ArmPkg/ArmPkg.dsc
@@ -85,7 +85,7 @@
ArmLib|ArmPkg/Library/ArmLib/ArmBaseLib.inf
ArmMmuLib|ArmPkg/Library/ArmMmuLib/ArmMmuBaseLib.inf
ArmTransferListLib|ArmPkg/Library/ArmTransferListLib/ArmTransferListLib.inf
- ArmFfaLib|ArmPkg/Library/ArmFfaLib/ArmFfaDxeLib.inf
+ ArmFfaLib|MdeModulePkg/Library/ArmFfaLib/ArmFfaDxeLib.inf
ArmMtlLib|ArmPkg/Library/ArmMtlNullLib/ArmMtlNullLib.inf
@@ -97,7 +97,7 @@
MemoryAllocationLib|MdePkg/Library/PeiMemoryAllocationLib/PeiMemoryAllocationLib.inf
PeiServicesLib|MdePkg/Library/PeiServicesLib/PeiServicesLib.inf
PeiServicesTablePointerLib|MdePkg/Library/PeiServicesTablePointerLib/PeiServicesTablePointerLib.inf
- ArmFfaLib|ArmPkg/Library/ArmFfaLib/ArmFfaPeiLib.inf
+ ArmFfaLib|MdeModulePkg/Library/ArmFfaLib/ArmFfaPeiLib.inf
[LibraryClasses.common.MM_CORE_STANDALONE]
StandaloneMmCoreEntryPoint|ArmPkg/Library/ArmStandaloneMmCoreEntryPoint/ArmStandaloneMmCoreEntryPoint.inf
@@ -136,10 +136,6 @@
ArmPkg/Library/ArmMonitorLib/ArmMonitorLib.inf
ArmPkg/Library/OpteeLib/OpteeLib.inf
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/ArmFfaCommon.c b/MdeModulePkg/Library/ArmFfaLib/ArmFfaCommon.c
index 8f66a4a..8f66a4a 100644
--- a/ArmPkg/Library/ArmFfaLib/ArmFfaCommon.c
+++ b/MdeModulePkg/Library/ArmFfaLib/ArmFfaCommon.c
diff --git a/ArmPkg/Library/ArmFfaLib/ArmFfaCommon.h b/MdeModulePkg/Library/ArmFfaLib/ArmFfaCommon.h
index 663d2d3..663d2d3 100644
--- a/ArmPkg/Library/ArmFfaLib/ArmFfaCommon.h
+++ b/MdeModulePkg/Library/ArmFfaLib/ArmFfaCommon.h
diff --git a/ArmPkg/Library/ArmFfaLib/ArmFfaDxeLib.c b/MdeModulePkg/Library/ArmFfaLib/ArmFfaDxeLib.c
index 4d82844..4d82844 100644
--- a/ArmPkg/Library/ArmFfaLib/ArmFfaDxeLib.c
+++ b/MdeModulePkg/Library/ArmFfaLib/ArmFfaDxeLib.c
diff --git a/ArmPkg/Library/ArmFfaLib/ArmFfaDxeLib.inf b/MdeModulePkg/Library/ArmFfaLib/ArmFfaDxeLib.inf
index 96525cf..361ebf6 100644
--- a/ArmPkg/Library/ArmFfaLib/ArmFfaDxeLib.inf
+++ b/MdeModulePkg/Library/ArmFfaLib/ArmFfaDxeLib.inf
@@ -24,7 +24,7 @@
[Packages]
MdePkg/MdePkg.dec
- ArmPkg/ArmPkg.dec
+ MdeModulePkg/MdeModulePkg.dec
[LibraryClasses]
ArmSmcLib
@@ -35,11 +35,11 @@
HobLib
[Pcd]
- gArmTokenSpaceGuid.PcdFfaLibConduitSmc
- gArmTokenSpaceGuid.PcdFfaTxBuffer
- gArmTokenSpaceGuid.PcdFfaRxBuffer
- gArmTokenSpaceGuid.PcdFfaTxRxPageCount
- gArmTokenSpaceGuid.PcdFfaExitBootEventRegistered
+ gEfiMdeModulePkgTokenSpaceGuid.PcdFfaLibConduitSmc
+ gEfiMdeModulePkgTokenSpaceGuid.PcdFfaTxBuffer
+ gEfiMdeModulePkgTokenSpaceGuid.PcdFfaRxBuffer
+ gEfiMdeModulePkgTokenSpaceGuid.PcdFfaTxRxPageCount
+ gEfiMdeModulePkgTokenSpaceGuid.PcdFfaExitBootEventRegistered
[Guids]
gArmFfaRxTxBufferInfoGuid
diff --git a/ArmPkg/Library/ArmFfaLib/ArmFfaPeiLib.c b/MdeModulePkg/Library/ArmFfaLib/ArmFfaPeiLib.c
index 8a1d892..8a1d892 100644
--- a/ArmPkg/Library/ArmFfaLib/ArmFfaPeiLib.c
+++ b/MdeModulePkg/Library/ArmFfaLib/ArmFfaPeiLib.c
diff --git a/ArmPkg/Library/ArmFfaLib/ArmFfaPeiLib.inf b/MdeModulePkg/Library/ArmFfaLib/ArmFfaPeiLib.inf
index e4ecae0..e3b7dbd 100644
--- a/ArmPkg/Library/ArmFfaLib/ArmFfaPeiLib.inf
+++ b/MdeModulePkg/Library/ArmFfaLib/ArmFfaPeiLib.inf
@@ -24,7 +24,7 @@
[Packages]
MdePkg/MdePkg.dec
- ArmPkg/ArmPkg.dec
+ MdeModulePkg/MdeModulePkg.dec
[LibraryClasses]
ArmSmcLib
@@ -35,11 +35,11 @@
HobLib
[Pcd]
- gArmTokenSpaceGuid.PcdFfaLibConduitSmc
- gArmTokenSpaceGuid.PcdFfaTxBuffer
- gArmTokenSpaceGuid.PcdFfaRxBuffer
- gArmTokenSpaceGuid.PcdFfaTxRxPageCount
- gArmTokenSpaceGuid.PcdFfaExitBootEventRegistered
+ gEfiMdeModulePkgTokenSpaceGuid.PcdFfaLibConduitSmc
+ gEfiMdeModulePkgTokenSpaceGuid.PcdFfaTxBuffer
+ gEfiMdeModulePkgTokenSpaceGuid.PcdFfaRxBuffer
+ gEfiMdeModulePkgTokenSpaceGuid.PcdFfaTxRxPageCount
+ gEfiMdeModulePkgTokenSpaceGuid.PcdFfaExitBootEventRegistered
[Guids]
gArmFfaRxTxBufferInfoGuid
diff --git a/ArmPkg/Library/ArmFfaLib/ArmFfaRxTxMap.c b/MdeModulePkg/Library/ArmFfaLib/ArmFfaRxTxMap.c
index 37d3e80..37d3e80 100644
--- a/ArmPkg/Library/ArmFfaLib/ArmFfaRxTxMap.c
+++ b/MdeModulePkg/Library/ArmFfaLib/ArmFfaRxTxMap.c
diff --git a/ArmPkg/Library/ArmFfaLib/ArmFfaRxTxMap.h b/MdeModulePkg/Library/ArmFfaLib/ArmFfaRxTxMap.h
index 01db339..01db339 100644
--- a/ArmPkg/Library/ArmFfaLib/ArmFfaRxTxMap.h
+++ b/MdeModulePkg/Library/ArmFfaLib/ArmFfaRxTxMap.h
diff --git a/ArmPkg/Library/ArmFfaLib/ArmFfaStandaloneMmCoreLib.inf b/MdeModulePkg/Library/ArmFfaLib/ArmFfaStandaloneMmCoreLib.inf
index a31fa5b..395d1f0 100644
--- a/ArmPkg/Library/ArmFfaLib/ArmFfaStandaloneMmCoreLib.inf
+++ b/MdeModulePkg/Library/ArmFfaLib/ArmFfaStandaloneMmCoreLib.inf
@@ -23,7 +23,7 @@
[Packages]
MdePkg/MdePkg.dec
- ArmPkg/ArmPkg.dec
+ MdeModulePkg/MdeModulePkg.dec
[LibraryClasses]
ArmSmcLib
@@ -33,4 +33,4 @@
DebugLib
[Pcd]
- gArmTokenSpaceGuid.PcdFfaLibConduitSmc
+ gEfiMdeModulePkgTokenSpaceGuid.PcdFfaLibConduitSmc
diff --git a/ArmPkg/Library/ArmFfaLib/ArmFfaStandaloneMmLib.c b/MdeModulePkg/Library/ArmFfaLib/ArmFfaStandaloneMmLib.c
index 2d7f834..2d7f834 100644
--- a/ArmPkg/Library/ArmFfaLib/ArmFfaStandaloneMmLib.c
+++ b/MdeModulePkg/Library/ArmFfaLib/ArmFfaStandaloneMmLib.c
diff --git a/ArmPkg/Library/ArmFfaLib/ArmFfaStandaloneMmLib.inf b/MdeModulePkg/Library/ArmFfaLib/ArmFfaStandaloneMmLib.inf
index bd3ec3f..44679c0 100644
--- a/ArmPkg/Library/ArmFfaLib/ArmFfaStandaloneMmLib.inf
+++ b/MdeModulePkg/Library/ArmFfaLib/ArmFfaStandaloneMmLib.inf
@@ -23,7 +23,7 @@
[Packages]
MdePkg/MdePkg.dec
- ArmPkg/ArmPkg.dec
+ MdeModulePkg/MdeModulePkg.dec
[LibraryClasses]
ArmSmcLib
@@ -33,5 +33,5 @@
DebugLib
[Pcd]
- gArmTokenSpaceGuid.PcdFfaLibConduitSmc
+ gEfiMdeModulePkgTokenSpaceGuid.PcdFfaLibConduitSmc
diff --git a/MdeModulePkg/MdeModulePkg.dec b/MdeModulePkg/MdeModulePkg.dec
index aa21365..1234ae8 100644
--- a/MdeModulePkg/MdeModulePkg.dec
+++ b/MdeModulePkg/MdeModulePkg.dec
@@ -494,6 +494,8 @@
## Include/Guid/DelayedDispatch.h
gEfiDelayedDispatchTableGuid = { 0x4b733449, 0x8eff, 0x488c, { 0x92, 0x1a, 0x15, 0x4a, 0xda, 0x25, 0x18, 0x07 }}
+ gArmFfaRxTxBufferInfoGuid = { 0x96fd3d26, 0x6fb1, 0x11ef, { 0x8c, 0x11, 0xf3, 0xc9, 0xc5, 0x02, 0x31, 0xab } }
+
[Ppis]
## Include/Ppi/FirmwareVolumeShadowPpi.h
gEdkiiPeiFirmwareVolumeShadowPpiGuid = { 0x7dfe756c, 0xed8d, 0x4d77, {0x9e, 0xc4, 0x39, 0x9a, 0x8a, 0x81, 0x51, 0x16 } }
@@ -2281,6 +2283,12 @@
# @Prompt The value is use for Usb Network rate limiting supported.
gEfiMdeModulePkgTokenSpaceGuid.PcdUsbNetworkRateLimitingFactor|100|UINT32|0x10000028
+ ## Define the conduit to use in ArmFfalib.
+ # Default PcdFfaLibConduitSmc == TRUE, conduit = SMC
+ # If PcdFfaLibConduitSvc == FALSE, conduit = SVC
+ # @Prompt Conduit to use in ArmFfaLib.
+ gEfiMdeModulePkgTokenSpaceGuid.PcdFfaLibConduitSmc|TRUE|BOOLEAN|0x10000029
+
[PcdsPatchableInModule]
## Specify memory size with page number for PEI code when
# Loading Module at Fixed Address feature is enabled.
@@ -2359,5 +2367,21 @@
# @Prompt 64bit VPD base address.
gEfiMdeModulePkgTokenSpaceGuid.PcdVpdBaseAddress64|0x0|UINT64|0x00030006
+ ## This dynamic PCD holds the address of the FFA TX buffer.
+ # @Prompt FFA TX Buffer Address
+ gEfiMdeModulePkgTokenSpaceGuid.PcdFfaTxBuffer|0x00|UINT64|0x00030009
+
+ ## This dynamic PCD holds the address of the FFA RX buffer.
+ # @Prompt FFA RX Buffer Address
+ gEfiMdeModulePkgTokenSpaceGuid.PcdFfaRxBuffer|0x00|UINT64|0x0003000A
+
+ ## This dynamic PCD holds the number of pages for the FFA TX/RX buffer.
+ # @Prompt FFA TX/RX Buffer Page Count
+ gEfiMdeModulePkgTokenSpaceGuid.PcdFfaTxRxPageCount|1|UINT64|0x0003000B
+
+ ## This dynamic PCD holds the information if the FFA exit boot event is registered.
+ # @Prompt FFA Exit Boot Event Registered
+ gEfiMdeModulePkgTokenSpaceGuid.PcdFfaExitBootEventRegistered|FALSE|BOOLEAN|0x0003000C
+
[UserExtensions.TianoCore."ExtraFiles"]
MdeModulePkgExtra.uni
diff --git a/MdeModulePkg/MdeModulePkg.dsc b/MdeModulePkg/MdeModulePkg.dsc
index 4b7f3e4..0c530c7 100644
--- a/MdeModulePkg/MdeModulePkg.dsc
+++ b/MdeModulePkg/MdeModulePkg.dsc
@@ -184,6 +184,8 @@
[LibraryClasses.ARM, LibraryClasses.AARCH64]
LockBoxLib|MdeModulePkg/Library/LockBoxNullLib/LockBoxNullLib.inf
+ ArmSmcLib|MdePkg/Library/ArmSmcLib/ArmSmcLib.inf
+ ArmSvcLib|MdePkg/Library/ArmSvcLib/ArmSvcLib.inf
[LibraryClasses.EBC, LibraryClasses.RISCV64, LibraryClasses.LOONGARCH64]
LockBoxLib|MdeModulePkg/Library/LockBoxNullLib/LockBoxNullLib.inf
@@ -532,5 +534,11 @@
[Components.X64]
MdeModulePkg/Universal/CapsulePei/CapsuleX64.inf
+[Components.ARM, Components.AARCH64]
+ MdeModulePkg/Library/ArmFfaLib/ArmFfaPeiLib.inf
+ MdeModulePkg/Library/ArmFfaLib/ArmFfaDxeLib.inf
+ MdeModulePkg/Library/ArmFfaLib/ArmFfaStandaloneMmCoreLib.inf
+ MdeModulePkg/Library/ArmFfaLib/ArmFfaStandaloneMmLib.inf
+
[BuildOptions]
diff --git a/StandaloneMmPkg/StandaloneMmPkg.dsc b/StandaloneMmPkg/StandaloneMmPkg.dsc
index 2e12dc8..d36081e 100644
--- a/StandaloneMmPkg/StandaloneMmPkg.dsc
+++ b/StandaloneMmPkg/StandaloneMmPkg.dsc
@@ -86,11 +86,10 @@
[LibraryClasses.common.MM_CORE_STANDALONE]
HobLib|StandaloneMmPkg/Library/StandaloneMmCoreHobLib/StandaloneMmCoreHobLib.inf
- ArmFfaLib|ArmPkg/Library/ArmFfaLib/ArmFfaStandaloneMmCoreLib.inf
PerformanceLib|MdePkg/Library/BasePerformanceLibNull/BasePerformanceLibNull.inf
[LibraryClasses.AARCH64.MM_CORE_STANDALONE, LibraryClasses.ARM.MM_CORE_STANDALONE]
- ArmFfaLib|ArmPkg/Library/ArmFfaLib/ArmFfaStandaloneMmCoreLib.inf
+ ArmFfaLib|MdeModulePkg/Library/ArmFfaLib/ArmFfaStandaloneMmCoreLib.inf
[LibraryClasses.common.MM_STANDALONE]
MemoryAllocationLib|StandaloneMmPkg/Library/StandaloneMmMemoryAllocationLib/StandaloneMmMemoryAllocationLib.inf