From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by mx.groups.io with SMTP id smtpd.web08.168.1617902233897966911 for ; Thu, 08 Apr 2021 10:17:14 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@intel.onmicrosoft.com header.s=selector2-intel-onmicrosoft-com header.b=GEJawtiG; spf=pass (domain: intel.com, ip: 192.55.52.93, mailfrom: isaac.w.oram@intel.com) IronPort-SDR: dq33HoSWXlfrE48j1sGuFtNL3xzX6YMSvEw5Wh/H6Hwkn1/E5KsJGLCsymSIYhF2vNxZ8W/AKz rM+SB9zLFZvQ== X-IronPort-AV: E=McAfee;i="6000,8403,9948"; a="190392507" X-IronPort-AV: E=Sophos;i="5.82,207,1613462400"; d="scan'208";a="190392507" Received: from orsmga004.jf.intel.com ([10.7.209.38]) by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 08 Apr 2021 10:17:12 -0700 IronPort-SDR: OEPHAlnz6wZFmsZ+Lwfteb2GM9PtVZeBk6GMlpoDTx8dHNBQzcuWIwoATJKNht7f6IszF+t8ac FplHZyHSU/Kg== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.82,207,1613462400"; d="scan'208";a="530677913" Received: from orsmsx602.amr.corp.intel.com ([10.22.229.15]) by orsmga004.jf.intel.com with ESMTP; 08 Apr 2021 10:17:07 -0700 Received: from orsmsx611.amr.corp.intel.com (10.22.229.24) by ORSMSX602.amr.corp.intel.com (10.22.229.15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2106.2; Thu, 8 Apr 2021 10:17:03 -0700 Received: from orsmsx605.amr.corp.intel.com (10.22.229.18) by ORSMSX611.amr.corp.intel.com (10.22.229.24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2106.2; Thu, 8 Apr 2021 10:17:03 -0700 Received: from orsedg603.ED.cps.intel.com (10.7.248.4) by orsmsx605.amr.corp.intel.com (10.22.229.18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2106.2 via Frontend Transport; Thu, 8 Apr 2021 10:17:03 -0700 Received: from NAM12-MW2-obe.outbound.protection.outlook.com (104.47.66.46) by edgegateway.intel.com (134.134.137.100) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2106.2; Thu, 8 Apr 2021 10:17:03 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=I02UwP1cWo5lMLC2cRov8EdEOFrSUOZ9X+AYS/f2F6ZO3EJRn1oTuxLaCkVXa1AevnVyGX7WraYfNMk3k5on7mutsqpQrbDARxRMWkcXuSFHWpWdinILH3FTlnES2QTAzeUaKfF4EF9sjVoLJSCsgDyzZvRnZkOqcBKhxu83MFVlNy2kkcwgvE9c2ijsJIzf2rhuYRshCeZpTPEJxKKD0WwQBeTMf9RTOdd/BphW/6suOkuVQKcL+YI/w6WuNyoZylrVDPPfxUw/0JevTdYjQq++kDcwmDhbfuPnSVbhLHO1nDJDXp694+wLj38Ab2k92+rDfMFw/vIXqZSouY/j1Q== 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=kabL1CHyDxXvf8A59qetcN+jwPqbw3w2pTKKb3iacg0=; b=JR/iif7jpE2e0MuAWJ4W3w55SPe8U7t50wsPANaUAKUeelUCbsyioJ9+anp2XTlunc9tBxy03SKrBAJbelckCqTnK3dbc5AvZ9FR5M7G33Wt3oo64cu/TKwhxzfGAnmpdeWYMHxl1Lgu1qIYmA5lHu3I8x0m0W+F9+T8Kv/qxgdgbR2cbjWd2/4K30ob5qXaTrs61DFIQyBtpsXPGZWcAS3hnB3a5cGrUC8GhXIQuym5OiF2x8IWiDvcBlr2LsHYCn4d0E4XkQf7zwUyGtGmmyh10OdsOdtBRFMUpU/2N45M5ZHXd0ETc+ZajLXJYNz68mQOOV26kbG7heUpBzIltw== 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=kabL1CHyDxXvf8A59qetcN+jwPqbw3w2pTKKb3iacg0=; b=GEJawtiGo80DIbxc8xi3fGEPF2Gi0Z8sqiUNUUyn/uflobi/lXR9Htdffmuy0gFjs3n8nrfQuqOqyYi1e7+vRRWPl0LT21ItszRgOt0nUaOpWVUkycakLYzu8Zp1ouJ7i503149CHcsgxpN++ulIivi6+PhFcl0+ZC1PwvUms/c= Received: from MW3PR11MB4747.namprd11.prod.outlook.com (2603:10b6:303:2f::11) by MWHPR11MB2015.namprd11.prod.outlook.com (2603:10b6:300:28::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4020.20; Thu, 8 Apr 2021 17:17:02 +0000 Received: from MW3PR11MB4747.namprd11.prod.outlook.com ([fe80::9479:8edc:7d14:fdee]) by MW3PR11MB4747.namprd11.prod.outlook.com ([fe80::9479:8edc:7d14:fdee%3]) with mapi id 15.20.4020.020; Thu, 8 Apr 2021 17:17:02 +0000 From: "Oram, Isaac W" To: "Chiu, Chasel" , "Desimone, Nathaniel L" , "devel@edk2.groups.io" CC: Liming Gao , "Dong, Eric" , Michael Kubacki 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+Ky3HxzKmxT0Ee4CYpc0kM7NKqqKMIAgAC1ToA= Date: Thu, 8 Apr 2021 17:17:01 +0000 Message-ID: References: <20210407191708.8479-1-nathaniel.l.desimone@intel.com> In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-version: 11.5.1.3 dlp-reaction: no-action 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: [73.67.210.78] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: c1ebb929-a52c-4418-e74f-08d8fab21ffe x-ms-traffictypediagnostic: MWHPR11MB2015: 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: t831hWC9VsHvuKigNXUq0h/N4pTUFdyzw4IOf9uyc9es49buQ1w7amuDhz0XAYdBlrlA0z22G5b8NuZur30EMRtXY5HpgXyViQP9n589c+KeSDI6ECkvJ5zsedVF86kE7tztXbV/ZBDzjwWKtOvpujoXAuVzZkvg3uyXiH3cSNOCHn5TRwlk3PIW5+bu3kSP+zXP8taiiLsygC3tVjYmLCVW4cN1Vtd+duWqes1bCyierrA4SoMvTN9Y7yHod+1ZP3Pc247Mbl+iZF7JZ8fkzWlO98Ejg3gB+RH6ABxMwXxsMEgNzoQD/oYk7YbPYTeu5BSn0irYItwVtzYHFKQCZySSZaUjcofM2g6mObsYsyCO3zlAbF5wbprKfpffwLYa5tG3rUJSWGicpmrleDMn8rEP4QVnyIJznNJjv3ATVNAUNObE9CnKoumPLOZDwmic3f6vRXvYP61qSQpDE1B3TpR/oxzLnPSN77+1SW8JkyeHwciRTI8mkGxnkSdALJ+FPESsxDfPu1JYSBkGNCq49KU8Amu4HM0mBQKC+Ul1683p24HNYRCoKHRTGGOUoTotxzkClT0ZPiFKRuSSDxEJq4pdMM5QxkgloEgnySiIm6DKBW9lggC0hyGApxnaxddhnMxqbKl6XVtumo9fK6inFcI5/eDzmpT3sVMHTYZeJFM= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:MW3PR11MB4747.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(396003)(376002)(346002)(136003)(366004)(39860400002)(26005)(186003)(76116006)(83380400001)(66946007)(316002)(8676002)(55016002)(9686003)(8936002)(2906002)(4326008)(33656002)(38100700001)(478600001)(86362001)(71200400001)(5660300002)(7696005)(52536014)(66556008)(66446008)(66476007)(64756008)(53546011)(6506007)(54906003)(110136005);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata: =?us-ascii?Q?1bmtNVwWCzONxAal5vC3so9Vooi1UN95JSiUdACrNqAXSuQv50zKfDzrirK9?= =?us-ascii?Q?ryudWhtix+MPsZMf0T73pr/AnHdlzrAGW2sSxWiXQBpNToCguYw0genXv1/U?= =?us-ascii?Q?5w6rZmWoQJluGtuTjd3saz24L8kBeQqSUMCQSkFeKl/lgLe+d+mSte0JIPNu?= =?us-ascii?Q?260SDALzb+f2Z4mWfghEEd9S4wTDnUpMrwectLVW8Dyn378jNF8+yucg2Wtg?= =?us-ascii?Q?Srz6UdE8+OD1DOv1/CP/ONpt1P4sp5qtpck7yFkJeAbVWhim02VBUMDfR/4j?= =?us-ascii?Q?ooJFzdIoWFdWETxrS2zBn3+jj9b0hNyIDJc62col4oOWv9MwQxSrSPcodoa4?= =?us-ascii?Q?lh2GLSBos0XggLXGMQEACj2iVae6WhD7f5gECYn+eiWLsSPlGwkjOycguTPp?= =?us-ascii?Q?SPe3ymx7/9IVp6lYx+Xt/VOY/Wn6WK2XUKDoraNxhPjI6ghDcZMFA5/brnMB?= =?us-ascii?Q?SuBvCtWNn3bfYh+Xct+5+G3XBeD/IwRncth4eH7E4i2zl39O37ZEUGFzg57O?= =?us-ascii?Q?UVgG2/LaxYZiaeKde7GJDtZEgnq7mWM2cRsX56a0DgwgzrpOx4ksicxeHrpT?= =?us-ascii?Q?JOXD1bOgMTImD9Mf2lJCKIvQyi8W0uTLcpsAkCqS/VOdHuwuYy1H1vA9ce7E?= =?us-ascii?Q?TWSquzhnWfQDVxaoFNwnDs/99G4fJywHi1zWfT0lJxmVXWdG9fuVjZix/QRp?= =?us-ascii?Q?KIZIrPfOkj4bX1srC+1lUy8ejtXPQdFMxYVhSAID0I7vNfJws/hYjOqyrVro?= =?us-ascii?Q?aIFhLYG8a9fKhF5vbdu37u0QX/LSA1GGVq6Tvn7c7LihyY26NLGCxZgCHs7J?= =?us-ascii?Q?ZgTyo5G+g/xjQsKE7UTBkl8B7xsxmG3fCgQZEMp3PruqwOcBwn8EEKoPcZyi?= =?us-ascii?Q?qjgBbwEISwKJvTXP+szc6fmiou9WTiG6C9f8ExbUUko+Jt3lQ5DhgTKdv/tm?= =?us-ascii?Q?TMdJZhCRUuQYXI88lwRA4eqU0o3uBFDPuF2ImGRdf7DMyLRBhAgDKJ121vkq?= =?us-ascii?Q?ks0ZkkHqSNqGF2CjwzscFGod18j6qdzUg+3ZNRtYnECXK/hnYZJBadrJlfP5?= =?us-ascii?Q?hxU4HVmEN+kYLhS8vH+BWVjEr6Gy4FEZicOzmaZ3MokPV6/OLhqsEeFBxISO?= =?us-ascii?Q?NnytvkwVbVOJLZP7bQ5OgNkacb8hHswTy6u3OX+zQyI88okCDTSk02aQMBo+?= =?us-ascii?Q?JoBbnZGvp0vbcwl0dGjJDBA2XS6f0T+w3CQfHsIxT0OBiqrn75TJ0SJajsWS?= =?us-ascii?Q?FkLJYQAP1kbvPh2/7nc8HRxtxvkwWpBQXnyBTZOYPR7SC3kTweZ0Dyccr7WD?= =?us-ascii?Q?6dZsH1dhDKjcoZaunmv30mk6?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: MW3PR11MB4747.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: c1ebb929-a52c-4418-e74f-08d8fab21ffe X-MS-Exchange-CrossTenant-originalarrivaltime: 08 Apr 2021 17:17:02.0279 (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: 0c27H5L+IRsJGrvXQTPOQLiVHXTD9M7ZBTK5oKo5zgGyKb1p1ervKtBAtX0L+yR1Aulpl2jhwgxwPDyqq3Jtzg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR11MB2015 Return-Path: isaac.w.oram@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Series Reviewed-by: Isaac Oram -----Original Message----- From: Chiu, Chasel =20 Sent: Wednesday, April 7, 2021 11:28 PM To: Desimone, Nathaniel L ; devel@edk2.grou= ps.io Cc: Liming Gao ; Dong, Eric = ; Michael Kubacki ; Oram, Isaac W Subject: RE: [edk2-platforms] [PATCH v5 0/4] Add Large Variable Libraries 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=20 > ; Dong, Eric ; Michael=20 > Kubacki ; Oram, Isaac W=20 > > 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=20 > be stored using the UEFI Variable Services. At present, most UEFI=20 > Variable Services implementations have a maximum variable size of=20 > <=3D64KB. The exact value varies depending on platform. >=20 > These libaries enable a data set to use as much space as needed, up to=20 > the 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=20 > instances of VariableReadLib for PEI, DXE, and SMM. > For VariableWriteLib, I have provided implementation instances for DXE=20 > and SMM. This enables code that accesses UEFI variables to be written=20 > in a matter than is phase agnostic, so the same code can be used in=20 > PEI, DXE, or SMM without modification. >=20 > The second part involves another two new LibaryClasses: > LargeVariableReadLib and LargeVariableWriteLib. Only one BASE=20 > implementation is needed for both of these as the phase dependent code=20 > was seperated out in the first piece. These libraries provide logic to=20 > calculate the maximum size of an individual UEFI variable and split=20 > the data into as many smaller pieces as needed to store the entire data s= et in the UEFI Variable 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=20 > 100644=20 > 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/BaseLargeVa > riabl > eReadLib.inf > create mode 100644 > Platform/Intel/MinPlatformPkg/Library/BaseLargeVariableLib/BaseLargeVa > riabl > eWriteLib.inf > create mode 100644 > Platform/Intel/MinPlatformPkg/Library/BaseLargeVariableLib/LargeVariab > leCo > mmon.h > create mode 100644 > Platform/Intel/MinPlatformPkg/Library/BaseLargeVariableLib/LargeVariab > leRea > dLib.c > create mode 100644 > Platform/Intel/MinPlatformPkg/Library/BaseLargeVariableLib/LargeVariab > leWri > teLib.c > create mode 100644 > Platform/Intel/MinPlatformPkg/Library/DxeRuntimeVariableReadLib/DxeRun > tim > eVariableReadLib.c > create mode 100644 > Platform/Intel/MinPlatformPkg/Library/DxeRuntimeVariableReadLib/DxeRun > tim > eVariableReadLib.inf > create mode 100644 > Platform/Intel/MinPlatformPkg/Library/DxeRuntimeVariableWriteLib/DxeRu > nti > meVariableWriteLib.c > create mode 100644 > Platform/Intel/MinPlatformPkg/Library/DxeRuntimeVariableWriteLib/DxeRu > nti > 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/SmmVariableRe > ad > Common.c > create mode 100644 > Platform/Intel/MinPlatformPkg/Library/SmmVariableReadLib/StandaloneMmV > a > riableReadLib.inf > create mode 100644 > Platform/Intel/MinPlatformPkg/Library/SmmVariableReadLib/StandaloneMmV > a > riableReadLibConstructor.c > create mode 100644 > Platform/Intel/MinPlatformPkg/Library/SmmVariableReadLib/TraditionalMm > Var > iableReadLib.inf > create mode 100644 > Platform/Intel/MinPlatformPkg/Library/SmmVariableReadLib/TraditionalMm > Var > iableReadLibConstructor.c > create mode 100644 > Platform/Intel/MinPlatformPkg/Library/SmmVariableWriteLib/SmmVariableW > rit > eCommon.c > create mode 100644 > Platform/Intel/MinPlatformPkg/Library/SmmVariableWriteLib/StandaloneMm > Va > riableWriteLib.inf > create mode 100644 > Platform/Intel/MinPlatformPkg/Library/SmmVariableWriteLib/StandaloneMm > Va > riableWriteLibConstructor.c > create mode 100644 > Platform/Intel/MinPlatformPkg/Library/SmmVariableWriteLib/TraditionalM > mVa > riableWriteLib.inf > create mode 100644 > Platform/Intel/MinPlatformPkg/Library/SmmVariableWriteLib/TraditionalM > mVa > riableWriteLibConstructor.c >=20 > -- > 2.27.0.windows.1