From nobody Fri Apr 26 04:50:24 2024 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+80199+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+80199+1787277+3901457@groups.io ARC-Seal: i=1; a=rsa-sha256; t=1630646789; cv=none; d=zohomail.com; s=zohoarc; b=ipVJE7xsgbRO3ibXc0s7/tpDqLd0lvROapVggj5Z1my24DPsEe8vePybWyKxwHoilm8sU4dcJUuDANJuItU6G3448/SgN95c6vIjY614yeDAwWJmNqmo0qQ4/vD3vYQIJE19s5l/wvSpK0278joSTsZ5jRiO5muysNso6jB+9JQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1630646789; 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=kxkuRDzcy9X8gu/yumokKBzbtDJ1o6Yh3Ven7ujvn5w=; b=mU3kFBwXTVzo0IefmJ3sOPPuG5fDO8xbMl+v5MhkZwsMPPz4APl1lDS/WUDuBIk5PNTunuatrOe03kG9eOOe6wuOIWnGkjYAhqG0fRIVPIIjXu4VIk+Y+D4MVXDzKxdlDxHQ0i65cGORvYjJFaD0tk4cmU+LF6azFlvuQJrwZVQ= 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+80199+1787277+3901457@groups.io Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by mx.zohomail.com with SMTPS id 1630646789545756.1400409325197; Thu, 2 Sep 2021 22:26:29 -0700 (PDT) Return-Path: X-Received: by 127.0.0.2 with SMTP id yVM1YY1788612xY6WHAY1hGr; Thu, 02 Sep 2021 22:26:29 -0700 X-Received: from mail-pj1-f51.google.com (mail-pj1-f51.google.com [209.85.216.51]) by mx.groups.io with SMTP id smtpd.web12.563.1630646787884686941 for ; Thu, 02 Sep 2021 22:26:28 -0700 X-Received: by mail-pj1-f51.google.com with SMTP id n13-20020a17090a4e0d00b0017946980d8dso3079922pjh.5 for ; Thu, 02 Sep 2021 22:26:27 -0700 (PDT) X-Gm-Message-State: KLsSrP5a5MZrvm4pyTwo6Zb3x1787277AA= X-Google-Smtp-Source: ABdhPJyYUWveB2kDqaIJl7w8X3zm5IAAN8hXCK2hQpJCAyHegooNpqQpIBvgInIbBCX5ARgD/4WmwA== X-Received: by 2002:a17:90b:30c1:: with SMTP id hi1mr1905365pjb.187.1630646786396; Thu, 02 Sep 2021 22:26:26 -0700 (PDT) X-Received: from localhost.localdomain (c-73-48-255-158.hsd1.ca.comcast.net. [73.48.255.158]) by smtp.googlemail.com with ESMTPSA id c24sm4044887pfd.145.2021.09.02.22.26.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 02 Sep 2021 22:26:26 -0700 (PDT) From: "Devon Bautista" To: devel@edk2.groups.io Cc: Ard Biesheuvel , Jiewen Yao , Jordan Justen , Gerd Hoffmann , Devon Bautista Subject: [edk2-devel] [PATCH v2 1/1] OvmfPkg: Introduce 16MiB flash size for (primarily) Linuxboot Date: Fri, 3 Sep 2021 05:26:20 +0000 Message-Id: <20210903052620.30638-2-dbautista@newmexicoconsortium.org> In-Reply-To: <20210903052620.30638-1-dbautista@newmexicoconsortium.org> References: <20210903052620.30638-1-dbautista@newmexicoconsortium.org> 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,dbautista@newmexicoconsortium.org Content-Transfer-Encoding: quoted-printable DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1630646789; bh=zpZH23MfraXWPPXlm2rO4akd3u40kmWqVSKC2n9qdv4=; h=Cc:Date:From:Reply-To:Subject:To; b=onsi7kXE71FWBVS2dtx5Ji0q316EvXzLb1PgCcwof1gSCkdt/4C0OPVbG27qli5DTEO fjiA6SsYBS913lzh/vUYyOmURgdlYN9XePUXlGebEV8m0ME2M5PPzQClgwIPPPKlim0pf H1QnNTJXmoPYsszfPiJ0u6nH6derXmMl1g0= X-ZohoMail-DKIM: pass (identity @groups.io) X-ZM-MESSAGEID: 1630646791419100006 Content-Type: text/plain; charset="utf-8" The largest size flash image currently available for OVMF builds, 4MiB, is too small to insert a Linux kernel and initramfs into the DXEFV, and is thus insufficient for testing Linuxboot builds via OVMF. Introduce the FD_SIZE_16MB build macro (equivalently, FD_SIZE_IN_KB=3D16384), which enlarges the full flash image to 16MiB, the maximum size available for x86. Since QEMU commit 0657c65 (hw/i386/pc: add max combined fw size as machine configuration option), QEMU supports flash sizes up to 16MiB using the "max-fw-size" property. This new 16MiB flash size uses the same non-volatile variable store size and layout as the default 4MiB flash size to ensure compatibility when switching to the larger flash size. Since the 4MiB target was created in commit b24fca0 (OvmfPkg: introduce 4MB flash image (mainly) for Windows HCK), the variable store size increased by 200KiB to 256KiB, which should provide an adequate safety margin. The FVMAIN_COMPACT is significantly enlarged to provide the extra space in the DXEFV (and PEIFV, if needed). For now, the 4MiB target remains the default. In summary: Description Compression type Size [KB] ------------------------- ----------------- ----------------------- Non-volatile data storage open-coded binary 528 -> 528 ( +0) data Variable store 256 -> 256 ( +0) Event log 4 -> 4 ( +0) Working block 4 -> 4 ( +0) Spare area 264 -> 264 ( +0) FVMAIN_COMPACT uncompressed 3360 -> 15648 (+12288) FV FFS file LZMA compressed PEIFV uncompressed 896 -> 896 ( +0) individual PEI uncompressed modules DXEFV uncompressed 12288 -> 12288 ( +0) individual DXE uncompressed modules SECFV uncompressed 208 -> 208 ( +0) SEC driver reset vector code Cc: Ard Biesheuvel Cc: Jiewen Yao Cc: Jordan Justen Cc: Gerd Hoffmann Signed-off-by: Devon Bautista Reviewed-by: Gerd Hoffmann --- OvmfPkg/OvmfPkgIa32.dsc | 4 +++ OvmfPkg/OvmfPkgIa32X64.dsc | 4 +++ OvmfPkg/OvmfPkgX64.dsc | 4 +++ OvmfPkg/OvmfXen.dsc | 4 +++ OvmfPkg/OvmfPkgDefines.fdf.inc | 28 +++++++++++++++----- OvmfPkg/VarStore.fdf.inc | 16 +++++------ 6 files changed, 45 insertions(+), 15 deletions(-) diff --git a/OvmfPkg/OvmfPkgIa32.dsc b/OvmfPkg/OvmfPkgIa32.dsc index d1d92c97bae3..fadad1c1efda 100644 --- a/OvmfPkg/OvmfPkgIa32.dsc +++ b/OvmfPkg/OvmfPkgIa32.dsc @@ -67,11 +67,15 @@ [Defines] !else !ifdef $(FD_SIZE_4MB) DEFINE FD_SIZE_IN_KB =3D 4096 +!else +!ifdef $(FD_SIZE_16MB) + DEFINE FD_SIZE_IN_KB =3D 16384 !else DEFINE FD_SIZE_IN_KB =3D 4096 !endif !endif !endif +!endif =20 [BuildOptions] GCC:RELEASE_*_*_CC_FLAGS =3D -DMDEPKG_NDEBUG diff --git a/OvmfPkg/OvmfPkgIa32X64.dsc b/OvmfPkg/OvmfPkgIa32X64.dsc index a467ab7090fb..0e8eae845901 100644 --- a/OvmfPkg/OvmfPkgIa32X64.dsc +++ b/OvmfPkg/OvmfPkgIa32X64.dsc @@ -66,11 +66,15 @@ [Defines] !else !ifdef $(FD_SIZE_4MB) DEFINE FD_SIZE_IN_KB =3D 4096 +!else +!ifdef $(FD_SIZE_16MB) + DEFINE FD_SIZE_IN_KB =3D 16384 !else DEFINE FD_SIZE_IN_KB =3D 4096 !endif !endif !endif +!endif =20 [BuildOptions] GCC:RELEASE_*_*_CC_FLAGS =3D -DMDEPKG_NDEBUG diff --git a/OvmfPkg/OvmfPkgX64.dsc b/OvmfPkg/OvmfPkgX64.dsc index e56b83d95e09..36ccb4418f67 100644 --- a/OvmfPkg/OvmfPkgX64.dsc +++ b/OvmfPkg/OvmfPkgX64.dsc @@ -66,11 +66,15 @@ [Defines] !else !ifdef $(FD_SIZE_4MB) DEFINE FD_SIZE_IN_KB =3D 4096 +!else +!ifdef $(FD_SIZE_16MB) + DEFINE FD_SIZE_IN_KB =3D 16384 !else DEFINE FD_SIZE_IN_KB =3D 4096 !endif !endif !endif +!endif =20 [BuildOptions] GCC:RELEASE_*_*_CC_FLAGS =3D -DMDEPKG_NDEBUG diff --git a/OvmfPkg/OvmfXen.dsc b/OvmfPkg/OvmfXen.dsc index 1a9c06c164a8..6a7ce481e895 100644 --- a/OvmfPkg/OvmfXen.dsc +++ b/OvmfPkg/OvmfXen.dsc @@ -56,11 +56,15 @@ [Defines] !else !ifdef $(FD_SIZE_4MB) DEFINE FD_SIZE_IN_KB =3D 4096 +!else +!ifdef $(FD_SIZE_16MB) + DEFINE FD_SIZE_IN_KB =3D 16384 !else DEFINE FD_SIZE_IN_KB =3D 2048 !endif !endif !endif +!endif =20 [BuildOptions] GCC:RELEASE_*_*_CC_FLAGS =3D -DMDEPKG_NDEBUG diff --git a/OvmfPkg/OvmfPkgDefines.fdf.inc b/OvmfPkg/OvmfPkgDefines.fdf.inc index 3b5e45253916..301600c4ef84 100644 --- a/OvmfPkg/OvmfPkgDefines.fdf.inc +++ b/OvmfPkg/OvmfPkgDefines.fdf.inc @@ -14,8 +14,8 @@ # A firmware binary built with FD_SIZE_IN_KB=3D1024, and a firmware binary= built # with FD_SIZE_IN_KB=3D2048, use the same variable store layout. # -# Setting FD_SIZE_IN_KB to 4096 results in a different (much larger) varia= ble -# store structure that is incompatible with both of the above-mentioned +# Setting FD_SIZE_IN_KB to 4096 or 16384 results in a different (much larg= er) +# variable store structure that is incompatible with both of the above-men= tioned # firmware binaries. # !if ($(FD_SIZE_IN_KB) =3D=3D 1024) || ($(FD_SIZE_IN_KB) =3D=3D 2048) @@ -23,6 +23,13 @@ DEFINE VARS_BLOCKS =3D 0x20 DEFINE VARS_LIVE_SIZE =3D 0xE000 DEFINE VARS_SPARE_SIZE =3D 0x10000 +!else +!if ($(FD_SIZE_IN_KB) =3D=3D 16384) || ($(FD_SIZE_IN_KB) =3D=3D 4096) +DEFINE VARS_SIZE =3D 0x84000 +DEFINE VARS_BLOCKS =3D 0x84 +DEFINE VARS_LIVE_SIZE =3D 0x40000 +DEFINE VARS_SPARE_SIZE =3D 0x42000 +!endif !endif =20 !if $(FD_SIZE_IN_KB) =3D=3D 1024 @@ -50,11 +57,6 @@ !endif =20 !if $(FD_SIZE_IN_KB) =3D=3D 4096 -DEFINE VARS_SIZE =3D 0x84000 -DEFINE VARS_BLOCKS =3D 0x84 -DEFINE VARS_LIVE_SIZE =3D 0x40000 -DEFINE VARS_SPARE_SIZE =3D 0x42000 - DEFINE FW_BASE_ADDRESS =3D 0xFFC00000 DEFINE FW_SIZE =3D 0x00400000 DEFINE FW_BLOCKS =3D 0x400 @@ -66,6 +68,18 @@ DEFINE SECFV_SIZE =3D 0x34000 !endif =20 +!if $(FD_SIZE_IN_KB) =3D=3D 16384 +DEFINE FW_BASE_ADDRESS =3D 0xFF000000 +DEFINE FW_SIZE =3D 0x01000000 +DEFINE FW_BLOCKS =3D 0x1000 +DEFINE CODE_BASE_ADDRESS =3D 0xFF084000 +DEFINE CODE_SIZE =3D 0x00F7C000 +DEFINE CODE_BLOCKS =3D 0xF7C +DEFINE FVMAIN_SIZE =3D 0x00F48000 +DEFINE SECFV_OFFSET =3D 0x00FCC000 +DEFINE SECFV_SIZE =3D 0x34000 +!endif + SET gUefiOvmfPkgTokenSpaceGuid.PcdOvmfFdBaseAddress =3D $(FW_BASE_ADDR= ESS) SET gUefiOvmfPkgTokenSpaceGuid.PcdOvmfFirmwareFdSize =3D $(FW_SIZE) SET gUefiOvmfPkgTokenSpaceGuid.PcdOvmfFirmwareBlockSize =3D $(BLOCK_SIZE) diff --git a/OvmfPkg/VarStore.fdf.inc b/OvmfPkg/VarStore.fdf.inc index a1e524e39329..179ab64d4642 100644 --- a/OvmfPkg/VarStore.fdf.inc +++ b/OvmfPkg/VarStore.fdf.inc @@ -11,7 +11,7 @@ !if ($(FD_SIZE_IN_KB) =3D=3D 1024) || ($(FD_SIZE_IN_KB) =3D=3D 2048) 0x00000000|0x0000e000 !endif -!if $(FD_SIZE_IN_KB) =3D=3D 4096 +!if ($(FD_SIZE_IN_KB) =3D=3D 4096) || ($(FD_SIZE_IN_KB) =3D=3D 16384) 0x00000000|0x00040000 !endif #NV_VARIABLE_STORE @@ -29,7 +29,7 @@ # FvLength: 0x20000 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, !endif -!if $(FD_SIZE_IN_KB) =3D=3D 4096 +!if ($(FD_SIZE_IN_KB) =3D=3D 4096) || ($(FD_SIZE_IN_KB) =3D=3D 16384) # FvLength: 0x84000 0x00, 0x40, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, !endif @@ -41,7 +41,7 @@ # CheckSum 0x19, 0xF9, !endif -!if $(FD_SIZE_IN_KB) =3D=3D 4096 +!if ($(FD_SIZE_IN_KB) =3D=3D 4096) || ($(FD_SIZE_IN_KB) =3D=3D 16384) # CheckSum 0xAF, 0xB8, !endif @@ -51,7 +51,7 @@ # Blockmap[0]: 0x20 Blocks * 0x1000 Bytes / Block 0x20, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, !endif -!if $(FD_SIZE_IN_KB) =3D=3D 4096 +!if ($(FD_SIZE_IN_KB) =3D=3D 4096) || ($(FD_SIZE_IN_KB) =3D=3D 16384) # Blockmap[0]: 0x84 Blocks * 0x1000 Bytes / Block 0x84, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, !endif @@ -70,7 +70,7 @@ # This can speed up the Variable Dispatch a bit. 0xB8, 0xDF, 0x00, 0x00, !endif -!if $(FD_SIZE_IN_KB) =3D=3D 4096 +!if ($(FD_SIZE_IN_KB) =3D=3D 4096) || ($(FD_SIZE_IN_KB) =3D=3D 16384) # Size: 0x40000 (gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariabl= eSize) - # 0x48 (size of EFI_FIRMWARE_VOLUME_HEADER) =3D 0x3ffb8 # This can speed up the Variable Dispatch a bit. @@ -83,7 +83,7 @@ !if ($(FD_SIZE_IN_KB) =3D=3D 1024) || ($(FD_SIZE_IN_KB) =3D=3D 2048) 0x0000e000|0x00001000 !endif -!if $(FD_SIZE_IN_KB) =3D=3D 4096 +!if ($(FD_SIZE_IN_KB) =3D=3D 4096) || ($(FD_SIZE_IN_KB) =3D=3D 16384) 0x00040000|0x00001000 !endif #NV_EVENT_LOG @@ -91,7 +91,7 @@ !if ($(FD_SIZE_IN_KB) =3D=3D 1024) || ($(FD_SIZE_IN_KB) =3D=3D 2048) 0x0000f000|0x00001000 !endif -!if $(FD_SIZE_IN_KB) =3D=3D 4096 +!if ($(FD_SIZE_IN_KB) =3D=3D 4096) || ($(FD_SIZE_IN_KB) =3D=3D 16384) 0x00041000|0x00001000 !endif #NV_FTW_WORKING @@ -109,7 +109,7 @@ !if ($(FD_SIZE_IN_KB) =3D=3D 1024) || ($(FD_SIZE_IN_KB) =3D=3D 2048) 0x00010000|0x00010000 !endif -!if $(FD_SIZE_IN_KB) =3D=3D 4096 +!if ($(FD_SIZE_IN_KB) =3D=3D 4096) || ($(FD_SIZE_IN_KB) =3D=3D 16384) 0x00042000|0x00042000 !endif #NV_FTW_SPARE --=20 2.33.0 -=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 (#80199): https://edk2.groups.io/g/devel/message/80199 Mute This Topic: https://groups.io/mt/85345598/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-