Thanks Jiewen & Ray. Zhihao, could you try the suggestion from Jiewen? You can sync with me for detail.
Thanks, Jiaxin > -----Original Message----- > From: Ni, Ray <ray...@intel.com> > Sent: Thursday, June 1, 2023 9:07 AM > To: Yao, Jiewen <jiewen....@intel.com>; devel@edk2.groups.io; Wu, Jiaxin > <jiaxin...@intel.com>; Li, Zhihao <zhihao...@intel.com>; Gao, Liming > <gaolim...@byosoft.com.cn>; kra...@redhat.com > Cc: Wang, Jian J <jian.j.w...@intel.com> > Subject: RE: [edk2-devel] [PATCH v1 1/1] MdeModulePkg/VariableSmm.c: > add Ap rendezvous check before SmmSetVariable. > > Jiewen, > Good suggestion😊. > This also resolve's Jiaxin's comments that check if the variable is > non-volatile. > > Thanks, > Ray > > > -----Original Message----- > > From: Yao, Jiewen <jiewen....@intel.com> > > Sent: Thursday, June 1, 2023 9:06 AM > > To: devel@edk2.groups.io; Wu, Jiaxin <jiaxin...@intel.com>; Li, Zhihao > > <zhihao...@intel.com>; Gao, Liming <gaolim...@byosoft.com.cn>; Ni, Ray > > <ray...@intel.com>; kra...@redhat.com > > Cc: Wang, Jian J <jian.j.w...@intel.com> > > Subject: RE: [edk2-devel] [PATCH v1 1/1] MdeModulePkg/VariableSmm.c: > > add Ap rendezvous check before SmmSetVariable. > > > > Disabling flash is a silicon behavior. > > > > Can we do SmmWaitForAllProcessor() in FVB driver, or SPI driver ? > > > > Thank you > > Yao, Jiewen > > > > > > > > > -----Original Message----- > > > From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of Wu, > > Jiaxin > > > Sent: Thursday, June 1, 2023 9:03 AM > > > To: devel@edk2.groups.io; Li, Zhihao <zhihao...@intel.com>; Gao, Liming > > > <gaolim...@byosoft.com.cn>; Ni, Ray <ray...@intel.com>; > > kra...@redhat.com > > > Cc: Wang, Jian J <jian.j.w...@intel.com> > > > Subject: Re: [edk2-devel] [PATCH v1 1/1] MdeModulePkg/VariableSmm.c: > > add > > > Ap rendezvous check before SmmSetVariable. > > > > > > Hi All, > > > > > > I think we need this patch: > > > > > > There is a requirement that all CPU threads must in SMM for Non-Volatile > > > variable. Because the SMM will disables the flash protection. Before that, > we > > > must guarantee all CPU threads are in SMM to avoid the non-smm mode > > cpus > > > modify the flash. > > > > > > > > > Zhihao, > > > > > > I think this is only needed for the Non-Volatile, I suggest as below > > > check: > > > > > > if ((Attributes & EFI_VARIABLE_NON_VOLATILE) != 0) { > > > if (EFI_ERROR (SmmWaitForAllProcessor (TRUE))) { > > > DEBUG ((DEBUG_ERROR, " SmmVariableSetVariable: Fail to wait for > all > > AP > > > check in SMM!\n")); > > > Status = EFI_ABORTED; > > > goto EXIT; > > > } > > > } > > > > > > Thanks, > > > Jiaxin > > > > > > > -----Original Message----- > > > > From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of Li, > > > > Zhihao > > > > Sent: Friday, May 19, 2023 4:11 PM > > > > To: Gao, Liming <gaolim...@byosoft.com.cn>; devel@edk2.groups.io; > Ni, > > > > Ray <ray...@intel.com>; kra...@redhat.com > > > > Cc: Wang, Jian J <jian.j.w...@intel.com> > > > > Subject: Re: [edk2-devel] [PATCH v1 1/1] > MdeModulePkg/VariableSmm.c: > > > > add Ap rendezvous check before SmmSetVariable. > > > > > > > > Hi Liming > > > > In Ap-Relaxed mode, Bsp will not wait for all ap arrive and call the SMI > > > > handlers. But some SMI handlers need all Aps arrive in smm mode such > as > > > > SmmSetVariable. As the design, SetVariable need to let all aps arrive > > because > > > > it will write flash. Half year ago, I send the patch that calling > > > > SmmCpuRendezvous() before SmmSetVariable. It was reviewed but > hasn't > > > > merged. SmmCpuRendezvous() will return immediately in traditional- > AP > > > > mode. > > > > I'm not sure what returns EFI_ACCESS_DENIED. Calling > > SmmCpuRendezvous() > > > > before SmmSetVariable is our original design but haven't implemented. > > > > > > > > -----Original Message----- > > > > From: gaoliming <gaolim...@byosoft.com.cn> > > > > Sent: Thursday, May 18, 2023 5:38 PM > > > > To: Li, Zhihao <zhihao...@intel.com>; devel@edk2.groups.io; Ni, Ray > > > > <ray...@intel.com>; kra...@redhat.com > > > > Cc: Wang, Jian J <jian.j.w...@intel.com> > > > > Subject: 回复: [PATCH v1 1/1] MdeModulePkg/VariableSmm.c: add Ap > > > > rendezvous check before SmmSetVariable. > > > > > > > > Zhihao: > > > > Have you root cause this issue that SmmVariableSetVariable may > return > > > > EFI_ACCESS_DENIED? > > > > > > > > I am not sure whether this fix is proper. I also add UefiCpuPkg > maintainers > > > > Ray and Gerd in the mail loop for this discussion. > > > > > > > > Thanks > > > > Liming > > > > > -----邮件原件----- > > > > > 发件人: Zhihao Li <zhihao...@intel.com> > > > > > 发送时间: 2023年5月10日 18:57 > > > > > 收件人: devel@edk2.groups.io > > > > > 抄送: Jian J Wang <jian.j.w...@intel.com>; Liming Gao > > > > > <gaolim...@byosoft.com.cn> > > > > > 主题: [PATCH v1 1/1] MdeModulePkg/VariableSmm.c: add Ap > > rendezvous > > > > check > > > > > before SmmSetVariable. > > > > > > > > > > REF: https://bugzilla.tianocore.org/show_bug.cgi?id=4429 > > > > > > > > > > For Ap-Relaxed sync mode, SmmVariableSetVariable() need to let all > Aps > > > > > arrive to smm before it set the variable. If not, it would return > > > > > EFI_ACCESS_DENIED. > > > > > > > > > > Cc: Jian J Wang <jian.j.w...@intel.com> > > > > > Cc: Liming Gao <gaolim...@byosoft.com.cn> > > > > > > > > > > Signed-off-by: Zhihao Li <zhihao...@intel.com> > > > > > --- > > > > > MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmm.c > > > > > | 10 +++++++++- > > > > > MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmm.inf > > > > > | 3 ++- > > > > > > > > > > > > MdeModulePkg/Universal/Variable/RuntimeDxe/VariableStandaloneMm.inf > > > > > | 3 ++- > > > > > 3 files changed, 13 insertions(+), 3 deletions(-) > > > > > > > > > > diff --git > > > > a/MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmm.c > > > > > b/MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmm.c > > > > > index 5253c328dcd9..4944903e64d4 100644 > > > > > --- > a/MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmm.c > > > > > +++ > b/MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmm.c > > > > > @@ -14,7 +14,7 @@ > > > > > VariableServiceSetVariable(), VariableServiceQueryVariableInfo(), > > > > > ReclaimForOS(), > > > > > > > > > > SmmVariableGetStatistics() should also do validation based on its > > > > > own knowledge. > > > > > > > > > > > > > > > > > > > > -Copyright (c) 2010 - 2019, Intel Corporation. All rights > > > > > reserved.<BR> > > > > > > > > > > +Copyright (c) 2010 - 2023, Intel Corporation. All rights > > > > > +reserved.<BR> > > > > > > > > > > Copyright (c) 2018, Linaro, Ltd. All rights reserved.<BR> > > > > > > > > > > SPDX-License-Identifier: BSD-2-Clause-Patent > > > > > > > > > > > > > > > > > > > > @@ -28,6 +28,7 @@ SPDX-License-Identifier: BSD-2-Clause-Patent > > > > > > > > > > > > > > > #include <Library/MmServicesTableLib.h> > > > > > > > > > > #include <Library/VariablePolicyLib.h> > > > > > > > > > > +#include <Library/SmmCpuRendezvousLib.h> > > > > > > > > > > > > > > > > > > > > #include <Guid/SmmVariableCommon.h> > > > > > > > > > > #include "Variable.h" > > > > > > > > > > @@ -87,6 +88,13 @@ SmmVariableSetVariable ( { > > > > > > > > > > EFI_STATUS Status; > > > > > > > > > > > > > > > > > > > > + // > > > > > > > > > > + // Need to wait for all Aps to arrive in Relaxed-AP Sync Mode > > > > > > > > > > + // > > > > > > > > > > + if (EFI_ERROR (SmmWaitForAllProcessor (TRUE))) { > > > > > > > > > > + DEBUG ((DEBUG_ERROR, "SetVariable: fail to wait for all AP check > > > > > + in > > > > > SMM!\n")); > > > > > > > > > > + } > > > > > > > > > > + > > > > > > > > > > // > > > > > > > > > > // Disable write protection when the calling SetVariable() through > > > > > EFI_SMM_VARIABLE_PROTOCOL. > > > > > > > > > > // > > > > > > > > > > diff --git > > > > > a/MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmm.inf > > > > > b/MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmm.inf > > > > > index 8c552b87e080..1cf0d051e6c9 100644 > > > > > --- > a/MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmm.inf > > > > > +++ > b/MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmm.inf > > > > > @@ -18,7 +18,7 @@ > > > > > # may not be modified without authorization. If platform fails to > > > > protect > > > > > these resources, > > > > > > > > > > # the authentication service provided in this driver will be broken, > > > > > and > > > > the > > > > > behavior is undefined. > > > > > > > > > > # > > > > > > > > > > -# Copyright (c) 2010 - 2019, Intel Corporation. All rights > > > > > reserved.<BR> > > > > > > > > > > +# Copyright (c) 2010 - 2023, Intel Corporation. All rights > > > > > +reserved.<BR> > > > > > > > > > > # Copyright (c) Microsoft Corporation. > > > > > > > > > > # SPDX-License-Identifier: BSD-2-Clause-Patent > > > > > > > > > > # > > > > > > > > > > @@ -84,6 +84,7 @@ > > > > > VariablePolicyLib > > > > > > > > > > VariablePolicyHelperLib > > > > > > > > > > SafeIntLib > > > > > > > > > > + SmmCpuRendezvousLib > > > > > > > > > > > > > > > > > > > > [Protocols] > > > > > > > > > > gEfiSmmFirmwareVolumeBlockProtocolGuid ## CONSUMES > > > > > > > > > > diff --git > > > > > > > > > > > > a/MdeModulePkg/Universal/Variable/RuntimeDxe/VariableStandaloneMm.i > > > > n > > > > > f > > > > > > > > > > > > b/MdeModulePkg/Universal/Variable/RuntimeDxe/VariableStandaloneMm. > > > > in > > > > > f > > > > > index f09bed40cf51..89187456ca25 100644 > > > > > --- > > > > > > > > > > > > a/MdeModulePkg/Universal/Variable/RuntimeDxe/VariableStandaloneMm.i > > > > n > > > > > f > > > > > +++ > > > > > > > > > > > > b/MdeModulePkg/Universal/Variable/RuntimeDxe/VariableStandaloneMm. > > > > in > > > > > f > > > > > @@ -18,7 +18,7 @@ > > > > > # may not be modified without authorization. If platform fails to > > > > protect > > > > > these resources, > > > > > > > > > > # the authentication service provided in this driver will be broken, > > > > > and > > > > the > > > > > behavior is undefined. > > > > > > > > > > # > > > > > > > > > > -# Copyright (c) 2010 - 2019, Intel Corporation. All rights > > > > > reserved.<BR> > > > > > > > > > > +# Copyright (c) 2010 - 2023, Intel Corporation. All rights > > > > > +reserved.<BR> > > > > > > > > > > # Copyright (c) 2018, Linaro, Ltd. All rights reserved.<BR> > > > > > > > > > > # Copyright (c) Microsoft Corporation. > > > > > > > > > > # SPDX-License-Identifier: BSD-2-Clause-Patent > > > > > > > > > > @@ -80,6 +80,7 @@ > > > > > VariableFlashInfoLib > > > > > > > > > > VariablePolicyLib > > > > > > > > > > VariablePolicyHelperLib > > > > > > > > > > + SmmCpuRendezvousLib > > > > > > > > > > > > > > > > > > > > [Protocols] > > > > > > > > > > gEfiSmmFirmwareVolumeBlockProtocolGuid ## CONSUMES > > > > > > > > > > -- > > > > > 2.26.2.windows.1 > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#105521): https://edk2.groups.io/g/devel/message/105521 Mute This Topic: https://groups.io/mt/99008324/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-