From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by mx.groups.io with SMTP id smtpd.web08.4303.1617863261589785050 for ; Wed, 07 Apr 2021 23:27:41 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@intel.onmicrosoft.com header.s=selector2-intel-onmicrosoft-com header.b=QWPVjnzT; spf=pass (domain: intel.com, ip: 192.55.52.43, mailfrom: chasel.chiu@intel.com) IronPort-SDR: 5IuRKjCFwHmc7SOrd5QswPz7FU3pXNGS+SEq0KiNpoYMV/itz6xTjOZrgv1RrELFUrNZKZe3Ua P9IZs5MSCNHg== X-IronPort-AV: E=McAfee;i="6000,8403,9947"; a="278740982" X-IronPort-AV: E=Sophos;i="5.82,205,1613462400"; d="scan'208";a="278740982" Received: from orsmga005.jf.intel.com ([10.7.209.41]) by fmsmga105.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 07 Apr 2021 23:27:40 -0700 IronPort-SDR: ajf1ZfkA0NTiYZbUMsC0x2omtg0QulytI87mnUsoFtMONNCfpzVJANxnpIqfMs19oCwLp6Rw5L XuKr/tkXjnCg== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.82,205,1613462400"; d="scan'208";a="598649031" Received: from orsmsx601.amr.corp.intel.com ([10.22.229.14]) by orsmga005.jf.intel.com with ESMTP; 07 Apr 2021 23:27:39 -0700 Received: from orsmsx603.amr.corp.intel.com (10.22.229.16) by ORSMSX601.amr.corp.intel.com (10.22.229.14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2106.2; Wed, 7 Apr 2021 23:27:37 -0700 Received: from ORSEDG601.ED.cps.intel.com (10.7.248.6) by orsmsx603.amr.corp.intel.com (10.22.229.16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2106.2 via Frontend Transport; Wed, 7 Apr 2021 23:27:37 -0700 Received: from NAM12-BN8-obe.outbound.protection.outlook.com (104.47.55.174) by edgegateway.intel.com (134.134.137.102) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2106.2; Wed, 7 Apr 2021 23:27:37 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=n4LU3awo9E/gL0ajyPLmRLxYs/GUzXIo+8htbYgE0r+Gu5u9qmFnBuYe//rBwMi2kV4Gb3ou+cxRBAsNQBCRpg+a+fCHRHSt2tlLLuQzIj+1qN2NN8KANXii1A3MjQlHMVoMhW2zpiqVvMDinO67uQL6qAYHDPNHiR4UPbwGrl5o9oN57D65MxmDTqdRJ6yNN2HrihrC2u9keLQ/LWmeifj1eGqtj7lVx/iOYyjFJAtYykKJmrLA846+X0F2ffy3HcIiVsCMfqs+cVrWopk7qBdH8B1XUx8fD6OrD15z9ZhThjUhcHq4Y7Xm2/rlxfF7K//OluIGnh00Y/sojA44Ag== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=HSqF/jVEV5CXB/c71nx/DAJeAhS9lMWu0iJRi+KT3m0=; b=MYKsVVPA7D4XOKlIWEproRy0SfDSmUwFFr3K7pTH6STKkr8j1qk/jWBEHG0xBPOVxCcm9gg5ND0EWcmPzBxFAXkeJFW3rpkhGcFlGVxFAk6X73dtfWJTnDWdOx1sWoFCiyuG2f4oOJWKgJmpfZMbm+WWN41jhqTN0oBpv8TJjl9Bt1QJuV5NO6gv4PZyOtGXTP3Haq/ttws6/Q8wgov3hHUgVG6Rmg/pbq33e66QjyBVwPtSOClTtWWDlzfUvsKkUezhq/V6b8m8NvZ7ilekpB778jv6s0GASzQZeXeFgHUOpv3PJge1UIdohwObanXQX9OkrL0sflaezk7MFTTVUg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=intel.onmicrosoft.com; s=selector2-intel-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=HSqF/jVEV5CXB/c71nx/DAJeAhS9lMWu0iJRi+KT3m0=; b=QWPVjnzTcblWKxKnsrOXMD52g/dkRDTZGjW65vCN26ENuZEzgGMDS6a8s1szydYZEQoxY0IuQWDjZdqZDq2CppM9rsOEY1HkqipiTk5HkZOdvhguxFJfH2qsIVwLCUX8fmQIZ1x6GhztfMiRuw2z38bopWQMBlv7nc6cmjuVoA4= Received: from SN6PR11MB2814.namprd11.prod.outlook.com (2603:10b6:805:55::15) by SN6PR11MB3407.namprd11.prod.outlook.com (2603:10b6:805:bd::32) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4020.18; Thu, 8 Apr 2021 06:27:36 +0000 Received: from SN6PR11MB2814.namprd11.prod.outlook.com ([fe80::3101:f483:8348:816]) by SN6PR11MB2814.namprd11.prod.outlook.com ([fe80::3101:f483:8348:816%7]) with mapi id 15.20.4020.018; Thu, 8 Apr 2021 06:27:36 +0000 From: "Chiu, Chasel" To: "Desimone, Nathaniel L" , "devel@edk2.groups.io" CC: Liming Gao , "Dong, Eric" , Michael Kubacki , "Oram, Isaac W" Subject: Re: [edk2-platforms] [PATCH v5 0/4] Add Large Variable Libraries Thread-Topic: [edk2-platforms] [PATCH v5 0/4] Add Large Variable Libraries Thread-Index: AQHXK+KySBSx2oB0bEm960raR9XvnqqqKKCA Date: Thu, 8 Apr 2021 06:27:36 +0000 Message-ID: References: <20210407191708.8479-1-nathaniel.l.desimone@intel.com> In-Reply-To: <20210407191708.8479-1-nathaniel.l.desimone@intel.com> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-reaction: no-action dlp-version: 11.5.1.3 authentication-results: intel.com; dkim=none (message not signed) header.d=none;intel.com; dmarc=none action=none header.from=intel.com; x-originating-ip: [1.200.19.115] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: c067fc5c-d17e-4b21-cbdb-08d8fa57668c x-ms-traffictypediagnostic: SN6PR11MB3407: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:8882; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: 5Twigi69D8BQsEU0PVwkT5Q7xpxVcaEH9KqWk/8WvPLq92pZH/p6TiX1ZlzQ7z/4+/7SDUYKnskoACEuzfFz2hS89lJFkVx3rth84h8dOPpHLV/RPYaCrN2h1ikjr+brtzJp9hFRQdbZhvhmiyAjR74my2GYU8LVAab6JakS2GE8a3sqWFql3tf7iJySSe9W7vyMwj5nX3H6+U+PjoRB3MCaa88kfLS7BOJzvpQJcHzBnVsIPz/RBkPBTjYPRaz0Y9ieM3TvQJgk21KwiKGoPTC2YsuMjZVrMvOMqf1mx+V8wJ9WWmvTz2uioRGSBE36g3RYlCcQ02005LvXwYPnalqgN/ZNXtMXz2ITrVA3YiKnnkXzQ2trU3EdNp/Uqni95tAwomRHsLgEBXvX2YW3FJ5YemYDPY57vygF10Xb3knrPPCarPx3zmV4VGt9PBHoUwY489CvXJB7ydnwh+xsmL+UZTbUyn76OFj3URZKAu9kSfUGcYkZgPWaSV0bw43QCEbxCq2cYxcHdLwvnNxpaNoH5HW6lFJ61yT3ySBWhk3Rx/re4vS+uL0O4z9RYXHM8ToEYm8HwACZYCqVdPkfrQ7PgQ4/06K9lkTkFZPdDcnhRU4/KbINWVBhNtfJxnOp2Vk3Y3EdwY3Oj42A180OS9nw6j5UaasoqpQoFg1ctDQ= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SN6PR11MB2814.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(346002)(136003)(39860400002)(376002)(366004)(396003)(478600001)(8936002)(9686003)(26005)(55016002)(4326008)(64756008)(66946007)(107886003)(66556008)(66446008)(8676002)(54906003)(7696005)(52536014)(110136005)(53546011)(66476007)(6506007)(83380400001)(71200400001)(2906002)(5660300002)(76116006)(38100700001)(33656002)(316002)(86362001)(186003);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata: =?us-ascii?Q?kvKO1u3NoltayKPlP8G6I1PXy+LrSd+Gz33zEQBVnvIv5by8Sxl0i7uDYvY4?= =?us-ascii?Q?s9KhiJY7kd14CP0u7ptfQ3QpgutjvlTsu1sTmyVl+cnbGlzsKtcv6PdMN2PC?= =?us-ascii?Q?PXFN78wtrmqVZVDEWGfBngqvd5jnkEnfa6FQLwaSR5mas0yliqzT+woGGzGA?= =?us-ascii?Q?0k6JfPGPGjM2izGF/VQ+JPBz+Ef89/ONnHlJXl8MGFouI+EkN3b0iHA/ApJP?= =?us-ascii?Q?7ePcHL6pmJ5C9tyyzl0bmWyTzFJuwpc9JiuxkS+fLuYq/KERH0h+neblWCot?= =?us-ascii?Q?NVgOfXcI5CGq3VFbgsjn5zBM6HJav77iwK2fRysckZp040CC0AyJ5Lgy46vo?= =?us-ascii?Q?rKYulsaoIoPW/wE6Ituddg9++XCiqWyKFf+EJQ3QQ6cf2rXL8St8cSpDEvX5?= =?us-ascii?Q?SAoepYewY7a407047W8qLv6ZCCrUKu6vPMwGtjhOwavZweWrsmcZC3IA+/rJ?= =?us-ascii?Q?mcq9iXu8+D9b974DXSAZGTlCkFApYdpEIWIeoVJOvWIUCFnIJI5TWrgyes89?= =?us-ascii?Q?S4FqjBeUDbh2Q32vWx+7+AXU3qaujir48UIpkIqcrSZowHQxmhxa3ZMJYfMi?= =?us-ascii?Q?6AU+Ln0P9NxtiM5jqw9sKaNi80pNCk+fh6S8Ya/1hN99xyUA4oIhlKi6G0jy?= =?us-ascii?Q?iC12h3EmtKpib6YCWk+Fo82FSLWq5IzhYX7N6SadpBIWSISMjjQxRUDYOV7l?= =?us-ascii?Q?w27Q34oFAgMpfOzdFEJ2a4xczVAOzwGDrbQ5GoP4gdkyERYK0onl18767wme?= =?us-ascii?Q?FG8wMMGOuOfa7mi5Fc7AiWAhnjlxQjFrADcoXPx12bbTiNJ1GsrX1I7QbBAo?= =?us-ascii?Q?aPFjPOmFxU4z4UJV5WF/dFl7NiN5//zlggCsXIZ6zSPlyLK2gvnnIJmCDX3W?= =?us-ascii?Q?6pGlD5CglCJRYLEbWHFnUy//4bVdJYBGS7ekxNCM7rpk0akoUVAfFIrOf36A?= =?us-ascii?Q?EZ01hyGolfOz263NScaFCPH7Z1iV89ipwPpUnzKm5hBEXLGd39Q423m8KbrX?= =?us-ascii?Q?3WeSJIPQtOY/MBhlX5+7mLPOUDCiIiWO2bBsLOVI7V+B4+ijfGw6Ty6hjyu1?= =?us-ascii?Q?Sza1ee3/E65Y7pbD0TY8RZHJ6sZTaJscIyISEMsHtonUC8b6q6472lq9MgJt?= =?us-ascii?Q?R3bDCi7cOkfWxmaymCImqf1JDgTDeI6MeBRq0FAMO0bABO9x/xbZUf4efUjr?= =?us-ascii?Q?Gn167RYnb8Xaeg1HyJaWv0Gt7sDxiYhwobjlDjwXzahI1DIynC6p3irBNuT1?= =?us-ascii?Q?EpXDt0Fk16PMNcU1KaozsK9BJyzTR1zi5lFV86pJQCmDrgRC3RtOs1ozmhVY?= =?us-ascii?Q?5eE=3D?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: SN6PR11MB2814.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: c067fc5c-d17e-4b21-cbdb-08d8fa57668c X-MS-Exchange-CrossTenant-originalarrivaltime: 08 Apr 2021 06:27:36.0888 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: J/uLjzRMYx+ztG6JUDYGjx/VlNQujeHz9Fnh9Be3ajoMcVQwjII8fkvYz4cGax5C4wLrEz+BAqHm8k/i5mWSAw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN6PR11MB3407 Return-Path: chasel.chiu@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Reviewed-by: Chasel Chiu > -----Original Message----- > From: Nate DeSimone > Sent: Thursday, April 8, 2021 3:17 AM > To: devel@edk2.groups.io > Cc: Chiu, Chasel ; Liming Gao > ; Dong, Eric ; Michael > Kubacki ; Oram, Isaac W > > Subject: [edk2-platforms] [PATCH v5 0/4] Add Large Variable Libraries >=20 > Changes from V4: > - Added LibraryClass interface definitions to > MinPlatformPkg.dec >=20 > Changes from V3: > - Added header guards > - Documented the possibility of returning EFI_UNSUPPORTED > - Added MM_CORE_STANDALONE to the StandaloneMm library > implementations > - Documented library constructor return status > - Moved LargeVariableReadLib and LargeVariableWriteLib into > a single BaseLargeVariableLib folder > - Added LargeVariableCommon.h for shared macro definitions > - Converted some debug macros from DEBUG_INFO to DEBUG_VERBOSE >=20 > Changes from V2: > - Added comment to LargeVariableLib INF and header files > describing the usage for drivers that cannot assume that > PcdMaxVariableSize has been set to a certain minimum value. >=20 > Changes from V1: > - Changed prefix from "Min" to "VarLib" > - Better comments > - Added more whitespace for readability > - Removed unused INF sections > - Better debug messages >=20 > This patch series introduces libaries that enable large data sets to be s= tored > using the UEFI Variable Services. At present, most UEFI Variable Services > implementations have a maximum variable size of <=3D64KB. The exact value > varies depending on platform. >=20 > These libaries enable a data set to use as much space as needed, up to th= e > remaining space in the UEFI Variable non-volatile storage. >=20 > To implement this, I have broken the problem down into two parts: >=20 > 1. Phase angostic UEFI Variable access. > 2. Storage of data across multiple UEFI Variables. >=20 > For the first part, I have created two new LibraryClasses: > VariableReadLib and VariableWriteLib. I have provided implementation inst= ances > of VariableReadLib for PEI, DXE, and SMM. > For VariableWriteLib, I have provided implementation instances for DXE an= d > SMM. This enables code that accesses UEFI variables to be written in a ma= tter > than is phase agnostic, so the same code can be used in PEI, DXE, or SMM > without modification. >=20 > The second part involves another two new LibaryClasses: > LargeVariableReadLib and LargeVariableWriteLib. Only one BASE > implementation is needed for both of these as the phase dependent code wa= s > seperated out in the first piece. These libraries provide logic to calcul= ate the > maximum size of an individual UEFI variable and split the data into as ma= ny > smaller pieces as needed to store the entire data set in the UEFI Variabl= e storage. > They also provide the ability to stitch the data back together when it is= read. > Deleting the data will delete all variables used to store it. >=20 > Cc: Chasel Chiu > Cc: Liming Gao > Cc: Eric Dong > Cc: Michael Kubacki > Cc: Isaac Oram > Signed-off-by: Nate DeSimone >=20 > Nate DeSimone (4): > MinPlatformPkg: Add VariableReadLib > MinPlatformPkg: Add VariableWriteLib > MinPlatformPkg: Add LargeVariableReadLib > MinPlatformPkg: Add LargeVariableWriteLib >=20 > .../Include/Dsc/CoreCommonLib.dsc | 6 +- > .../MinPlatformPkg/Include/Dsc/CoreDxeLib.dsc | 12 +- > .../MinPlatformPkg/Include/Dsc/CorePeiLib.dsc | 9 +- > .../Include/Library/LargeVariableReadLib.h | 61 +++ > .../Include/Library/LargeVariableWriteLib.h | 69 +++ > .../Include/Library/VariableReadLib.h | 94 ++++ > .../Include/Library/VariableWriteLib.h | 138 ++++++ > .../BaseLargeVariableReadLib.inf | 51 ++ > .../BaseLargeVariableWriteLib.inf | 51 ++ > .../LargeVariableCommon.h | 47 ++ > .../LargeVariableReadLib.c | 176 +++++++ > .../LargeVariableWriteLib.c | 450 ++++++++++++++++++ > .../DxeRuntimeVariableReadLib.c | 117 +++++ > .../DxeRuntimeVariableReadLib.inf | 41 ++ > .../DxeRuntimeVariableWriteLib.c | 265 +++++++++++ > .../DxeRuntimeVariableWriteLib.inf | 49 ++ > .../PeiVariableReadLib/PeiVariableReadLib.c | 155 ++++++ > .../PeiVariableReadLib/PeiVariableReadLib.inf | 42 ++ > .../SmmVariableReadCommon.c | 116 +++++ > .../StandaloneMmVariableReadLib.inf | 50 ++ > .../StandaloneMmVariableReadLibConstructor.c | 51 ++ > .../TraditionalMmVariableReadLib.inf | 49 ++ > .../TraditionalMmVariableReadLibConstructor.c | 51 ++ > .../SmmVariableWriteCommon.c | 171 +++++++ > .../StandaloneMmVariableWriteLib.inf | 45 ++ > .../StandaloneMmVariableWriteLibConstructor.c | 51 ++ > .../TraditionalMmVariableWriteLib.inf | 44 ++ > ...TraditionalMmVariableWriteLibConstructor.c | 51 ++ > .../Intel/MinPlatformPkg/MinPlatformPkg.dec | 5 + > .../Intel/MinPlatformPkg/MinPlatformPkg.dsc | 4 +- > 30 files changed, 2511 insertions(+), 10 deletions(-) create mode 10064= 4 > Platform/Intel/MinPlatformPkg/Include/Library/LargeVariableReadLib.h > create mode 100644 > Platform/Intel/MinPlatformPkg/Include/Library/LargeVariableWriteLib.h > create mode 100644 > Platform/Intel/MinPlatformPkg/Include/Library/VariableReadLib.h > create mode 100644 > Platform/Intel/MinPlatformPkg/Include/Library/VariableWriteLib.h > create mode 100644 > Platform/Intel/MinPlatformPkg/Library/BaseLargeVariableLib/BaseLargeVaria= bl > eReadLib.inf > create mode 100644 > Platform/Intel/MinPlatformPkg/Library/BaseLargeVariableLib/BaseLargeVaria= bl > eWriteLib.inf > create mode 100644 > Platform/Intel/MinPlatformPkg/Library/BaseLargeVariableLib/LargeVariableC= o > mmon.h > create mode 100644 > Platform/Intel/MinPlatformPkg/Library/BaseLargeVariableLib/LargeVariableR= ea > dLib.c > create mode 100644 > Platform/Intel/MinPlatformPkg/Library/BaseLargeVariableLib/LargeVariableW= ri > teLib.c > create mode 100644 > Platform/Intel/MinPlatformPkg/Library/DxeRuntimeVariableReadLib/DxeRuntim > eVariableReadLib.c > create mode 100644 > Platform/Intel/MinPlatformPkg/Library/DxeRuntimeVariableReadLib/DxeRuntim > eVariableReadLib.inf > create mode 100644 > Platform/Intel/MinPlatformPkg/Library/DxeRuntimeVariableWriteLib/DxeRunti > meVariableWriteLib.c > create mode 100644 > Platform/Intel/MinPlatformPkg/Library/DxeRuntimeVariableWriteLib/DxeRunti > meVariableWriteLib.inf > create mode 100644 > Platform/Intel/MinPlatformPkg/Library/PeiVariableReadLib/PeiVariableReadL= ib. > c > create mode 100644 > Platform/Intel/MinPlatformPkg/Library/PeiVariableReadLib/PeiVariableReadL= ib. > inf > create mode 100644 > Platform/Intel/MinPlatformPkg/Library/SmmVariableReadLib/SmmVariableRead > Common.c > create mode 100644 > Platform/Intel/MinPlatformPkg/Library/SmmVariableReadLib/StandaloneMmVa > riableReadLib.inf > create mode 100644 > Platform/Intel/MinPlatformPkg/Library/SmmVariableReadLib/StandaloneMmVa > riableReadLibConstructor.c > create mode 100644 > Platform/Intel/MinPlatformPkg/Library/SmmVariableReadLib/TraditionalMmVar > iableReadLib.inf > create mode 100644 > Platform/Intel/MinPlatformPkg/Library/SmmVariableReadLib/TraditionalMmVar > iableReadLibConstructor.c > create mode 100644 > Platform/Intel/MinPlatformPkg/Library/SmmVariableWriteLib/SmmVariableWrit > eCommon.c > create mode 100644 > Platform/Intel/MinPlatformPkg/Library/SmmVariableWriteLib/StandaloneMmVa > riableWriteLib.inf > create mode 100644 > Platform/Intel/MinPlatformPkg/Library/SmmVariableWriteLib/StandaloneMmVa > riableWriteLibConstructor.c > create mode 100644 > Platform/Intel/MinPlatformPkg/Library/SmmVariableWriteLib/TraditionalMmVa > riableWriteLib.inf > create mode 100644 > Platform/Intel/MinPlatformPkg/Library/SmmVariableWriteLib/TraditionalMmVa > riableWriteLibConstructor.c >=20 > -- > 2.27.0.windows.1