Added the function of saving non-volatile variables. REF: https://bugzilla.tianocore.org/show_bug.cgi?id=4054
Signed-off-by: xianglai li <lixiang...@loongson.cn> --- Platform/Loongson/LoongArchQemuPkg/Loongson.dec | 6 ++++++ Platform/Loongson/LoongArchQemuPkg/Loongson.dsc | 2 +- Platform/Loongson/LoongArchQemuPkg/Loongson.fdf | 14 ++++++++++++++ .../Loongson/LoongArchQemuPkg/Loongson.fdf.inc | 11 +++++++++++ .../Loongson/LoongArchQemuPkg/VarStore.fdf.inc | 10 +++++----- 5 files changed, 37 insertions(+), 6 deletions(-) diff --git a/Platform/Loongson/LoongArchQemuPkg/Loongson.dec b/Platform/Loongson/LoongArchQemuPkg/Loongson.dec index 5065f99042..2fd80e7ea2 100644 --- a/Platform/Loongson/LoongArchQemuPkg/Loongson.dec +++ b/Platform/Loongson/LoongArchQemuPkg/Loongson.dec @@ -32,6 +32,8 @@ [Protocols] [PcdsFixedAtBuild, PcdsDynamic] + gLoongArchQemuPkgTokenSpaceGuid.PcdFlashFdBase|0x0|UINT64|0 + gLoongArchQemuPkgTokenSpaceGuid.PcdFlashBlockSize|0x0|UINT32|2 gLoongArchQemuPkgTokenSpaceGuid.PcdFlashPeiFvBase|0x0|UINT64|0x00000003 gLoongArchQemuPkgTokenSpaceGuid.PcdFlashPeiFvSize|0x0|UINT32|0x00000004 gLoongArchQemuPkgTokenSpaceGuid.PcdFlashDxeFvOffset|0x0|UINT64|0x00000007 @@ -48,6 +50,10 @@ gLoongArchQemuPkgTokenSpaceGuid.PcdSecPeiTempRamSize|0|UINT32|0x0000001d gLoongArchQemuPkgTokenSpaceGuid.PcdUefiRamTop|0x0|UINT64|0x0000001e gLoongArchQemuPkgTokenSpaceGuid.PcdRamRegionsBottom|0x0|UINT64|0x00000022 + gLoongArchQemuPkgTokenSpaceGuid.PcdOvmfFlashNvStorageVariableBase|0x0|UINT64|0x00000024 + gLoongArchQemuPkgTokenSpaceGuid.PcdAllVarSize|0x0|UINT32|0x00000025 + gLoongArchQemuPkgTokenSpaceGuid.PcdOvmfFlashNvStorageFtwSpareBase|0x0|UINT64|0x00000026 + gLoongArchQemuPkgTokenSpaceGuid.PcdOvmfFlashNvStorageFtwWorkingBase|0x0|UINT64|0x00000027 gLoongArchQemuPkgTokenSpaceGuid.PcdFlashSecFvBase|0x0|UINT64|0x00000028 gLoongArchQemuPkgTokenSpaceGuid.PcdFlashSecFvSize|0x0|UINT32|0x00000029 diff --git a/Platform/Loongson/LoongArchQemuPkg/Loongson.dsc b/Platform/Loongson/LoongArchQemuPkg/Loongson.dsc index 59beafb34f..46b326f0a5 100644 --- a/Platform/Loongson/LoongArchQemuPkg/Loongson.dsc +++ b/Platform/Loongson/LoongArchQemuPkg/Loongson.dsc @@ -444,7 +444,7 @@ # # Variable # -# Platform/Loongson/LoongArchQemuPkg/Drivers/QemuFlashFvbServicesRuntimeDxe/FvbServicesRuntimeDxe.inf + Platform/Loongson/LoongArchQemuPkg/Drivers/QemuFlashFvbServicesRuntimeDxe/FvbServicesRuntimeDxe.inf OvmfPkg/EmuVariableFvbRuntimeDxe/Fvb.inf { <LibraryClasses> PlatformFvbLib|OvmfPkg/Library/EmuVariableFvbLib/EmuVariableFvbLib.inf diff --git a/Platform/Loongson/LoongArchQemuPkg/Loongson.fdf b/Platform/Loongson/LoongArchQemuPkg/Loongson.fdf index ba2942e455..12920a0833 100644 --- a/Platform/Loongson/LoongArchQemuPkg/Loongson.fdf +++ b/Platform/Loongson/LoongArchQemuPkg/Loongson.fdf @@ -31,6 +31,19 @@ gLoongArchQemuPkgTokenSpaceGuid.PcdFlashDxeFvBase|gLoongArchQemuPkgTokenSpaceGui FV = FVMAIN_COMPACT !include VarStore.fdf.inc + +##################################################################################################### +[FD.QEMU_EFI_VARS] +BaseAddress = $(VARIABLE_BASE_ADDRESS) +Size = $(VAR_ALL_SIZE) +ErasePolarity = 1 +BlockSize = $(BLOCK_SIZE) +NumBlocks = $(VAR_ALL_BLOCKS) + +DEFINE VARIABLE_OFFSET = 0 +!include VarStore.fdf.inc +DEFINE VARIABLE_OFFSET = 0x003a0000 + ##################################################################################################### [FV.SECFV] FvNameGuid = 587d4265-5e71-41da-9c35-4258551f1e22 @@ -87,6 +100,7 @@ INF MdeModulePkg/Core/Pei/PeiMain.inf INF MdeModulePkg/Universal/PCD/Pei/Pcd.inf INF MdeModulePkg/Core/DxeIplPeim/DxeIpl.inf INF Platform/Loongson/LoongArchQemuPkg/PlatformPei/PlatformPei.inf + ##################################################################################################### [FV.DXEFV] FvNameGuid = 5d19a5b3-130f-459b-a292-9270a9e6bc62 diff --git a/Platform/Loongson/LoongArchQemuPkg/Loongson.fdf.inc b/Platform/Loongson/LoongArchQemuPkg/Loongson.fdf.inc index 964d69ed44..4b926a85ff 100644 --- a/Platform/Loongson/LoongArchQemuPkg/Loongson.fdf.inc +++ b/Platform/Loongson/LoongArchQemuPkg/Loongson.fdf.inc @@ -34,6 +34,7 @@ DEFINE VAR_ALL_SIZE = 0x60000 ############################################################################ #Set Var Flash layout +DEFINE VARIABLE_BASE_ADDRESS = 0x1c3a0000 DEFINE VARIABLE_SIZE = 0x00010000 DEFINE VAR_ALL_BLOCKS = 0x60 @@ -53,11 +54,21 @@ DEFINE EVENT_LOG_OFFSET = $(FWTWORKING_OFFSET) + $(FWTWORKING_SIZE) DEFINE EVENT_LOG_SIZE = 0x8000 # Set Variable +SET gLoongArchQemuPkgTokenSpaceGuid.PcdFlashFdBase = $(FD_BASE_ADDRESS) + +SET gLoongArchQemuPkgTokenSpaceGuid.PcdOvmfFlashNvStorageVariableBase = $(FD_BASE_ADDRESS) + $(VARIABLE_OFFSET) +SET gLoongArchQemuPkgTokenSpaceGuid.PcdAllVarSize = $(VAR_ALL_SIZE) + +SET gLoongArchQemuPkgTokenSpaceGuid.PcdFlashBlockSize = $(BLOCK_SIZE) SET gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableBase64 = 0 SET gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableSize = $(VARIABLE_SIZE) # Set FtwSpare +SET gLoongArchQemuPkgTokenSpaceGuid.PcdOvmfFlashNvStorageFtwSpareBase = $(FD_BASE_ADDRESS) + $(SPARE_OFFSET) +SET gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareBase64 = 0 SET gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareSize = $(SPARE_SIZE) # Set FtwWorking +SET gLoongArchQemuPkgTokenSpaceGuid.PcdOvmfFlashNvStorageFtwWorkingBase = $(FD_BASE_ADDRESS) + $(SPARE_OFFSET) + $(SPARE_SIZE) +SET gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingBase64 = 0 SET gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingSize = $(FWTWORKING_SIZE) diff --git a/Platform/Loongson/LoongArchQemuPkg/VarStore.fdf.inc b/Platform/Loongson/LoongArchQemuPkg/VarStore.fdf.inc index 625fa23543..a4e0158cf8 100644 --- a/Platform/Loongson/LoongArchQemuPkg/VarStore.fdf.inc +++ b/Platform/Loongson/LoongArchQemuPkg/VarStore.fdf.inc @@ -38,16 +38,16 @@ DATA = { # FORMATTED: 0x5A #HEALTHY: 0xFE #Reserved: UINT16 #Reserved1: UINT32 0x5a, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } -$(RESERVE1_OFFSET)|$(RESERVE1_SIZE) +$(VARIABLE_OFFSET) + $(VARIABLE_SIZE)|$(RESERVE1_SIZE) #NV_RESERVE1_STORE -$(RESERVE2_OFFSET)|$(RESERVE2_SIZE) +$(VARIABLE_OFFSET) + $(VARIABLE_SIZE) + $(RESERVE1_SIZE)|$(RESERVE2_SIZE) #NV_RESERVE2_STORE -$(SPARE_OFFSET)|$(SPARE_SIZE) +$(VARIABLE_OFFSET) + $(VARIABLE_SIZE) + $(RESERVE1_SIZE) + $(RESERVE2_SIZE)|$(SPARE_SIZE) #NV_FTW_SPARE -$(FWTWORKING_OFFSET)|$(FWTWORKING_SIZE) +$(VARIABLE_OFFSET) + $(VARIABLE_SIZE) + $(RESERVE1_SIZE) + $(RESERVE2_SIZE) + $(SPARE_SIZE)|$(FWTWORKING_SIZE) #NV_FTW_WORKING DATA = { # EFI_FAULT_TOLERANT_WORKING_BLOCK_HEADER->Signature = gEdkiiWorkingBlockSignatureGuid = @@ -60,5 +60,5 @@ DATA = { 0xe0, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } -$(EVENT_LOG_OFFSET)|$(EVENT_LOG_SIZE) +$(VARIABLE_OFFSET) + $(VARIABLE_SIZE) + $(RESERVE1_SIZE) + $(RESERVE2_SIZE) + $(SPARE_SIZE) + $(FWTWORKING_SIZE)|$(EVENT_LOG_SIZE) #NV_EVENT_LOG -- 2.31.1 -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#94508): https://edk2.groups.io/g/devel/message/94508 Mute This Topic: https://groups.io/mt/93989536/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-