From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from ams.source.kernel.org (ams.source.kernel.org [145.40.68.75]) by mx.groups.io with SMTP id smtpd.web08.5121.1650440651402269398 for ; Wed, 20 Apr 2022 00:44:11 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=uzrgu5ix; spf=pass (domain: kernel.org, ip: 145.40.68.75, mailfrom: ardb@kernel.org) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ams.source.kernel.org (Postfix) with ESMTPS id 16CDBB81D67 for ; Wed, 20 Apr 2022 07:44:09 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 2B491C385AE for ; Wed, 20 Apr 2022 07:44:07 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1650440647; bh=vsw8NagxhYjdAwrJRS+udKK2f9Ml4dRjQB+mPao+u3E=; h=References:In-Reply-To:From:Date:Subject:To:Cc:From; b=uzrgu5ixsfkeiTlfYutQaIM93dXw9xb7skqDLM6zhdERWfdi06aSwQ36QMyXLoB4r nLHGaeaW+YHcoDmJ4rH95UWWKThwQ/nBcRhvkn6fAJtuV7AXDrqhDQH+6y5ntmWCpA N+x3gxo2kdBVss4TPO91OWE0sG6x4vRhKcPDNiqkqTV1PcEXitJwWWuy6muWwPFHSP hYgboClX+NqQ6MQcZ7KgGDR7b+AN1PRYuZUx3tQJ2OoKxex0KhAP2B8IZxhQuxNdrv CZcbr1KCz7lypL1PiLP244bqntZ3Hy/gPfybRMo+9tkOcsHS0ZNjhzRhjLVpxKFFuK D8Ms8s4UoRdUQ== Received: by mail-oa1-f52.google.com with SMTP id 586e51a60fabf-e604f712ecso1120773fac.9 for ; Wed, 20 Apr 2022 00:44:07 -0700 (PDT) X-Gm-Message-State: AOAM531nSvEpI+YAWfa+t1gbJa6HopNVRhOmSbrDkToSW/KOQNAm0AEM 1MfVYh9cCrmT7zmQ4H0rt+yjzix9u8a2q5zkgG0= X-Google-Smtp-Source: ABdhPJznaPFjmOWubOMbCIBMqxnK7jSxcppP9YCh/+9f4OuNHaJXAHhjajyjiDnHGI+eGlrpmd3HYs17RcWJi0Tu9cg= X-Received: by 2002:a05:6871:297:b0:e5:f100:602f with SMTP id i23-20020a056871029700b000e5f100602fmr1050865oae.126.1650440646253; Wed, 20 Apr 2022 00:44:06 -0700 (PDT) MIME-Version: 1.0 References: <20220412162940.4978-1-mikuback@linux.microsoft.com> In-Reply-To: <20220412162940.4978-1-mikuback@linux.microsoft.com> From: "Ard Biesheuvel" Date: Wed, 20 Apr 2022 09:43:55 +0200 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: [PATCH v4 0/8] Add Variable Flash Info HOB To: Michael Kubacki Cc: edk2-devel-groups-io , Abner Chang , Andrew Fish , Anthony Perard , Ard Biesheuvel , Benjamin You , Brijesh Singh , Erdem Aktas , Gerd Hoffmann , Guo Dong , Hao A Wu , James Bottomley , Jian J Wang , Jiewen Yao , Jordan Justen , Julien Grall , Leif Lindholm , Liming Gao , Maurice Ma , Min Xu , Nickle Wang , Peter Grehan , Ray Ni , Rebecca Cran , Sami Mujawar , Sean Rhodes , Sebastien Boeuf , Tom Lendacky Content-Type: text/plain; charset="UTF-8" On Tue, 12 Apr 2022 at 18:30, wrote: > > From: Michael Kubacki > > REF:https://bugzilla.tianocore.org/show_bug.cgi?id=3479 > > The UEFI variable drivers such as VariableRuntimeDxe, VariableSmm, > VariableStandaloneMm, etc. (and their dependent protocol/library > stack), typically acquire UEFI variable store flash information > with PCDs declared in MdeModulePkg. > > For example: > [Pcd] > gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableBase > gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableBase64 > gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableSize > > These PCDs work as-is in the StandaloneMm driver if they are not > dynamic such as Dynamic or DynamicEx because PCD services are not > readily available in the Standalone MM environment. Platforms that > use Standalone MM today, must define these PCDs as FixedAtBuild in > their platform build. However, the PCDs do allow platforms to treat > the PCDs as Dynamic/DynamicEx and being able to support that is > currently a gap for Standalone MM. > > This patch series introduces a HOB that can be produced by the > platform to provide the same information. The HOB list is > available to Standalone MM. > > The PCD declarations are left as-is in MdeModulePkg for backward > compatibility. This means unless a platform wants to use the HOB, > their code will continue to work with no change (they do not need > to produce the HOB). Only if the HOB is found, is its value used > instead of the PCDs. > > Due to the large number of consumers of this information, access > to the base address and size values is abstracted in a new library > class (as requested in the v1 series) called VariableFlashInfoLib. > > The API of VariableFlashInfoLib does not bind the underlying data > structure to the information returned to library users to allow > flexibility in the library implementation in the future. > > V4 changes: > 1. Add a UINT32 "Reserved" field to VARIABLE_FLASH_INFO. > 2. Add a descriptive comment to VariableFlashInfo.h to explain > HOB usage. > > V3 changes: > 1. To better clarify usage, renamed the members > "NvStorageBaseAddress" and "NvStorageLength" in > "VARIABLE_FLASH_INFO" to "NvVariableBaseAddress" and > "NvVariableLength". > 2. Added description comments to the fields in "VARIABLE_FLASH_INFO". > > V2 changes: > 1. Abstracted flash info data access with VariableFlashInfoLib. > 2. Updated package builds in the repo that build the variable and > FTW drivers to include VariableFlashInfoLib. > 3. Removed a redundant variable assignment in VariableSmm.c. > 4. Updated comments in FtwMisc.c and FaultTolerantWritePei.c to > indicate driver assumption is UINTN (not UINT32) > 5. Added a version field to the VARIABLE_FLASH_INFO structure. > > Cc: Abner Chang > Cc: Andrew Fish > Cc: Anthony Perard > Cc: Ard Biesheuvel > Cc: Benjamin You > Cc: Brijesh Singh > Cc: Erdem Aktas > Cc: Gerd Hoffmann > Cc: Guo Dong > Cc: Hao A Wu > Cc: James Bottomley > Cc: Jian J Wang > Cc: Jiewen Yao > Cc: Jordan Justen > Cc: Julien Grall > Cc: Leif Lindholm > Cc: Liming Gao > Cc: Maurice Ma > Cc: Min Xu > Cc: Nickle Wang > Cc: Peter Grehan > Cc: Ray Ni > Cc: Rebecca Cran > Cc: Sami Mujawar > Cc: Sean Rhodes > Cc: Sebastien Boeuf > Cc: Tom Lendacky > Signed-off-by: Michael Kubacki > > Michael Kubacki (8): > MdeModulePkg: Add Variable Flash Info HOB > MdeModulePkg/VariableFlashInfoLib: Add initial library > MdeModulePkg/Variable: Consume Variable Flash Info > MdeModulePkg/FaultTolerantWrite: Consume Variable Flash Info > ArmVirtPkg/ArmVirt.dsc.inc: Add VariableFlashInfoLib > EmulatorPkg: Add VariableFlashInfoLib > OvmfPkg: Add VariableFlashInfoLib > UefiPayloadPkg: Add VariableFlashInfoLib > For the series, Acked-by: Ard Biesheuvel > MdeModulePkg/Library/BaseVariableFlashInfoLib/BaseVariableFlashInfoLib.c | 178 ++++++++++++++++++++ > MdeModulePkg/Universal/FaultTolerantWriteDxe/FtwMisc.c | 41 +++-- > MdeModulePkg/Universal/FaultTolerantWriteDxe/UpdateWorkingBlock.c | 7 +- > MdeModulePkg/Universal/FaultTolerantWritePei/FaultTolerantWritePei.c | 28 +-- > MdeModulePkg/Universal/Variable/Pei/Variable.c | 14 +- > MdeModulePkg/Universal/Variable/RuntimeDxe/VariableDxe.c | 16 +- > MdeModulePkg/Universal/Variable/RuntimeDxe/VariableNonVolatile.c | 14 +- > MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmm.c | 17 +- > ArmVirtPkg/ArmVirt.dsc.inc | 1 + > EmulatorPkg/EmulatorPkg.dsc | 1 + > MdeModulePkg/Include/Guid/VariableFlashInfo.h | 111 ++++++++++++ > MdeModulePkg/Include/Library/VariableFlashInfoLib.h | 68 ++++++++ > MdeModulePkg/Library/BaseVariableFlashInfoLib/BaseVariableFlashInfoLib.inf | 48 ++++++ > MdeModulePkg/Library/BaseVariableFlashInfoLib/BaseVariableFlashInfoLib.uni | 12 ++ > MdeModulePkg/MdeModulePkg.dec | 8 + > MdeModulePkg/MdeModulePkg.dsc | 2 + > MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWrite.h | 7 +- > MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteDxe.inf | 10 +- > MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteSmm.inf | 10 +- > MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteStandaloneMm.inf | 10 +- > MdeModulePkg/Universal/FaultTolerantWritePei/FaultTolerantWritePei.inf | 10 +- > MdeModulePkg/Universal/Variable/Pei/Variable.h | 2 + > MdeModulePkg/Universal/Variable/Pei/VariablePei.inf | 5 +- > MdeModulePkg/Universal/Variable/RuntimeDxe/Variable.h | 7 +- > MdeModulePkg/Universal/Variable/RuntimeDxe/VariableRuntimeDxe.inf | 5 +- > MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmm.inf | 5 +- > MdeModulePkg/Universal/Variable/RuntimeDxe/VariableStandaloneMm.inf | 5 +- > OvmfPkg/AmdSev/AmdSevX64.dsc | 1 + > OvmfPkg/Bhyve/BhyveX64.dsc | 1 + > OvmfPkg/CloudHv/CloudHvX64.dsc | 1 + > OvmfPkg/IntelTdx/IntelTdxX64.dsc | 1 + > OvmfPkg/Microvm/MicrovmX64.dsc | 1 + > OvmfPkg/OvmfPkgIa32.dsc | 1 + > OvmfPkg/OvmfPkgIa32X64.dsc | 1 + > OvmfPkg/OvmfPkgX64.dsc | 1 + > OvmfPkg/OvmfXen.dsc | 1 + > UefiPayloadPkg/UefiPayloadPkg.dsc | 1 + > 37 files changed, 558 insertions(+), 94 deletions(-) > create mode 100644 MdeModulePkg/Library/BaseVariableFlashInfoLib/BaseVariableFlashInfoLib.c > create mode 100644 MdeModulePkg/Include/Guid/VariableFlashInfo.h > create mode 100644 MdeModulePkg/Include/Library/VariableFlashInfoLib.h > create mode 100644 MdeModulePkg/Library/BaseVariableFlashInfoLib/BaseVariableFlashInfoLib.inf > create mode 100644 MdeModulePkg/Library/BaseVariableFlashInfoLib/BaseVariableFlashInfoLib.uni > > -- > 2.28.0.windows.1 >