On 6/10/21 6:44 AM, Ming Huang via groups.io wrote: > On 6/9/21 3:10 PM, Ard Biesheuvel wrote: > > On Tue, 8 Jun 2021 at 16:21, Ming Huang <huangm...@linux.alibaba.com> > wrote: > >> > >> TF-A: TrustedFirmware-a > >> SPM: Secure Partition Manager(MM) > >> > >> 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 <huangm...@linux.alibaba.com> > >> --- > >> 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 > >> --- > a/StandaloneMmPkg/Drivers/StandaloneMmCpu/AArch64/EventHandle.c > >> +++ > b/StandaloneMmPkg/Drivers/StandaloneMmCpu/AArch64/EventHandle.c > >> @@ -103,10 +103,6 @@ PiMmStandaloneArmTfCpuDriverEntry ( > >> return EFI_INVALID_PARAMETER; > >> } > >> > >> - if (NsCommBufferAddr < mNsCommBuffer.PhysicalStart) { > >> - return EFI_ACCESS_DENIED; > >> - } > >> - > >> if ((NsCommBufferAddr + sizeof (EFI_MM_COMMUNICATE_HEADER)) >= > >> (mNsCommBuffer.PhysicalStart + mNsCommBuffer.PhysicalSize)) { > >> return EFI_INVALID_PARAMETER; > >> -- > >> 2.17.1 > >> > > > > -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#76573): https://edk2.groups.io/g/devel/message/76573 Mute This Topic: https://groups.io/mt/83396678/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-