HI Keysound and all, Sorry for not giving the statement well. This is my first post so I was not aware of the message not complete on bugzilla. Current issue is observed with below condition. * Assume NVStorage = 0x5E000 and WorkSpace = 0x2000. The total working space is 0x60000. * When the NVStorage reclaiming reached the WorkSpace full, the WorkSpaceRefresh will be triggered. (FTW records reclaim) The WorkSpaceRefresh() will do the reclaim for WorkSpace but it would move whole working block(0x60000) for the process. Once working block is moved to spare region and start to erase the working block, the system might be powered off at erase phase (due to the erasing time). After power on again, the FTW won’t check WorkSpaceBlock valid and see it full so that it would start to do WorkSpaceRefresh again. At this moment, the NVStorage header was erased due to previous WorkSpaceRefresh. After WorkSpaceRefresh is done, the NVStorage header is corrupted and the system would not have the working NVStorage service. The attachment contained the Duplicated code to simulate the user behavior and the temporary code fix for the issue. 1. DupCodeChange.7z – I use the CMOS to skip the infinite loop to reset system. This is just for reproducing the symptom not for any fix. 2. FixCodeChange.7z – This is the temporary solution to check if the WorkSpaceBlock header is valid or not. If it is not valid, going further to have the SpareBlock copying to WorkBlock. Hope it would be more clear. Thanks and regards, Marlboro. ============================================== Marlboro Chuang Firmware Engineer Dell | TDC BIOS Core Team Office : +886-2-23766313 Mobile: +886-986615685 Marlboro.Chuang@dell.com ============================================== From: Keysound Chang Sent: Friday, February 5, 2021 7:11 PM To: devel@edk2.groups.io; Keysound Chang; Chuang, Marlboro; gaoliming Subject: RE: [edk2-devel] [Bug 3187] FaultTolerantWriteDxe defect will cause NVRAM not recovered after number of WorkSpaceRefresh(). [EXTERNAL EMAIL] After checking Bugzilla 3187, NVRAM already corrupted in this case. Sorry that I didn’t aware. From: devel@edk2.groups.io > On Behalf Of Keysound Chang via groups.io Sent: Friday, February 5, 2021 11:03 AM To: devel@edk2.groups.io; marlboro.chuang@dell.com; gaoliming > Subject: Re: [edk2-devel] [Bug 3187] FaultTolerantWriteDxe defect will cause NVRAM not recovered after number of WorkSpaceRefresh(). Hi Marlboro, How about use non-volatile EFI variable instead of CMOS? Not sure all platforms support CMOS. Regards, From: devel@edk2.groups.io > On Behalf Of Chuang, Marlboro via groups.io Sent: Thursday, February 4, 2021 3:08 PM To: gaoliming >; devel@edk2.groups.io Subject: Re: [edk2-devel] [Bug 3187] FaultTolerantWriteDxe defect will cause NVRAM not recovered after number of WorkSpaceRefresh(). HI Gaoliming, The DupCodeChange is for simulating user force power off the system. So I just use the CMOS to record the temporarily flag to ensure the code will not enter the infinite loop to reset the system. Best Regards, Marlboro. ============================================== Marlboro Chuang Firmware Engineer Dell | TDC BIOS Core Team Office : +886-2-23766313 Mobile: +886-986615685 Marlboro.Chuang@dell.com ============================================== -----Original Message----- From: gaoliming > Sent: Thursday, February 4, 2021 2:55 PM To: Chuang, Marlboro; devel@edk2.groups.io Subject: 回复: [Bug 3187] FaultTolerantWriteDxe defect will cause NVRAM not recovered after number of WorkSpaceRefresh(). [EXTERNAL EMAIL] Chuang: I see you directly use IO port 0x70, 0x71. What purpose to use them? Thanks Liming > -----邮件原件----- > 发件人: Chuang, Marlboro > > 发送时间: 2021年2月3日 12:59 > 收件人: devel@edk2.groups.io > 抄送: gaoliming@byosoft.com.cn > 主题: RE: [Bug 3187] FaultTolerantWriteDxe defect will cause NVRAM not > recovered after number of WorkSpaceRefresh(). > > Hi All, > > Regarding to Bug 3187, I have the duplicated code change and fix code > change as the attachment. > Please help to review and refine it. > > Thanks and Regards, > Marlboro. > > > -----Original Message----- > From: bugzilla-daemon@bugzilla.tianocore.org > > > Sent: Wednesday, February 3, 2021 11:04 AM > To: Chuang, Marlboro > Subject: [Bug 3187] FaultTolerantWriteDxe defect will cause NVRAM not > recovered after number of WorkSpaceRefresh(). > > > [EXTERNAL EMAIL] > > https://bugzilla.tianocore.org/show_bug.cgi?id=3187 > > gaoliming@byosoft.com.cn changed: > > What |Removed |Added > ---------------------------------------------------------------------------- > Priority|Lowest |Normal > Status|UNCONFIRMED |CONFIRMED > CC| > |gaoliming@byosoft.com.cn > Assignee|unassigned@tianocore.org > |Marlboro.Chuang@dell.com > Ever confirmed|0 |1 > > --- Comment #2 from gaoliming@byosoft.com.cn --- > @Marlboro: can you send your patch to edk2 mail list? > > -- > You are receiving this mail because: > You are on the CC list for the bug. > You are the assignee for the bug. > You reported the bug.