Skip to content

Commit ac2fdc5

Browse files
lizthegreyclaude
andcommitted
StandaloneMm: set PcdFfaLibConduitSmc=FALSE for SVC conduit
The StandaloneMm SP runs at S-EL0 under OP-TEE and must use SVC (not SMC) for FF-A calls. The edk2 ArmFfaLib's ArmCallFfa() checks PcdFfaLibConduitSmc to choose between ArmCallSmc and ArmCallSvc, and the default is TRUE (SMC). SMC from EL0 is undefined on AArch64, causing an immediate undef-abort (ESR 0x02000000) when the C-level FFA code first calls ArmFfaLibGetVersion(). The assembly entry point (ModuleEntryPoint.S) hardcodes svc #0 so the early FFA_VERSION and FFA_MEM_PERM_SET calls succeed, but once CEntryPoint runs and goes through ArmCallFfa(), the wrong conduit causes the crash. Every other StandaloneMm DSC in edk2-platforms (Juno, VExpress, SGI) sets this PCD to FALSE. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent adf81d0 commit ac2fdc5

1 file changed

Lines changed: 3 additions & 0 deletions

File tree

Platform/SolidRun/StandAloneMm/StandaloneMm.dsc

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -138,6 +138,9 @@
138138
gNxpQoriqLsTokenSpaceGuid.PcdI2cSpeed|400000
139139
gNxpQoriqLsTokenSpaceGuid.PcdI2cSlaveAddress|0x51
140140

141+
## FFA conduit: SP runs at S-EL0 under OP-TEE, must use SVC not SMC
142+
gEfiMdeModulePkgTokenSpaceGuid.PcdFfaLibConduitSmc|FALSE
143+
141144
[PcdsFeatureFlag]
142145
gNxpQoriqLsTokenSpaceGuid.PcdI2cErratumA009203|TRUE
143146

0 commit comments

Comments
 (0)