From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) by mx.groups.io with SMTP id smtpd.web12.12448.1617822975938893834 for ; Wed, 07 Apr 2021 12:16:18 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@intel.onmicrosoft.com header.s=selector2-intel-onmicrosoft-com header.b=v9v86mbF; spf=pass (domain: intel.com, ip: 134.134.136.31, mailfrom: nathaniel.l.desimone@intel.com) IronPort-SDR: XlC6YL3d4QD/QQ2914sXPab+vozFeFQC/i5kFQWWrqdEcD4Q7Sawi6En73qb7R2hgD26fpRpAT +ZBJiolVMiLg== X-IronPort-AV: E=McAfee;i="6000,8403,9947"; a="254719681" X-IronPort-AV: E=Sophos;i="5.82,203,1613462400"; d="scan'208";a="254719681" Received: from orsmga003.jf.intel.com ([10.7.209.27]) by orsmga104.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 07 Apr 2021 12:16:13 -0700 IronPort-SDR: eAtGJHRBvg2iaWKIQm9zSjrIlmpLh5haazDN251e+6xc7lochqLgq86Ur49rkjubMxP+sBDXQL sFaahuCTDBtg== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.82,203,1613462400"; d="scan'208";a="379940205" Received: from orsmsx606.amr.corp.intel.com ([10.22.229.19]) by orsmga003.jf.intel.com with ESMTP; 07 Apr 2021 12:16:13 -0700 Received: from orsmsx607.amr.corp.intel.com (10.22.229.20) by ORSMSX606.amr.corp.intel.com (10.22.229.19) 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 12:16:13 -0700 Received: from ORSEDG601.ED.cps.intel.com (10.7.248.6) by orsmsx607.amr.corp.intel.com (10.22.229.20) 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 12:16:13 -0700 Received: from NAM12-MW2-obe.outbound.protection.outlook.com (104.47.66.48) 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 12:15:39 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=oS2/WHPvI/e/NYnQ7AwwE9b47tkX4YxTeqLPsdT38u0Gb9mia/4/4hTbSOC2YlSikOnV1K8klSpkMPdH6oaaqA20xqzroA/3ZE5Q2kFb/unECqeHpVzur+U/6PdOzT9X1VUMaJ27Lar5UpfM/J2KkQNh835Tgq7eiefXZUEZrOzdkleWTz4QhptIhV1ZeLpzTN/DXVGTlQ9fpEGkc8BnlxQOae8ube9SUqzb1xT0dE/F/gRirM010hSILOEPuNHnnjihhIpeTzu3fAa0ATUqGioYzbSo17XfXUbB9lSwpUnkdgsqgMu9SuJXS+7PbUBUbNGAugRS39NVT/Jv/vYEtA== 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=vLiOJGidK4glCnUAn/pzMwrujgPNgm2xUFLtimtq+D8=; b=jPYcflBAdzufl6vlz2wHIvS5SpTqquVKF3xME3G9Hws9lzpnT/LhqLAttHG5yg096k/7RBZhQhVep196MTjGgouiqY2I3WBnl5PbT4m4qHyHQ+gMpWcCNYT4V+9HvnaZLIXPw6M+ufvOr67Ml9MT25y3/5QSuc1vn/YecjXbVIhjXzd6ZgrDkJeMtA5wBeTS4lJpuuH87WWB7jx6SlHvv5FngBtlrv4yQUKUWRSNeXfuPxXU5V86Lno2UrhVV/gL7CUzt5VRuxLsolG9qWUK38p3lP/4gPg8Bb1nbWmt1jBrU0tOmmoWPaZaZ8NobvyzM45nLIEuJj1lLewGgTRqxQ== 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=vLiOJGidK4glCnUAn/pzMwrujgPNgm2xUFLtimtq+D8=; b=v9v86mbFR6yOLsBk3d37opez74z39htaySXCwBhZ+VK8Wn/Xdv9eYPkwOxyag16pKIGrZTB4JiHaXdEDCDovoRtxU4ft+l/cejwKaeU0dX3ZG/4xKrP/t/hhdL3TFZg+nODWsRPSWQn5QdW3FAaWUl856k/bDKb3y/SWJqjWy34= Received: from MWHPR1101MB2160.namprd11.prod.outlook.com (2603:10b6:301:5b::12) by CO1PR11MB5188.namprd11.prod.outlook.com (2603:10b6:303:95::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3999.27; Wed, 7 Apr 2021 19:15:38 +0000 Received: from MWHPR1101MB2160.namprd11.prod.outlook.com ([fe80::6540:bca7:645a:6788]) by MWHPR1101MB2160.namprd11.prod.outlook.com ([fe80::6540:bca7:645a:6788%5]) with mapi id 15.20.3999.033; Wed, 7 Apr 2021 19:15:38 +0000 From: "Nate DeSimone" To: "Chiu, Chasel" , "devel@edk2.groups.io" CC: Liming Gao , "Dong, Eric" , Michael Kubacki , "Oram, Isaac W" Subject: Re: [edk2-platforms] [PATCH v4 0/4] Add Large Variable Libraries Thread-Topic: [edk2-platforms] [PATCH v4 0/4] Add Large Variable Libraries Thread-Index: AQHXK1sMKnQ8bjy28E6d5GH1muj8kaqofJbggADxRgA= Date: Wed, 7 Apr 2021 19:15:38 +0000 Message-ID: References: <20210407030426.8075-1-nathaniel.l.desimone@intel.com> In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-reaction: no-action dlp-version: 11.5.1.3 dlp-product: dlpe-windows 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: [50.53.190.176] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 763c16af-f6f0-4930-1674-08d8f9f98761 x-ms-traffictypediagnostic: CO1PR11MB5188: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:9508; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: 3vooDJoZbpG/uqznuWyQZGpL53IWaanNcLmyNw2K93MMRo98BWmxS5EXgYYePvI89MeshDfo+1a3VKT7V+yKbtJW1bsSP4z2Wa/2iIZS2PnPXlfWbJSGoCz7XcHdYbNNSeHGxua2OV+E3fJv13I3Xj1OT9h6y0oHeQBugGOtb5RKmCFvHyV8uWmi6IVdGvXCrOkQDJXfgcckiZRx3lP5ZuDQA7dt0OrAmrfLK9i3Cd3loGSk0iu/GU1fiW5ZF04dHmTPeO1c9R7H/QrwIdB2GtMNNtr2a5ytWFGyRvT2D9pYA34eNPPWBBRtxHadVfJO+ncyGZuVh2t7XymvXnLVNs+8GFM9CZA5JeCQisb+y9LwQu81MK3laWhKxXf892vlhPBzNLzMoQgrRuaUeDmQIBTD7VczDZ6jxXQi78v/l1hdCVKFXc3FlK0e0TvBiak+VNhRRWqaYsYjDqKl8JnQWITGmmO6OgU4KqLuejeJwSJb8hP+GnQnGdooWcPJfEBnFzu0PoPIdiVVNbdO6/enM6hI0O3/p2HE6iy4GnZzlajay31izyHwVWKBDYf8ab+rWYMpqpbrkDadqisNw7w5q8FUNv2Q6VsjJ96OilZ5idBZoImLVGNuR/ZEpW4zP1hdWLmrEF/RRThpPNDoEPSBkzWnOPkMJ0rUHW+2po+YeF0= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:MWHPR1101MB2160.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(346002)(376002)(136003)(39860400002)(366004)(396003)(71200400001)(38100700001)(9686003)(55016002)(53546011)(76116006)(8676002)(186003)(107886003)(86362001)(8936002)(110136005)(52536014)(6506007)(2906002)(316002)(7696005)(478600001)(66446008)(64756008)(66556008)(83380400001)(33656002)(66476007)(5660300002)(26005)(66946007)(4326008)(54906003);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata: =?us-ascii?Q?ORJwXhKYxjdfTYJbFlQ7YYi5x8BOIxD9efj40OQR1hQjLzyNrxR3ReEOC+BO?= =?us-ascii?Q?zoi6ll23S2GdijUMD0iGqpFnUZ6Kq+xsWxO8iY9nNZuFaKfMACVF9BV6AIey?= =?us-ascii?Q?1VQdTH1v0reMk/a0QrtlUJk87er4SL0Ho/nLgp67W+K9FGBwGXlr8ZXf+zFY?= =?us-ascii?Q?nHrZL/G+s2Kd0U2DUxraKiNUg8953XB5doOZUyinIDu8L/6hz4cUoXglHpDY?= =?us-ascii?Q?mEVsfFrHrUVb7Bhu5Vv5jPmdc2WlrZgcRQgSqnZlhu/1xNxEIIVFE36PJ92O?= =?us-ascii?Q?Xs3N7MLLgCsQ5DKe61EhDNMBUtwjnxU26IuEE8nHFINH6NAICjxQq6IubBYq?= =?us-ascii?Q?6eLQGCm94I42tOtNW0FzmBQvimK2HF0ElSE2Bx45Rvp6SWnCKSJIkB2vQpME?= =?us-ascii?Q?z8VubKoy5DaAwSshqEw775OErwPUaiFUbwjJvBq8xtZPR2XJYFHcbGF1fq1Q?= =?us-ascii?Q?DDYQ5b8e6V4zYTJlZeeacPGuJ/6nzCt3FF/crAqNX5Dv2tG0J08bkZcbQkKv?= =?us-ascii?Q?ruHU8HJldz4sXDV9AXcsf+eR8UgA57dJ1ZyctQKNwNeIdEZfqHDxFSqw2lXy?= =?us-ascii?Q?+7HFR+OLC/n/yo2zsTmnNpmZMdb+s8q2iW/zqZBmo4To43BNoRDk2kbJWRsR?= =?us-ascii?Q?/BNYGGrhk/0oYAY0x9wHqLPKK42waprK+buFPsi5tPWJIQ53hCt2oWvBQrKl?= =?us-ascii?Q?/lVr8ULxrvBsILxQVAY7J3FBjr+N9QNJU4z2SxL467LsDB08seOeiyEIAJs9?= =?us-ascii?Q?cGYxiGfAPCTIXMSazEazveoqK3kZUeH7fsTDouHiZMMSNlxbN9D/z/vf7z7x?= =?us-ascii?Q?hoUcatnpePqJm6g+BgkFuZ4uZ4noJJyMfxeFVKKrk2LkmW7SYTkAqcitdLkp?= =?us-ascii?Q?qDxppM0tLucVumdIEGajGoDBrSmyM6etC/KbMTK7IurixwK0GggzNMhHMZs6?= =?us-ascii?Q?gw/QxQOvecfMYIhkpyWzQCn/oZNjs20KNuLuVYqACiINaPGcChV1XZCCVyui?= =?us-ascii?Q?ZLkEyXnDo/VzPlqGkM7YmRh3h/W9apBTCPqZ53eD48MVrv6dzRLSPD/zkO5X?= =?us-ascii?Q?dKkZI47XFnwJUx2fPe12cGe0g5oktiSaylw4zZJsz5clshMVtUYxH/lG8OIf?= =?us-ascii?Q?e5QNvmHZuAz+cGYeOZu/FAmL5LFwLwxEfoszbI7uzqujFZdkoieLdSfbXHf3?= =?us-ascii?Q?JYuzl5pB/I+GeP6wN4YGmpuOPzBY59JPB0maGUVc4U69TrAu1MJxJic32R+V?= =?us-ascii?Q?qJUR78sxo+fykvrkzIgTKdGFjA32fg1i37h4dZsrVbIszpBjk6pbNl9pd5Mq?= =?us-ascii?Q?MbKMp0IEwg1725D9qnx7uIOq?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: MWHPR1101MB2160.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 763c16af-f6f0-4930-1674-08d8f9f98761 X-MS-Exchange-CrossTenant-originalarrivaltime: 07 Apr 2021 19:15:38.5045 (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: pp/eQ6QpAN+1MIdPapf8Y19v4HYr7JGwrcnLkM++LYK/XSf39Uza4GK1NQDvO5Lc4qFlqpeHjhi3zPQQoqDAeHUrqRxp+tpWcDdtEI87ZAs= X-MS-Exchange-Transport-CrossTenantHeadersStamped: CO1PR11MB5188 Return-Path: nathaniel.l.desimone@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Hi Chasel, Good catch! I'll added the new LibraryClasses to MinPlatformPkg.dec in patc= h series V5. Thanks, Nate -----Original Message----- From: Chiu, Chasel =20 Sent: Tuesday, April 6, 2021 10:01 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 v4 0/4] Add Large Variable Libraries Change looks good to me, just one comment, would you also add new library c= lass into MinPlatformPkg.dec file for reference? Thanks, Chasel > -----Original Message----- > From: Desimone, Nathaniel L > Sent: Wednesday, April 7, 2021 11:04 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 v4 0/4] Add Large Variable Libraries >=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.dsc | 4 +- > 29 files changed, 2506 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