Reviewed-by: Isaac Oram <isaac.w.o...@intel.com> 

-----Original Message-----
From: Chiu, Chasel <chasel.c...@intel.com> 
Sent: Thursday, February 9, 2023 10:27 AM
To: devel@edk2.groups.io
Cc: Chiu, Chasel <chasel.c...@intel.com>; S, Ashraf Ali 
<ashraf.al...@intel.com>; Oram, Isaac W <isaac.w.o...@intel.com>; Chaganty, 
Rangasai V <rangasai.v.chaga...@intel.com>; Ni, Ray <ray...@intel.com>; 
Kubacki, Michael <michael.kuba...@microsoft.com>
Subject: [edk2-platforms: PATCH v4] IntelSiliconPkg/SpiFvbServiceSmm: Support 
Additional NVS region.

Platform may implement an additional NVS region following Regular variable 
region and in this case SpiFvbService should include both region size when 
calculating the total NVS region size.

The PcdFlashNvStorageAdditionalSize is for compatible with legacy usages that 
should be deprecated. The new usage model should define separate regions 
without implicit connections to UEFI Variable or FTW regions.

Example NVS flash map for such legacy usage:
Note: PcdFlashNvStorageAdditionalSize is equal to platform
      PcdFlashFvNvStorageEventLogSize.

  ---------------
  |UEFI Variable|
  ---------------
  |EventLog     | <= this is Additional NVS region
  ---------------
  |FTW Working  |
  ---------------
  |FTW Spare    |
  ---------------

Cc: Ashraf Ali S <ashraf.al...@intel.com>
Cc: Isaac Oram <isaac.w.o...@intel.com>
Cc: Rangasai V Chaganty <rangasai.v.chaga...@intel.com>
Cc: Ray Ni <ray...@intel.com>
Cc: Michael Kubacki <michael.kuba...@microsoft.com>
Signed-off-by: Chasel Chiu <chasel.c...@intel.com>
Reviewed-by: Michael Kubacki <michael.kuba...@microsoft.com>
---
 
Silicon/Intel/IntelSiliconPkg/Feature/Flash/SpiFvbService/SpiFvbServiceCommon.c 
| 22 ++++++++++++++++++++++  
Silicon/Intel/IntelSiliconPkg/Feature/Flash/SpiFvbService/SpiFvbServiceSmm.inf  
|  7 ++++---
 Silicon/Intel/IntelSiliconPkg/IntelSiliconPkg.dec                              
 | 11 +++++++++++
 3 files changed, 37 insertions(+), 3 deletions(-)

diff --git 
a/Silicon/Intel/IntelSiliconPkg/Feature/Flash/SpiFvbService/SpiFvbServiceCommon.c
 
b/Silicon/Intel/IntelSiliconPkg/Feature/Flash/SpiFvbService/SpiFvbServiceCommon.c
index 942abf95a6..fcdc715263 100644
--- 
a/Silicon/Intel/IntelSiliconPkg/Feature/Flash/SpiFvbService/SpiFvbServiceCommon.c
+++ b/Silicon/Intel/IntelSiliconPkg/Feature/Flash/SpiFvbService/SpiFvbSe
+++ rviceCommon.c
@@ -568,6 +568,28 @@ GetVariableFvInfo (
     return;   } +  //+  // GetVariableFlashNvStorageInfo () only reports 
regular variable region information,+  // if platform implemented an additional 
NVS region following the regular variable region,+  // then both region size 
should be included as overall NVS region size.+  //+  // The below 
PcdFlashNvStorageAdditionalSize is for compatible with legacy usages that 
should be deprecated.+  // The new usage model should define separate regions 
without implicit connections to UEFI Variable or FTW regions.+  //+  // Example 
NVS flash map for such legacy usage:+  // Note: PcdFlashNvStorageAdditionalSize 
is equal to platform PcdFlashFvNvStorageEventLogSize.+  //  ---------------+  
//  |UEFI Variable|+  //  ---------------+  //  |EventLog     | <= this is 
Additional NVS region+  //  ---------------+  //  |FTW Working  |+  //  
---------------+  //  |FTW Spare    |+  //  ---------------+  //+  
NvStoreLength += PcdGet32 (PcdFlashNvStorageAdditionalSize);+   Status = 
GetVariableFlashFtwSpareInfo (&NvBaseAddress, &Length64);   if (!EFI_ERROR 
(Status)) {     // Stay within the current UINT32 size assumptions in the 
variable stack.diff --git 
a/Silicon/Intel/IntelSiliconPkg/Feature/Flash/SpiFvbService/SpiFvbServiceSmm.inf
 
b/Silicon/Intel/IntelSiliconPkg/Feature/Flash/SpiFvbService/SpiFvbServiceSmm.inf
index 73049eceb2..f4009d8d8c 100644
--- 
a/Silicon/Intel/IntelSiliconPkg/Feature/Flash/SpiFvbService/SpiFvbServiceSmm.inf
+++ b/Silicon/Intel/IntelSiliconPkg/Feature/Flash/SpiFvbService/SpiFvbSe
+++ rviceSmm.inf
@@ -43,9 +43,10 @@
   IntelSiliconPkg/IntelSiliconPkg.dec  [Pcd]-  
gIntelSiliconPkgTokenSpaceGuid.PcdFlashMicrocodeFvBase         ## CONSUMES-  
gIntelSiliconPkgTokenSpaceGuid.PcdFlashMicrocodeFvSize         ## CONSUMES-  
gIntelSiliconPkgTokenSpaceGuid.PcdFlashVariableStoreType       ## 
SOMETIMES_CONSUMES+  gIntelSiliconPkgTokenSpaceGuid.PcdFlashMicrocodeFvBase     
       ## CONSUMES+  gIntelSiliconPkgTokenSpaceGuid.PcdFlashMicrocodeFvSize     
       ## CONSUMES+  gIntelSiliconPkgTokenSpaceGuid.PcdFlashVariableStoreType   
       ## SOMETIMES_CONSUMES+  
gIntelSiliconPkgTokenSpaceGuid.PcdFlashNvStorageAdditionalSize    ## CONSUMES  
[Sources]   FvbInfo.cdiff --git 
a/Silicon/Intel/IntelSiliconPkg/IntelSiliconPkg.dec 
b/Silicon/Intel/IntelSiliconPkg/IntelSiliconPkg.dec
index 63dae756ad..d73a51ca52 100644
--- a/Silicon/Intel/IntelSiliconPkg/IntelSiliconPkg.dec
+++ b/Silicon/Intel/IntelSiliconPkg/IntelSiliconPkg.dec
@@ -194,3 +194,14 @@
   #  Other value: reserved for future use.<BR>   # @Prompt Flash Variable 
Store type.   
gIntelSiliconPkgTokenSpaceGuid.PcdFlashVariableStoreType|0x00|UINT8|0x0000000E++
  ## Declares Additional NVS Region Size.<BR><BR>+  #  Platform may implement a 
Regular variable region and an additional region, which will require this PCD+  
#  to tell SpiFvbService to include both regions.+  #  Note: This PCD is for 
compatible with legacy usages that should be deprecated.+  #  The new usage 
model should define separate regions without implicit connections to UEFI 
Variable or FTW regions.<BR>+  #  Example legacy usage is to set this PCD equal 
to platform PcdFlashFvNvStorageEventLogSize.+  #  0: No additional NVS 
region.<BR>+  #  non-zero: The size of an additional NVS region following the 
Regular variable region.<BR>+  # @Prompt Additional NVS Region Size.+  
gIntelSiliconPkgTokenSpaceGuid.PcdFlashNvStorageAdditionalSize|0x00000000|UINT32|0x0000000F--
 
2.35.0.windows.1



-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#99927): https://edk2.groups.io/g/devel/message/99927
Mute This Topic: https://groups.io/mt/96859489/21656
Group Owner: devel+ow...@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-


Reply via email to