[edk2-devel] [PATCH] OvmfPkg/RiscVVirt: Fix issues in VarStore Blockmap config

Qingyu Shang posted 1 patch 8 months, 3 weeks ago
Failed in applying to current master (apply log)
OvmfPkg/RiscVVirt/VarStore.fdf.inc | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
[edk2-devel] [PATCH] OvmfPkg/RiscVVirt: Fix issues in VarStore Blockmap config
Posted by Qingyu Shang 8 months, 3 weeks ago
The block size configuration of Blockmap does not match that in Qemu
VirtNorFlash, which causes variable data to be written into FtwWorkBlock
by mistake, resulting in data loss during reboot. Fix it and update
new checksum value.

Signed-off-by: Qingyu Shang <2931013282@sjtu.edu.cn>
---
 OvmfPkg/RiscVVirt/VarStore.fdf.inc | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/OvmfPkg/RiscVVirt/VarStore.fdf.inc b/OvmfPkg/RiscVVirt/VarStore.fdf.inc
index 6bc619e50c..aba32315cc 100644
--- a/OvmfPkg/RiscVVirt/VarStore.fdf.inc
+++ b/OvmfPkg/RiscVVirt/VarStore.fdf.inc
@@ -30,9 +30,9 @@ DATA = {
   # Signature "_FVH"       # Attributes
   0x5f, 0x46, 0x56, 0x48, 0xff, 0xfe, 0x04, 0x00,
   # HeaderLength # CheckSum # ExtHeaderOffset #Reserved #Revision
-  0x48, 0x00, 0x2F, 0xF1, 0x00, 0x00, 0x00, 0x02,
-  # Blockmap[0]: 0x20 Blocks * 0x1000 Bytes / Block
-  0x00, 0x08, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00,
+  0x48, 0x00, 0x28, 0x09, 0x00, 0x00, 0x00, 0x02,
+  # Blockmap[0]: 0x3 Blocks * 0x40000 Bytes / Block
+  0x3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00,
   # Blockmap[1]: End
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   ## This is the VARIABLE_STORE_HEADER
-- 
2.25.1



-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#107708): https://edk2.groups.io/g/devel/message/107708
Mute This Topic: https://groups.io/mt/100684601/1787277
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org]
-=-=-=-=-=-=-=-=-=-=-=-
Re: [edk2-devel] [PATCH] OvmfPkg/RiscVVirt: Fix issues in VarStore Blockmap config
Posted by Li, Yong 8 months, 3 weeks ago
Hi Sunil,

Qingyu is from Penglai team, when we were working together in enabling StandaloneMm variable service, 
we found an issue in OvmfPkg/RiscVVirt/VarStore.fdf.inc,  in which the blockmap config is not aligned with the value in
OvmfPkg/RiscVVirt/Library/VirtNorFlashPlatformLib/VirtNorFlashStaticLib.c, which is SIZE_256KB

That mis-alignment won't cause any issue if the variable size is small and less than 0x1000, but if store more data in the flash device then it will cause data loss issue during reboot.
Once reboot if any FV header data is corrupted it will result the whole variable system be re-initialized.

Please help review the patch and give the comments, thanks 

Thanks,
Yong Li

-----Original Message-----
From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of Qingyu Shang
Sent: Friday, August 11, 2023 7:05 PM
To: devel@edk2.groups.io
Cc: Qingyu Shang <2931013282@sjtu.edu.cn>
Subject: [edk2-devel] [PATCH] OvmfPkg/RiscVVirt: Fix issues in VarStore Blockmap config

The block size configuration of Blockmap does not match that in Qemu VirtNorFlash, which causes variable data to be written into FtwWorkBlock by mistake, resulting in data loss during reboot. Fix it and update new checksum value.

Signed-off-by: Qingyu Shang <2931013282@sjtu.edu.cn>
---
 OvmfPkg/RiscVVirt/VarStore.fdf.inc | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/OvmfPkg/RiscVVirt/VarStore.fdf.inc b/OvmfPkg/RiscVVirt/VarStore.fdf.inc
index 6bc619e50c..aba32315cc 100644
--- a/OvmfPkg/RiscVVirt/VarStore.fdf.inc
+++ b/OvmfPkg/RiscVVirt/VarStore.fdf.inc
@@ -30,9 +30,9 @@ DATA = {
   # Signature "_FVH"       # Attributes   0x5f, 0x46, 0x56, 0x48, 0xff, 0xfe, 0x04, 0x00,   # HeaderLength # CheckSum # ExtHeaderOffset #Reserved #Revision-  0x48, 0x00, 0x2F, 0xF1, 0x00, 0x00, 0x00, 0x02,-  # Blockmap[0]: 0x20 Blocks * 0x1000 Bytes / Block-  0x00, 0x08, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00,+  0x48, 0x00, 0x28, 0x09, 0x00, 0x00, 0x00, 0x02,+  # Blockmap[0]: 0x3 Blocks * 0x40000 Bytes / Block+  0x3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00,   # Blockmap[1]: End   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,   ## This is the VARIABLE_STORE_HEADER-- 
2.25.1



-=-=-=-=-=-=
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#107708): https://edk2.groups.io/g/devel/message/107708
Mute This Topic: https://groups.io/mt/100684601/6998987
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [yong.li@intel.com] -=-=-=-=-=-=




-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#107791): https://edk2.groups.io/g/devel/message/107791
Mute This Topic: https://groups.io/mt/100684601/1787277
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org]
-=-=-=-=-=-=-=-=-=-=-=-
Re: [edk2-devel] [PATCH] OvmfPkg/RiscVVirt: Fix issues in VarStore Blockmap config
Posted by Sunil V L 8 months, 3 weeks ago
On Wed, Aug 16, 2023 at 07:08:58AM +0000, Li, Yong wrote:
> Hi Sunil,
> 
> Qingyu is from Penglai team, when we were working together in enabling StandaloneMm variable service, 
> we found an issue in OvmfPkg/RiscVVirt/VarStore.fdf.inc,  in which the blockmap config is not aligned with the value in
> OvmfPkg/RiscVVirt/Library/VirtNorFlashPlatformLib/VirtNorFlashStaticLib.c, which is SIZE_256KB
> 
> That mis-alignment won't cause any issue if the variable size is small and less than 0x1000, but if store more data in the flash device then it will cause data loss issue during reboot.
> Once reboot if any FV header data is corrupted it will result the whole variable system be re-initialized.
> 
> Please help review the patch and give the comments, thanks 
>
Hi Yong Li,

Thank you very much for providing the context. Sorry, I actually had
missed this.

Hi Quingyu Shang,

The patch LGTM. Thanks a lot for finding the issue and fixing it. In
future, could you please run BaseTools/Scripts/GetMaintainer.py on the
patches and CC all the people it lists using "Cc:" tag?

Reviewed-by: Sunil V L <sunilvl@ventanamicro.com>

Thanks!
Sunil


-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#107794): https://edk2.groups.io/g/devel/message/107794
Mute This Topic: https://groups.io/mt/100684601/1787277
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org]
-=-=-=-=-=-=-=-=-=-=-=-
回复: [edk2-devel] [PATCH] OvmfPkg/RiscVVirt: Fix issues in VarStore Blockmap config
Posted by Qingyu Shang 8 months, 3 weeks ago
Hi Sunil, 

Happy you like that! I will CC all the related maintainers by that python script next time. 

Thanks! 
Qingyu 

-----原始邮件----- 
发件人: "Sunil V L" <sunilvl@ventanamicro.com> 
收件人: "Li, Yong" <yong.li@intel.com> 
抄送: devel@edk2.groups.io, 2931013282@sjtu.edu.cn, "Warkentin, Andrei" <andrei.warkentin@intel.com> 
已发送邮件: 星期三, 8 月 16, 2023 05:03:00 PM 
主题: Re: [edk2-devel] [PATCH] OvmfPkg/RiscVVirt: Fix issues in VarStore Blockmap config 

On Wed, Aug 16, 2023 at 07:08:58AM +0000, Li, Yong wrote: 
> Hi Sunil, 
> 
> Qingyu is from Penglai team, when we were working together in enabling StandaloneMm variable service, 
> we found an issue in OvmfPkg/RiscVVirt/VarStore.fdf.inc, in which the blockmap config is not aligned with the value in 
> OvmfPkg/RiscVVirt/Library/VirtNorFlashPlatformLib/VirtNorFlashStaticLib.c, which is SIZE_256KB 
> 
> That mis-alignment won't cause any issue if the variable size is small and less than 0x1000, but if store more data in the flash device then it will cause data loss issue during reboot. 
> Once reboot if any FV header data is corrupted it will result the whole variable system be re-initialized. 
> 
> Please help review the patch and give the comments, thanks 
> 
Hi Yong Li, 

Thank you very much for providing the context. Sorry, I actually had 
missed this. 

Hi Quingyu Shang, 

The patch LGTM. Thanks a lot for finding the issue and fixing it. In 
future, could you please run BaseTools/Scripts/GetMaintainer.py on the 
patches and CC all the people it lists using "Cc:" tag? 

Reviewed-by: Sunil V L <sunilvl@ventanamicro.com> 

Thanks! 
Sunil 


-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#107795): https://edk2.groups.io/g/devel/message/107795
Mute This Topic: https://groups.io/mt/100776646/1787277
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org]
-=-=-=-=-=-=-=-=-=-=-=-