From nobody Tue Feb 10 05:17:27 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) client-ip=66.175.222.108; envelope-from=bounce+27952+106094+1787277+3901457@groups.io; helo=mail02.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+106094+1787277+3901457@groups.io ARC-Seal: i=1; a=rsa-sha256; t=1686762126; cv=none; d=zohomail.com; s=zohoarc; b=GMX9XbGFPcHvBlnp98Z6bf6MMfXmp38c5aj8KFpFjFA0CAU9pd5850ymliXB3k4KIFA5LEcLStJ7PsQafxLkQypvZJ/ReNXYtOjzJNGpb0lUrZM0ktVC/9bJG6AsH7zg65CbpRpFlKhG+8Jw+uP2PUn6o6WgAXK9zYcF3X1YvZM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1686762126; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:References:Sender:Subject:To; bh=lpmnzkk4FFErEtJ3c/n0C4EsLA4dYqgYxqdVzjGKCII=; b=dn1VMnUCalJpypnn+DYR68F2nrr2Ls/6hNpHGdo1TtCrNN4AGbXq/ch//rdAnfwxGsb6y0/ATp5V+aTZvHyHNsf6s+KBQrHef7cLMXEUl701Waceg1EbKrgMwlkle6oNWVcaZ3fl2FkGw5G+hzUcJQqWwidwH6O4C0uzB7OfPto= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+106094+1787277+3901457@groups.io Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by mx.zohomail.com with SMTPS id 1686762126269109.3177278057193; Wed, 14 Jun 2023 10:02:06 -0700 (PDT) Return-Path: X-Received: by 127.0.0.2 with SMTP id MIiyYY1788612xkPmDkVfFj5; Wed, 14 Jun 2023 10:02:05 -0700 X-Received: from mail-pf1-f182.google.com (mail-pf1-f182.google.com [209.85.210.182]) by mx.groups.io with SMTP id smtpd.web10.18169.1686762124978230603 for ; Wed, 14 Jun 2023 10:02:05 -0700 X-Received: by mail-pf1-f182.google.com with SMTP id d2e1a72fcca58-66577752f05so2893200b3a.0 for ; Wed, 14 Jun 2023 10:02:04 -0700 (PDT) X-Gm-Message-State: wlhzSK6TGfYh4zbfDozqWD0ax1787277AA= X-Google-Smtp-Source: ACHHUZ7MfX4gJs0nq0XXhl5fSrFGOLb13MEUiw7+MyDgh+geNDr62ehnqMhkF+l1m+83J9s3FjoZhA== X-Received: by 2002:a17:902:d4cf:b0:1af:d213:668c with SMTP id o15-20020a170902d4cf00b001afd213668cmr14562316plg.12.1686762124252; Wed, 14 Jun 2023 10:02:04 -0700 (PDT) X-Received: from kerodi.Dlink ([106.51.184.72]) by smtp.gmail.com with ESMTPSA id s7-20020a170902988700b001b3ef11d8fdsm1850424plp.201.2023.06.14.10.02.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 14 Jun 2023 10:02:03 -0700 (PDT) From: "Sunil V L" To: devel@edk2.groups.io Cc: Sunil V L , Ard Biesheuvel , Jiewen Yao , Jordan Justen , Gerd Hoffmann , Andrei Warkentin Subject: [edk2-devel] [PATCH 3/4] OvmfPkg/RiscVVirt: Add support for separate code and variable store Date: Wed, 14 Jun 2023 22:31:50 +0530 Message-Id: <20230614170151.1204982-4-sunilvl@ventanamicro.com> In-Reply-To: <20230614170151.1204982-1-sunilvl@ventanamicro.com> References: <20230614170151.1204982-1-sunilvl@ventanamicro.com> MIME-Version: 1.0 Precedence: Bulk List-Unsubscribe: List-Subscribe: List-Help: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,sunilvl@ventanamicro.com Content-Transfer-Encoding: quoted-printable DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1686762125; bh=BjU1A7749Tk7ErT1er+REkvzKsSKHmySXGDwLdIQOg4=; h=Cc:Date:From:Reply-To:Subject:To; b=Je+32OjuvXMzc1PBcIY99uMt2thf2SLLtUEHfR1GrBRkmHVvSMgit8AZu6tlqpGi28t pkm3ED86PJZJ5nJ2DnGtj6KNPVfdtKh+i/0kMNEnkv4p1b/QRr+6WrPi5tOnQVa2pI6Lp jwwswzI1fMU4yBsCr0c78zKONTSZP1KBKwU= X-ZohoMail-DKIM: pass (identity @groups.io) X-ZM-MESSAGEID: 1686762127111100009 Content-Type: text/plain; charset="utf-8" Currently, RiscVVirtQemu supports unified code and variable store mainly because only one pflash devices was available in qemu for EDK2. However, this doesn't allow to map the code part as read-only. With recent qemu enhancements, it is now possible for EDK2 to make use of both pflash devices in RISC-V virt machine. So, add support to create code and vars images separately. This also allows easy firmware code updates without losing the variable store. Signed-off-by: Sunil V L Cc: Ard Biesheuvel Cc: Jiewen Yao Cc: Jordan Justen Cc: Gerd Hoffmann Cc: Andrei Warkentin --- OvmfPkg/RiscVVirt/RiscVVirtQemu.dsc | 2 +- OvmfPkg/RiscVVirt/RiscVVirtQemu.fdf | 9 +++++---- OvmfPkg/RiscVVirt/RiscVVirt.fdf.inc | 12 +++++------- OvmfPkg/RiscVVirt/VarStore.fdf.inc | 13 ++++++++++--- 4 files changed, 21 insertions(+), 15 deletions(-) diff --git a/OvmfPkg/RiscVVirt/RiscVVirtQemu.dsc b/OvmfPkg/RiscVVirt/RiscVV= irtQemu.dsc index 414d186179fb..04573bc0f32e 100644 --- a/OvmfPkg/RiscVVirt/RiscVVirtQemu.dsc +++ b/OvmfPkg/RiscVVirt/RiscVVirtQemu.dsc @@ -85,7 +85,7 @@ [LibraryClasses.common] QemuLoadImageLib|OvmfPkg/Library/GenericQemuLoadImageLib/GenericQemuLoad= ImageLib.inf =20 TimerLib|UefiCpuPkg/Library/BaseRiscV64CpuTimerLib/BaseRiscV64CpuTimerLi= b.inf - VirtNorFlashPlatformLib|OvmfPkg/RiscVVirt/Library/VirtNorFlashPlatformLi= b/VirtNorFlashStaticLib.inf + VirtNorFlashPlatformLib|OvmfPkg/RiscVVirt/Library/VirtNorFlashPlatformLi= b/VirtNorFlashDeviceTreeLib.inf =20 CapsuleLib|MdeModulePkg/Library/DxeCapsuleLibNull/DxeCapsuleLibNull.inf BootLogoLib|MdeModulePkg/Library/BootLogoLib/BootLogoLib.inf diff --git a/OvmfPkg/RiscVVirt/RiscVVirtQemu.fdf b/OvmfPkg/RiscVVirt/RiscVV= irtQemu.fdf index 354c9271d10c..dbe38a135395 100644 --- a/OvmfPkg/RiscVVirt/RiscVVirtQemu.fdf +++ b/OvmfPkg/RiscVVirt/RiscVVirtQemu.fdf @@ -12,17 +12,18 @@ !include RiscVVirt.fdf.inc =20 ##########################################################################= ###### -[FD.RISCV_VIRT] -BaseAddress =3D $(FW_BASE_ADDRESS)|gUefiOvmfPkgTokenSpaceGuid.PcdOvmfFdB= aseAddress -Size =3D $(FW_SIZE)|gUefiOvmfPkgTokenSpaceGuid.PcdOvmfFirmwareFdS= ize +[FD.RISCV_VIRT_CODE] +BaseAddress =3D $(CODE_BASE_ADDRESS)|gUefiOvmfPkgTokenSpaceGuid.PcdOvmfF= dBaseAddress +Size =3D $(CODE_SIZE)|gUefiOvmfPkgTokenSpaceGuid.PcdOvmfFirmwareF= dSize ErasePolarity =3D 1 BlockSize =3D $(BLOCK_SIZE) -NumBlocks =3D $(FW_BLOCKS) +NumBlocks =3D $(CODE_BLOCKS) =20 0x00000000|$(CODE_SIZE) gUefiOvmfPkgTokenSpaceGuid.PcdOvmfDxeMemFvBase|gUefiOvmfPkgTokenSpaceGuid.= PcdOvmfDxeMemFvSize FV =3D FVMAIN_COMPACT =20 +##########################################################################= ###### !include VarStore.fdf.inc ##########################################################################= ###### =20 diff --git a/OvmfPkg/RiscVVirt/RiscVVirt.fdf.inc b/OvmfPkg/RiscVVirt/RiscVV= irt.fdf.inc index b0a1c3293f33..7e8165d85778 100644 --- a/OvmfPkg/RiscVVirt/RiscVVirt.fdf.inc +++ b/OvmfPkg/RiscVVirt/RiscVVirt.fdf.inc @@ -10,16 +10,14 @@ [Defines] DEFINE BLOCK_SIZE =3D 0x1000 =20 +DEFINE PFLASH0_BASE =3D 0x20000000 DEFINE PFLASH1_BASE =3D 0x22000000 =20 -DEFINE FW_BASE_ADDRESS =3D $(PFLASH1_BASE) -DEFINE FW_SIZE =3D 0x00800000 -DEFINE FW_BLOCKS =3D 0x800 - -DEFINE CODE_BASE_ADDRESS =3D $(FW_BASE_ADDRESS) -DEFINE CODE_SIZE =3D 0x00740000 -DEFINE CODE_BLOCKS =3D 0x740 +DEFINE CODE_BASE_ADDRESS =3D $(PFLASH0_BASE) +DEFINE CODE_SIZE =3D 0x00800000 +DEFINE CODE_BLOCKS =3D 0x800 =20 +DEFINE VARS_BASE_ADDRESS =3D $(PFLASH1_BASE) DEFINE VARS_SIZE =3D 0x000C0000 DEFINE VARS_BLOCK_SIZE =3D 0x40000 DEFINE VARS_BLOCKS =3D 0x3 diff --git a/OvmfPkg/RiscVVirt/VarStore.fdf.inc b/OvmfPkg/RiscVVirt/VarStor= e.fdf.inc index 6bc619e50c1a..49293c742b56 100644 --- a/OvmfPkg/RiscVVirt/VarStore.fdf.inc +++ b/OvmfPkg/RiscVVirt/VarStore.fdf.inc @@ -10,7 +10,14 @@ # ## =20 -$(VARS_OFFSET)|$(VARS_LIVE_SIZE) +[FD.RISCV_VIRT_VARS] +BaseAddress =3D $(VARS_BASE_ADDRESS) +Size =3D $(VARS_SIZE) +ErasePolarity =3D 1 +BlockSize =3D $(VARS_BLOCK_SIZE) +NumBlocks =3D $(VARS_BLOCKS) + +0x00000000|$(VARS_LIVE_SIZE) gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableBase|gEfiMdeModule= PkgTokenSpaceGuid.PcdFlashNvStorageVariableSize # # NV_VARIABLE_STORE @@ -57,7 +64,7 @@ 0x5A, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } =20 -$(VARS_FTW_WORKING_OFFSET)|$(VARS_FTW_WORKING_SIZE) +0x00040000|$(VARS_FTW_WORKING_SIZE) gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingBase|gEfiMdeModu= lePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingSize # #NV_FTW_WORK @@ -73,7 +80,7 @@ 0xE0, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00 } =20 -$(VARS_FTW_SPARE_OFFSET)|$(VARS_FTW_SPARE_SIZE) +0x00080000|$(VARS_FTW_SPARE_SIZE) gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareBase|gEfiMdeModule= PkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareSize # #NV_FTW_SPARE --=20 2.34.1 -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#106094): https://edk2.groups.io/g/devel/message/106094 Mute This Topic: https://groups.io/mt/99532024/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-