Re: 回复: [edk2-devel] [PATCH v4 13/14] MdeModulePkg/VariableStandaloneMm: Set PcdFlashNvStorageVariableBase to Pcd


Ilias Apalodimas
 

On Thu, Feb 18, 2021 at 11:13:21AM +0800, gaoliming wrote:
I suggest to directly change [FixedPcd] to [Pcd] section. All Pcds can
support FixedAtBuild and PatchableInModule.
We can, but is there a reason to do that?
Wouldn't we be better of being more strict on the Pcd context we define for
each variable?

The values that were swapped from FixedPcd to Pcd are expected to change in
runtime, while the rest don't.

Thanks
/Ilias


With this change, Reviewed-by: Liming Gao <gaoliming@byosoft.com.cn>

Thanks
Liming
-----邮件原件-----
发件人: bounce+27952+71734+4905953+8761045@groups.io
<bounce+27952+71734+4905953+8761045@groups.io> 代表 Sughosh Ganu
发送时间: 2021年2月17日 19:27
收件人: devel@edk2.groups.io
抄送: Sami Mujawar <sami.mujawar@arm.com>; Ilias Apalodimas
<ilias.apalodimas@linaro.org>; Ard Biesheuvel <ardb+tianocore@kernel.org>
主题: [edk2-devel] [PATCH v4 13/14] MdeModulePkg/VariableStandaloneMm:
Set PcdFlashNvStorageVariableBase to Pcd

From: Ilias Apalodimas <ilias.apalodimas@linaro.org>

Instead of running StMM in SPM, OP-TEE creates a new secure partition,
which emulates SPM and isolates StMM from the rest of the Trusted
Applications (TAs). We can then compile StMM as an FD image and run it
in OP-TEE. With the addition of a new RPMB driver, we can leverage OP-TEE
and store variables to an RPMB device.

Since EDK2 upper layers expect byte addressable code, for the RPMB to
work, we need to allocate memory and sync it with the hardware on
read/writes. Since DynamicPCDs are not supported in that context we
can only use PatchablePCDs. So let's switch them to Pcd instead of
FixedPcd and accomodate the new driver.

Signed-off-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
Reviewed-by: Sami Mujawar <sami.mujawar@arm.com>
---

Changes since V3: None

MdeModulePkg/Universal/Variable/RuntimeDxe/VariableStandaloneMm.inf
| 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)

diff --git
a/MdeModulePkg/Universal/Variable/RuntimeDxe/VariableStandaloneMm.in
f
b/MdeModulePkg/Universal/Variable/RuntimeDxe/VariableStandaloneMm.in
f
index fada0bf3c5..2a25fbdada 100644
---
a/MdeModulePkg/Universal/Variable/RuntimeDxe/VariableStandaloneMm.in
f
+++
b/MdeModulePkg/Universal/Variable/RuntimeDxe/VariableStandaloneMm.in
f
@@ -119,10 +119,12 @@
## SOMETIMES_PRODUCES ## Variable:L"VarErrorFlag"
gEdkiiVarErrorFlagGuid

-[FixedPcd]
- gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableSize
## CONSUMES
+[Pcd]
gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableBase
## SOMETIMES_CONSUMES
gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableBase64
## CONSUMES
+ gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableSize
## CONSUMES
+
+[FixedPcd]
gEfiMdeModulePkgTokenSpaceGuid.PcdMaxVariableSize
## CONSUMES
gEfiMdeModulePkgTokenSpaceGuid.PcdMaxAuthVariableSize
## CONSUMES
gEfiMdeModulePkgTokenSpaceGuid.PcdMaxVolatileVariableSize
## CONSUMES
--
2.17.1










Join devel@edk2.groups.io to automatically receive all group messages.