For AArch64, when SPM enable in TF-A, TF-A may communicate to MM
with
buffer address (PLAT_SPM_BUF_BASE). The address is different from PcdMmBufferBase which use in edk2.
Then why do we have PcdMmBufferBase?
ArmPkg use this Pcd for the base address of non-secure communication buffer.
Is it possible to set PcdMmBufferBase to the correct value?
The secure communication may interrupt the non-secure communication. if we use the same address (PcdMmBufferBase and PLAT_SPM_BUF_BASE), the date in communication buffer may be corrupted.
Best Regards, Ming
In case where an interrupt handler executing from EL3 makes a call into StandaloneMM, the handler in EL3 makes an spm call into StandaloneMM using PLAT_SPM_BUF_BASE buffer base address. This PLAT_SPM_BUF_BASE is a shared buffer between EL3 and S-EL0. This is where the following check fails and leads to spm call failure. So this change would help resolve this issue.
- Omkar
Checking address will let TF-A communicate failed to MM. So remove below checking code: if (NsCommBufferAddr < mNsCommBuffer.PhysicalStart) { return EFI_ACCESS_DENIED; }
Signed-off-by: Ming Huang <huangming@...> --- StandaloneMmPkg/Drivers/StandaloneMmCpu/AArch64/EventHandle.c |
4
---- 1 file changed, 4 deletions(-)
diff --git a/StandaloneMmPkg/Drivers/StandaloneMmCpu/AArch64/EventHandle.c b/StandaloneMmPkg/Drivers/StandaloneMmCpu/AArch64/EventHandle.c index 63fbe26642..fe98d3181d 100644 ---