From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail05.groups.io (mail05.groups.io [45.79.224.7]) by spool.mail.gandi.net (Postfix) with ESMTPS id 33DE9AC10A8 for ; Fri, 17 May 2024 12:30:32 +0000 (UTC) DKIM-Signature: a=rsa-sha256; bh=WaUaGyxWdccxA9+dHJbGytfsgWnlB4qV4IaFmP13zMk=; c=relaxed/simple; d=groups.io; h=From:To:CC:Subject:Thread-Topic:Thread-Index:Date:Message-ID:References:In-Reply-To:Accept-Language:msip_labels:MIME-Version:Precedence:List-Subscribe:List-Help:Sender:List-Id:Mailing-List:Delivered-To:Resent-Date:Resent-From:Reply-To:List-Unsubscribe-Post:List-Unsubscribe:Content-Language:Content-Type; s=20240206; t=1715949031; v=1; b=BmqZ/bKtoquI9VdbW5GC7S9pNKGfAFbYef0P7f++5HveD6kNyRNQ6N9oqaonNkg/LHykkRUN /UqXfZkRNK/LFb7+cNVBa6TidZfMp4Wo5kjmTOB3e/kxStw1ZNh+mB0wj0ThQMLQib4f9paHgYB kBYnIgDWvk2iWDIL95nbAhK0OKhh4A1PilbvDbu76ltjSGXunp5+wB+e3+8wWwAyZP2o6TEIgVW B2CxtYzucxepdT2Y9HgF1c7w9m5D/kPZB/VAQq3bV9jBMQLoehzp43+dmygpGVzRHRilOwXe1G2 0Ro5ZAw37RCytdm8lnk/5pTc2iOKMYefpS23sKBsNyZxQ== X-Received: by 127.0.0.2 with SMTP id mgNwYY7687511xuxUlkQbIRo; Fri, 17 May 2024 05:30:31 -0700 X-Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.11]) by mx.groups.io with SMTP id smtpd.web10.38799.1715949030183417630 for ; Fri, 17 May 2024 05:30:30 -0700 X-CSE-ConnectionGUID: JSBQCEEWQQC3ZzDY1Ej6vg== X-CSE-MsgGUID: +es+IJSjRFqdH7iTSOrvaQ== X-IronPort-AV: E=McAfee;i="6600,9927,11074"; a="22729096" X-IronPort-AV: E=Sophos;i="6.08,167,1712646000"; d="scan'208,217";a="22729096" X-Received: from orviesa009.jf.intel.com ([10.64.159.149]) by fmvoesa105.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 17 May 2024 05:30:30 -0700 X-CSE-ConnectionGUID: osTShn5kRjGwKAO8txZWsQ== X-CSE-MsgGUID: OiA3x0RaTgOyznURn98ekw== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.08,167,1712646000"; d="scan'208,217";a="31920532" X-Received: from fmsmsx603.amr.corp.intel.com ([10.18.126.83]) by orviesa009.jf.intel.com with ESMTP/TLS/AES256-GCM-SHA384; 17 May 2024 05:30:29 -0700 X-Received: from fmsmsx610.amr.corp.intel.com (10.18.126.90) by fmsmsx603.amr.corp.intel.com (10.18.126.83) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.39; Fri, 17 May 2024 05:30:29 -0700 X-Received: from fmsedg602.ED.cps.intel.com (10.1.192.136) by fmsmsx610.amr.corp.intel.com (10.18.126.90) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.39 via Frontend Transport; Fri, 17 May 2024 05:30:29 -0700 X-Received: from NAM12-MW2-obe.outbound.protection.outlook.com (104.47.66.41) by edgegateway.intel.com (192.55.55.71) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.35; Fri, 17 May 2024 05:30:28 -0700 X-Received: from MN6PR11MB8244.namprd11.prod.outlook.com (2603:10b6:208:470::14) by PH7PR11MB5957.namprd11.prod.outlook.com (2603:10b6:510:1e0::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7587.28; Fri, 17 May 2024 12:30:23 +0000 X-Received: from MN6PR11MB8244.namprd11.prod.outlook.com ([fe80::41a4:c775:32e6:76a8]) by MN6PR11MB8244.namprd11.prod.outlook.com ([fe80::41a4:c775:32e6:76a8%4]) with mapi id 15.20.7587.028; Fri, 17 May 2024 12:30:23 +0000 From: "Ni, Ray" To: "Tan, Dun" , "devel@edk2.groups.io" CC: Liming Gao , "Wu, Jiaxin" Subject: Re: [edk2-devel] [PATCH 9/9] MdeModulePkg:Add global variable mVariableRtCacheInfo Thread-Topic: [PATCH 9/9] MdeModulePkg:Add global variable mVariableRtCacheInfo Thread-Index: AQHaqD+zznpdgAE4qkuo4K+/0t0aOLGbWiqy Date: Fri, 17 May 2024 12:30:23 +0000 Message-ID: References: <20240517094917.513-1-dun.tan@intel.com> <20240517094917.513-10-dun.tan@intel.com> In-Reply-To: <20240517094917.513-10-dun.tan@intel.com> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: msip_labels: x-ms-publictraffictype: Email x-ms-traffictypediagnostic: MN6PR11MB8244:EE_|PH7PR11MB5957:EE_ x-ms-office365-filtering-correlation-id: 0d3bdffa-384b-49c0-8c66-08dc766d1fb0 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam-message-info: =?us-ascii?Q?W+yqkL3c+6JxBkLT38kAuBLNV3pUnO8QKTHiNle36qEKdHbrov7nTFbI/Xqq?= =?us-ascii?Q?YJLUinrlQYhJtJ3VPkZHRALkcNSvZ404FMyKjHONTfIojGrNOWJ37PG9pv2B?= =?us-ascii?Q?mZ9QKki3qtbY70IgRXrqZLvt9VNH2d1SNZCSVAUqniTpnqSsUrguOIbel6WG?= =?us-ascii?Q?Cxzr3Z9SPQ3212ozlQRM2HvKvsfqlv9Jiauic0/fbg2K2c7/J/nkrbnSgjNn?= =?us-ascii?Q?TKkM44koVhPoIyqeNN6HpRhH4r0d6/uZRJDbhq7bJyodMvyXpsMi37/EGqMY?= =?us-ascii?Q?4iewAEJuJDmctPi5ZDr/ZCHtCrxdkpSp4N7mhvqE9/MBcCf6/xbRp3ckjCwz?= =?us-ascii?Q?OakDtfsEpSAPnj1tHomiu8qIQTk9FusI4fBzIdQCjPwD2n+/W8lEJGirjpum?= =?us-ascii?Q?jvSh6oMGG9UDa9y5ZlxY9YvVo+GbcQeBJTlMPnHNysO1P7ydwL6JXY48v1Hx?= =?us-ascii?Q?SKd/MsCSCYmgoQ8UGOrMCM7mv3C4RFyPM1CxSDi9fHbuuqkAoZpPfnG/3Gca?= =?us-ascii?Q?6zS/+AvV6SjGVezh1met2H3BjNatFnRfwPnpB9ifdi6lPbxF3NhvRO08Kkok?= =?us-ascii?Q?pnqsjbwuo70KnkPTC1MeKw0aMs7i2LkFgSC7ZQABstTmblSdEYXGbOGkxqOD?= =?us-ascii?Q?GYZY54YMXPpEJCPfHThZwIC8m5qO/VrPbEBcsywviQ9g+toX4EqYbTQFLWSs?= =?us-ascii?Q?Sx+Sat3/XuJ6K/RioSo1DzBylzhO88054EdpQN7pxsr19F+P77PU++db1JBx?= =?us-ascii?Q?lSAXLPZ9tqrSdGn+Xn0rCF/dMPouf4WHxbU68l1PE3XsFXVMngBW+oIwHMCb?= =?us-ascii?Q?F78QXoDNle0+Zg04awNfO3v+mByytD4B95UiqwW1PgXVJjctXNe4sqwrlNXz?= =?us-ascii?Q?I4KlZ3tVMMbhrbeIqP3G+J1GDq5VinifyG8I+5QPyHfyVd2M4Oys+4ljoUAO?= =?us-ascii?Q?1w/tvHKZCKa3BkDf20CCBjlSb/G7OUbYd4v3IQ+T4YufQFMQs/aAm4jzXXlD?= =?us-ascii?Q?s2f3M2TmNTqmzHZgiPKC83FCvOBgKLryIm5LvDrxtPIByiZVSzyObwFwe5vS?= =?us-ascii?Q?gKe0DkrBXMjazqGZz21/05DTxtGDwaNFRqQjnC4hgIPoTwRICzOZm2Nr1h70?= =?us-ascii?Q?67W4eDhnW+HYp7G1Du0AZmNoBKhgtRIPlSzblVinR3qAF7V2NsKMKOaE42m4?= =?us-ascii?Q?EUWekEDzTvCZpAc7CjvfZpcp+HmJR9HS0J6xwmsOqKxmLmazb5k9WHgyFaR4?= =?us-ascii?Q?xP8OX/xj+zP94LxMrNGWNLOhJwPLCbTZUy++OF9lWKeOzGcWkEXP64w3Z3rJ?= =?us-ascii?Q?O1lebgsWNutV0/UKiouU/y/kriyQiLq9GicIb95M+W7kEg=3D=3D?= x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?TrfHBLkA8PF+M/KjxwMtM77gKMpEGCapqOvZEYxyNYUHErc71RFLyAMxAxfk?= =?us-ascii?Q?b7NbzPhT9CiNHWfZ1qjHh2JuSdwTuxJOEx40uBWabzs44TUhmHVc8hp5DtES?= =?us-ascii?Q?HQfzVbhcz1/qpnENjapGDtBo385xGup53wD1lfdnLRYXlMUQWyQem6NiAVtd?= =?us-ascii?Q?SaGj/46tofLXC9eLpWLQA6GiJOum5E9xS/7QOHbxYR3XAQDxZ8ObLp/f+wWc?= =?us-ascii?Q?2CgnNVnKYz1URtan31lS+NMm65e9Lunm6M6Ic08hBCTNROaTAajsAMQcMOSm?= =?us-ascii?Q?NUjpRQ6I61ld6M/SRRYlYMPeR/vvxEDGc9ojgAeCVOmfryMDJ52iWA80hRD4?= =?us-ascii?Q?OrPHHpEovv72W7XITl/HC4zd5/g20yP/+f8rFIS7nd0Ua94GFqqA1zEBmiQm?= =?us-ascii?Q?k+3mGFjI8gnG5CFnjhn9V5GMVnLSIDSauEmfwFOdCMx+4OO9bn11oZ3RvlT8?= =?us-ascii?Q?9Db638gOmmnlhDwbrGKN3Hu1j0gO1/92VdpiifZ05O/uhqwmfNKx7CXD1TXO?= =?us-ascii?Q?XHatFAiHJ1TfLus7HeW/H01opI+U7XUXFyNnFmx1xu3mOFCxvViz0JBRFayA?= =?us-ascii?Q?0owszktIEfNzqjbudG0v0S0w5Kh3ShrIHUjFAZcFa47gTusgRlAGX0C+Obog?= =?us-ascii?Q?mjXxdXFij2HaPIHBeJgAZ6EHlLnyNLFwiykfakVazLApOxehmQzmqQtw30wx?= =?us-ascii?Q?Q+eUxwvxfYIljKTrP48Ya0FXO9UZa77b0C8CcH1/zjkvgCKcexjRXcuKgyLF?= =?us-ascii?Q?nixrvl84xZcMmmKU4tBjzS58vRBHbh6Ay+56JtL+kSwBKXAHQPt4QOxbgIyK?= =?us-ascii?Q?c3eQkpFhl/ECIa9rSDrxypO8/pUrAB7N741qSgF9LAEpoocIVFwVlu6BD6TE?= =?us-ascii?Q?KTogpe/27xynH2yjW/X7cv6HSPEgXXVhjjke4gU2kGHwwwOWcLp81/KVA7IC?= =?us-ascii?Q?Lx5Eb2wvVbSA10mwlmo9IPO60rcNbRE+nyiAcDh8qMUIQM0j4+Bm4JPakFlR?= =?us-ascii?Q?MIjBUKiU2M5OwTPL2S9lQQXC/mr0u8XG4m3ljcE/++SK51aTq8j4aAiJ49cC?= =?us-ascii?Q?YDgJISJye8Xzu/nts4Hjh1T9ecVkqqlUt46BOSCaDWyjAhG/Xb6RGjAU8NKQ?= =?us-ascii?Q?eTZGg0wf/CoisNEYWIYMxrEOde7OS/kU+9FTDs5i6n8RDiRY4fBg8rbY5OuD?= =?us-ascii?Q?w7S4/pqXxO+UV9KxZMmhSCG4N60rZc2JGsZUhuQZBAe2qBxHuomFcjVCe4Lp?= =?us-ascii?Q?XyeP8AOw8kcAVDk1p9BDwLujYsImoh6gmqGnspUVALcq23xoX9nB29mwkI0w?= =?us-ascii?Q?RrDfMPLANaWMo+R4R29prQ5mVB7CCt1vEdcuIQa1djrFAHLKzvUhkD7PAXlR?= =?us-ascii?Q?MjCD3DLIYweynYBMxyoCFxGtAThLlPd78PbNQnNz9Ozj1h8JbCxJ6jXx++a3?= =?us-ascii?Q?l0D7Dfzihnz/Y7e+3rBAxlleMWzu1SdOo1f6j9PwL9yzTV4Isur6AFEzyFDe?= =?us-ascii?Q?CAAMk79zDKzBmdhwLolRIBUdQdjFsJSxrt0EttM64PvEuPqCsIQMMLQvnmxi?= =?us-ascii?Q?IR4TsPPDosV5Hu9bEaw=3D?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: MN6PR11MB8244.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 0d3bdffa-384b-49c0-8c66-08dc766d1fb0 X-MS-Exchange-CrossTenant-originalarrivaltime: 17 May 2024 12:30:23.4707 (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: uSIozwIv8SU1N1ehEftNvnlpfFYl7a5zFpbSEKpWbScs3+mPZgchtg4cUgXGj2yZB/fiS6z94AQ4kAqpdVFL6A== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR11MB5957 X-OriginatorOrg: intel.com Precedence: Bulk List-Subscribe: List-Help: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Resent-Date: Fri, 17 May 2024 05:30:30 -0700 Resent-From: ray.ni@intel.com Reply-To: devel@edk2.groups.io,ray.ni@intel.com List-Unsubscribe-Post: List-Unsubscribe=One-Click List-Unsubscribe: X-Gm-Message-State: vbW11yKQRNQsUsnALPF0hK2ox7686176AA= Content-Language: en-US Content-Type: multipart/alternative; boundary="_000_MN6PR11MB8244D66D14131FF9252D94178CEE2MN6PR11MB8244namp_" X-GND-Status: LEGIT Authentication-Results: spool.mail.gandi.net; dkim=pass header.d=groups.io header.s=20240206 header.b="BmqZ/bKt"; dmarc=fail reason="SPF not aligned (relaxed), DKIM not aligned (relaxed)" header.from=intel.com (policy=none); spf=pass (spool.mail.gandi.net: domain of bounce@groups.io designates 45.79.224.7 as permitted sender) smtp.mailfrom=bounce@groups.io --_000_MN6PR11MB8244D66D14131FF9252D94178CEE2MN6PR11MB8244namp_ Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable I didn't read through all changes. 2 comments: 1. Please do not remember to call ConvertPointer() for any pointers accessed a= t runtime. I think your patch contains 4 pointers in the mVariableRtCacheIn= fo structure. 2. Please do not call FreePages() to free a PEI-allocated runtime memory. It w= on't succeed as PEI and DXE memory services do not share one database. * The FreePages() call should be removed in earlier patch when you let the Va= riable driver consume the PEI-allocated memory. Thanks, Ray ________________________________ From: Tan, Dun Sent: Friday, May 17, 2024 17:49 To: devel@edk2.groups.io Cc: Ni, Ray ; Liming Gao ; Wu, = Jiaxin Subject: [PATCH 9/9] MdeModulePkg:Add global variable mVariableRtCacheInfo Add global variable mVariableRtCacheInfo to save the content in gEdkiiVariableRuntimeCacheInfoHobGuid. With this new global variable, 7 global variables can be removed. Signed-off-by: Dun Tan Cc: Ray Ni Cc: Liming Gao Cc: Jiaxin Wu --- MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmmRuntimeDxe.c | 97 ++= +++++++++++++++++++++++++++++++++++++++------------------------------------= -------------------- 1 file changed, 41 insertions(+), 56 deletions(-) diff --git a/MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmmRuntimeD= xe.c b/MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmmRuntimeDxe.c index 6efe5cee10..de39462d68 100644 --- a/MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmmRuntimeDxe.c +++ b/MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmmRuntimeDxe.c @@ -44,26 +44,20 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #include "PrivilegePolymorphic.h" #include "VariableParsing.h" -EFI_HANDLE mHandle =3D N= ULL; -EFI_SMM_VARIABLE_PROTOCOL *mSmmVariable =3D N= ULL; -EFI_EVENT mVirtualAddressChangeEvent =3D N= ULL; -EFI_MM_COMMUNICATION2_PROTOCOL *mMmCommunication2 =3D N= ULL; -UINT8 *mVariableBuffer =3D N= ULL; -UINT8 *mVariableBufferPhysical =3D N= ULL; -VARIABLE_INFO_ENTRY *mVariableInfo =3D N= ULL; -VARIABLE_STORE_HEADER *mVariableRuntimeHobCacheBuffer =3D N= ULL; -VARIABLE_STORE_HEADER *mVariableRuntimeNvCacheBuffer =3D N= ULL; -VARIABLE_STORE_HEADER *mVariableRuntimeVolatileCacheBuffer =3D N= ULL; +EFI_HANDLE mHandle =3D NULL; +EFI_SMM_VARIABLE_PROTOCOL *mSmmVariable =3D NULL; +EFI_EVENT mVirtualAddressChangeEvent =3D NULL; +EFI_MM_COMMUNICATION2_PROTOCOL *mMmCommunication2 =3D NULL; +UINT8 *mVariableBuffer =3D NULL; +UINT8 *mVariableBufferPhysical =3D NULL; +VARIABLE_INFO_ENTRY *mVariableInfo =3D NULL; UINTN mVariableBufferSize; -UINTN mVariableRuntimeHobCacheBufferSize; UINTN mVariableBufferPayloadSize; -BOOLEAN *mVariableRuntimeCachePendingUpdate; -BOOLEAN *mVariableRuntimeCacheReadLock; BOOLEAN mVariableAuthFormat; -BOOLEAN *mHobFlushComplete; EFI_LOCK mVariableServicesLock; EDKII_VARIABLE_LOCK_PROTOCOL mVariableLock; EDKII_VAR_CHECK_PROTOCOL mVarCheck; +VARIABLE_RUNTIME_CACHE_INFO mVariableRtCacheInfo; /** The logic to initialize the VariablePolicy engine is in its own file. @@ -500,21 +494,21 @@ CheckForRuntimeCacheSync ( VOID ) { - if (*mVariableRuntimeCachePendingUpdate) { + if (mVariableRtCacheInfo.CacheInfoFlag->PendingUpdate) { SyncRuntimeCache (); } - ASSERT (!(*mVariableRuntimeCachePendingUpdate)); + ASSERT (!(mVariableRtCacheInfo.CacheInfoFlag->PendingUpdate)); // // The HOB variable data may have finished being flushed in the runtime = cache sync update // - if ((*mHobFlushComplete) && (mVariableRuntimeHobCacheBuffer !=3D NULL)) = { + if ((mVariableRtCacheInfo.CacheInfoFlag->HobFlushComplete) && (mVariable= RtCacheInfo.RuntimeHobCacheBuffer !=3D 0)) { if (!EfiAtRuntime ()) { - FreePages (mVariableRuntimeHobCacheBuffer, EFI_SIZE_TO_PAGES (mVaria= bleRuntimeHobCacheBufferSize)); + FreePages ((VOID *)(UINTN)mVariableRtCacheInfo.RuntimeHobCacheBuffer= , mVariableRtCacheInfo.RuntimeHobCachePages); } - mVariableRuntimeHobCacheBuffer =3D NULL; + mVariableRtCacheInfo.RuntimeHobCacheBuffer =3D 0; } } @@ -565,20 +559,20 @@ FindVariableInRuntimeCache ( // a GetVariable () or GetNextVariable () call from being issued until a= prior call has returned. The runtime // cache read lock should always be free when entering this function. // - ASSERT (!(*mVariableRuntimeCacheReadLock)); + ASSERT (!(mVariableRtCacheInfo.CacheInfoFlag->ReadLock)); - *mVariableRuntimeCacheReadLock =3D TRUE; + mVariableRtCacheInfo.CacheInfoFlag->ReadLock =3D TRUE; CheckForRuntimeCacheSync (); - if (!(*mVariableRuntimeCachePendingUpdate)) { + if (!(mVariableRtCacheInfo.CacheInfoFlag->PendingUpdate)) { // // 0: Volatile, 1: HOB, 2: Non-Volatile. // The index and attributes mapping must be kept in this order as Find= Variable // makes use of this mapping to implement search algorithm. // - VariableStoreList[VariableStoreTypeVolatile] =3D mVariableRuntimeVolat= ileCacheBuffer; - VariableStoreList[VariableStoreTypeHob] =3D mVariableRuntimeHobCa= cheBuffer; - VariableStoreList[VariableStoreTypeNv] =3D mVariableRuntimeNvCac= heBuffer; + VariableStoreList[VariableStoreTypeVolatile] =3D (VARIABLE_STORE_HEADE= R *)(UINTN)mVariableRtCacheInfo.RuntimeVolatileCacheBuffer; + VariableStoreList[VariableStoreTypeHob] =3D (VARIABLE_STORE_HEADE= R *)(UINTN)mVariableRtCacheInfo.RuntimeHobCacheBuffer; + VariableStoreList[VariableStoreTypeNv] =3D (VARIABLE_STORE_HEADE= R *)(UINTN)mVariableRtCacheInfo.RuntimeNvCacheBuffer; for (StoreType =3D (VARIABLE_STORE_TYPE)0; StoreType < VariableStoreTy= peMax; StoreType++) { if (VariableStoreList[StoreType] =3D=3D NULL) { @@ -630,7 +624,7 @@ Done: } } - *mVariableRuntimeCacheReadLock =3D FALSE; + mVariableRtCacheInfo.CacheInfoFlag->ReadLock =3D FALSE; return Status; } @@ -853,20 +847,20 @@ GetNextVariableNameInRuntimeCache ( // a GetVariable () or GetNextVariable () call from being issued until a= prior call has returned. The runtime // cache read lock should always be free when entering this function. // - ASSERT (!(*mVariableRuntimeCacheReadLock)); + ASSERT (!(mVariableRtCacheInfo.CacheInfoFlag->ReadLock)); CheckForRuntimeCacheSync (); - *mVariableRuntimeCacheReadLock =3D TRUE; - if (!(*mVariableRuntimeCachePendingUpdate)) { + mVariableRtCacheInfo.CacheInfoFlag->ReadLock =3D TRUE; + if (!(mVariableRtCacheInfo.CacheInfoFlag->PendingUpdate)) { // // 0: Volatile, 1: HOB, 2: Non-Volatile. // The index and attributes mapping must be kept in this order as Find= Variable // makes use of this mapping to implement search algorithm. // - VariableStoreHeader[VariableStoreTypeVolatile] =3D mVariableRuntimeVol= atileCacheBuffer; - VariableStoreHeader[VariableStoreTypeHob] =3D mVariableRuntimeHob= CacheBuffer; - VariableStoreHeader[VariableStoreTypeNv] =3D mVariableRuntimeNvC= acheBuffer; + VariableStoreHeader[VariableStoreTypeVolatile] =3D (VARIABLE_STORE_HEA= DER *)(UINTN)mVariableRtCacheInfo.RuntimeVolatileCacheBuffer; + VariableStoreHeader[VariableStoreTypeHob] =3D (VARIABLE_STORE_HEA= DER *)(UINTN)mVariableRtCacheInfo.RuntimeHobCacheBuffer; + VariableStoreHeader[VariableStoreTypeNv] =3D (VARIABLE_STORE_HEA= DER *)(UINTN)mVariableRtCacheInfo.RuntimeNvCacheBuffer; Status =3D VariableServiceGetNextVariableInternal ( VariableName, @@ -890,7 +884,7 @@ GetNextVariableNameInRuntimeCache ( } } - *mVariableRuntimeCacheReadLock =3D FALSE; + mVariableRtCacheInfo.CacheInfoFlag->ReadLock =3D FALSE; return Status; } @@ -1345,9 +1339,9 @@ VariableAddressChangeEvent ( { EfiConvertPointer (0x0, (VOID **)&mVariableBuffer); EfiConvertPointer (0x0, (VOID **)&mMmCommunication2); - EfiConvertPointer (EFI_OPTIONAL_PTR, (VOID **)&mVariableRuntimeHobCacheB= uffer); - EfiConvertPointer (EFI_OPTIONAL_PTR, (VOID **)&mVariableRuntimeNvCacheBu= ffer); - EfiConvertPointer (EFI_OPTIONAL_PTR, (VOID **)&mVariableRuntimeVolatileC= acheBuffer); + EfiConvertPointer (EFI_OPTIONAL_PTR, (VOID **)&mVariableRtCacheInfo.Runt= imeHobCacheBuffer); + EfiConvertPointer (EFI_OPTIONAL_PTR, (VOID **)&mVariableRtCacheInfo.Runt= imeNvCacheBuffer); + EfiConvertPointer (EFI_OPTIONAL_PTR, (VOID **)&mVariableRtCacheInfo.Runt= imeVolatileCacheBuffer); } /** @@ -1576,17 +1570,10 @@ InitVariableCache ( (AllocatedVolatileCacheSize >=3D ExpectedVolatileCacheSize) ); - mVariableRuntimeHobCacheBuffer =3D (VARIABLE_STORE_HEADER *)(UINT= N)VariableRuntimeCacheHob->RuntimeHobCacheBuffer; - mVariableRuntimeNvCacheBuffer =3D (VARIABLE_STORE_HEADER *)(UINT= N)VariableRuntimeCacheHob->RuntimeNvCacheBuffer; - mVariableRuntimeVolatileCacheBuffer =3D (VARIABLE_STORE_HEADER *)(UINT= N)VariableRuntimeCacheHob->RuntimeVolatileCacheBuffer; - mVariableRuntimeCachePendingUpdate =3D &VariableRuntimeCacheHob->Cach= eInfoFlag->PendingUpdate; - mVariableRuntimeCacheReadLock =3D &VariableRuntimeCacheHob->Cach= eInfoFlag->ReadLock; - mHobFlushComplete =3D &VariableRuntimeCacheHob->Cach= eInfoFlag->HobFlushComplete; - mVariableRuntimeHobCacheBufferSize =3D AllocatedHobCacheSize; - - InitVariableStoreHeader (mVariableRuntimeHobCacheBuffer, AllocatedHobC= acheSize); - InitVariableStoreHeader (mVariableRuntimeNvCacheBuffer, AllocatedNvCac= heSize); - InitVariableStoreHeader (mVariableRuntimeVolatileCacheBuffer, Allocate= dVolatileCacheSize); + CopyMem (&mVariableRtCacheInfo, VariableRuntimeCacheHob, sizeof (VARIA= BLE_RUNTIME_CACHE_INFO)); + InitVariableStoreHeader ((VOID *)(UINTN)mVariableRtCacheInfo.RuntimeHo= bCacheBuffer, AllocatedHobCacheSize); + InitVariableStoreHeader ((VOID *)(UINTN)mVariableRtCacheInfo.RuntimeNv= CacheBuffer, AllocatedNvCacheSize); + InitVariableStoreHeader ((VOID *)(UINTN)mVariableRtCacheInfo.RuntimeVo= latileCacheBuffer, AllocatedVolatileCacheSize); } return Status; @@ -1637,12 +1624,12 @@ SendRuntimeVariableCacheContextToSmm ( SmmVariableFunctionHeader->Function =3D SMM_VARIABLE_FUNCTION_INIT_RUNTI= ME_VARIABLE_CACHE_CONTEXT; SmmRuntimeVarCacheContext =3D (SMM_VARIABLE_COMMUNICATE_RUNTIM= E_VARIABLE_CACHE_CONTEXT *)SmmVariableFunctionHeader->Data; - SmmRuntimeVarCacheContext->RuntimeHobCache =3D mVariableRuntimeHobC= acheBuffer; - SmmRuntimeVarCacheContext->RuntimeVolatileCache =3D mVariableRuntimeVola= tileCacheBuffer; - SmmRuntimeVarCacheContext->RuntimeNvCache =3D mVariableRuntimeNvCa= cheBuffer; - SmmRuntimeVarCacheContext->PendingUpdate =3D mVariableRuntimeCach= ePendingUpdate; - SmmRuntimeVarCacheContext->ReadLock =3D mVariableRuntimeCach= eReadLock; - SmmRuntimeVarCacheContext->HobFlushComplete =3D mHobFlushComplete; + SmmRuntimeVarCacheContext->RuntimeHobCache =3D (VARIABLE_STORE_HEAD= ER *)(UINTN)mVariableRtCacheInfo.RuntimeHobCacheBuffer; + SmmRuntimeVarCacheContext->RuntimeVolatileCache =3D (VARIABLE_STORE_HEAD= ER *)(UINTN)mVariableRtCacheInfo.RuntimeVolatileCacheBuffer; + SmmRuntimeVarCacheContext->RuntimeNvCache =3D (VARIABLE_STORE_HEAD= ER *)(UINTN)mVariableRtCacheInfo.RuntimeNvCacheBuffer; + SmmRuntimeVarCacheContext->PendingUpdate =3D &mVariableRtCacheInf= o.CacheInfoFlag->PendingUpdate; + SmmRuntimeVarCacheContext->ReadLock =3D &mVariableRtCacheInf= o.CacheInfoFlag->ReadLock; + SmmRuntimeVarCacheContext->HobFlushComplete =3D &mVariableRtCacheInf= o.CacheInfoFlag->HobFlushComplete; // // Send data to SMM. @@ -1712,9 +1699,7 @@ SmmVariableReady ( } if (EFI_ERROR (Status)) { - mVariableRuntimeHobCacheBuffer =3D NULL; - mVariableRuntimeNvCacheBuffer =3D NULL; - mVariableRuntimeVolatileCacheBuffer =3D NULL; + ZeroMem (&mVariableRtCacheInfo, sizeof (VARIABLE_RUNTIME_CACHE_INFO)= ); } ASSERT_EFI_ERROR (Status); -- 2.31.1.windows.1 -=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 (#119048): https://edk2.groups.io/g/devel/message/119048 Mute This Topic: https://groups.io/mt/106150807/7686176 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [rebecca@openfw.io] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- --_000_MN6PR11MB8244D66D14131FF9252D94178CEE2MN6PR11MB8244namp_ Content-Type: text/html; charset="us-ascii" Content-Transfer-Encoding: quoted-printable
I didn't read through all changes.
2 comments:
  1. Please do not remember to call ConvertPointer() for any pointers accessed a= t runtime. I think your patch contains 4 pointers in the mVariableRtCacheIn= fo structure.
  2. Please do not call FreePages() to free a PEI-allocated runtime memory. It w= on't succeed as PEI and DXE memory services do not share one database.
    1. The FreePages() call should be removed in earlier patch when you let the Va= riable driver consume the PEI-allocated memory.

Thanks,
Ray

From: Tan, Dun <dun.tan@= intel.com>
Sent: Friday, May 17, 2024 17:49
To: devel@edk2.groups.io <devel@edk2.groups.io>
Cc: Ni, Ray <ray.ni@intel.com>; Liming Gao <gaoliming@byoso= ft.com.cn>; Wu, Jiaxin <jiaxin.wu@intel.com>
Subject: [PATCH 9/9] MdeModulePkg:Add global variable mVariableRtCac= heInfo
 
Add global variable mVariableRtCacheInfo to save t= he
content in gEdkiiVariableRuntimeCacheInfoHobGuid. With
this new global variable, 7 global variables can be
removed.

Signed-off-by: Dun Tan <dun.tan@intel.com>
Cc: Ray Ni <ray.ni@intel.com>
Cc: Liming Gao <gaoliming@byosoft.com.cn>
Cc: Jiaxin Wu <jiaxin.wu@intel.com>
---
 MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmmRuntimeDxe.c | = 97 +++++++++++++++++++++++++++++++++++++++++-------------------------------= -------------------------
 1 file changed, 41 insertions(+), 56 deletions(-)

diff --git a/MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmmRuntimeD= xe.c b/MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmmRuntimeDxe.c index 6efe5cee10..de39462d68 100644
--- a/MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmmRuntimeDxe.c +++ b/MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmmRuntimeDxe.c @@ -44,26 +44,20 @@ SPDX-License-Identifier: BSD-2-Clause-Patent
 #include "PrivilegePolymorphic.h"
 #include "VariableParsing.h"
 
-EFI_HANDLE          &nbs= p;           mHandle = ;            &n= bsp;            = ;    =3D NULL;
-EFI_SMM_VARIABLE_PROTOCOL       *mSmmVariabl= e            &n= bsp;           =3D NULL;<= br> -EFI_EVENT           = ;            mVirtua= lAddressChangeEvent         &n= bsp; =3D NULL;
-EFI_MM_COMMUNICATION2_PROTOCOL  *mMmCommunication2   &= nbsp;           &nbs= p;   =3D NULL;
-UINT8           &nb= sp;            =    *mVariableBuffer       &nbs= p;             = =3D NULL;
-UINT8           &nb= sp;            =    *mVariableBufferPhysical      &n= bsp;      =3D NULL;
-VARIABLE_INFO_ENTRY         &= nbsp;   *mVariableInfo       &= nbsp;           &nbs= p;   =3D NULL;
-VARIABLE_STORE_HEADER         = ;  *mVariableRuntimeHobCacheBuffer      =3D N= ULL;
-VARIABLE_STORE_HEADER         = ;  *mVariableRuntimeNvCacheBuffer       = =3D NULL;
-VARIABLE_STORE_HEADER         = ;  *mVariableRuntimeVolatileCacheBuffer =3D NULL;
+EFI_HANDLE          &nbs= p;           mHandle = ;            &n= bsp;      =3D NULL;
+EFI_SMM_VARIABLE_PROTOCOL       *mSmmVariabl= e            &n= bsp; =3D NULL;
+EFI_EVENT           = ;            mVirtua= lAddressChangeEvent =3D NULL;
+EFI_MM_COMMUNICATION2_PROTOCOL  *mMmCommunication2   &= nbsp;     =3D NULL;
+UINT8           &nb= sp;            =    *mVariableBuffer       &nbs= p;   =3D NULL;
+UINT8           &nb= sp;            =    *mVariableBufferPhysical   =3D NULL;
+VARIABLE_INFO_ENTRY         &= nbsp;   *mVariableInfo       &= nbsp;     =3D NULL;
 UINTN          &nbs= p;            &= nbsp;   mVariableBufferSize;
-UINTN           &nb= sp;            =    mVariableRuntimeHobCacheBufferSize;
 UINTN          &nbs= p;            &= nbsp;   mVariableBufferPayloadSize;
-BOOLEAN           &= nbsp;           &nbs= p; *mVariableRuntimeCachePendingUpdate;
-BOOLEAN           &= nbsp;           &nbs= p; *mVariableRuntimeCacheReadLock;
 BOOLEAN          &n= bsp;            = ;  mVariableAuthFormat;
-BOOLEAN           &= nbsp;           &nbs= p; *mHobFlushComplete;
 EFI_LOCK          &= nbsp;           &nbs= p; mVariableServicesLock;
 EDKII_VARIABLE_LOCK_PROTOCOL    mVariableLock;
 EDKII_VAR_CHECK_PROTOCOL        mV= arCheck;
+VARIABLE_RUNTIME_CACHE_INFO     mVariableRtCacheInfo;<= br>  
 /**
   The logic to initialize the VariablePolicy engine is in its ow= n file.
@@ -500,21 +494,21 @@ CheckForRuntimeCacheSync (
   VOID
   )
 {
-  if (*mVariableRuntimeCachePendingUpdate) {
+  if (mVariableRtCacheInfo.CacheInfoFlag->PendingUpdate) {
     SyncRuntimeCache ();
   }
 
-  ASSERT (!(*mVariableRuntimeCachePendingUpdate));
+  ASSERT (!(mVariableRtCacheInfo.CacheInfoFlag->PendingUpdate));  
   //
   // The HOB variable data may have finished being flushed in th= e runtime cache sync update
   //
-  if ((*mHobFlushComplete) && (mVariableRuntimeHobCacheBuffer= !=3D NULL)) {
+  if ((mVariableRtCacheInfo.CacheInfoFlag->HobFlushComplete) &= & (mVariableRtCacheInfo.RuntimeHobCacheBuffer !=3D 0)) {
     if (!EfiAtRuntime ()) {
-      FreePages (mVariableRuntimeHobCacheBuffer, = EFI_SIZE_TO_PAGES (mVariableRuntimeHobCacheBufferSize));
+      FreePages ((VOID *)(UINTN)mVariableRtCacheI= nfo.RuntimeHobCacheBuffer, mVariableRtCacheInfo.RuntimeHobCachePages);
     }
 
-    mVariableRuntimeHobCacheBuffer =3D NULL;
+    mVariableRtCacheInfo.RuntimeHobCacheBuffer =3D 0;
   }
 }
 
@@ -565,20 +559,20 @@ FindVariableInRuntimeCache (
   // a GetVariable () or GetNextVariable () call from being issu= ed until a prior call has returned. The runtime
   // cache read lock should always be free when entering this fu= nction.
   //
-  ASSERT (!(*mVariableRuntimeCacheReadLock));
+  ASSERT (!(mVariableRtCacheInfo.CacheInfoFlag->ReadLock));
 
-  *mVariableRuntimeCacheReadLock =3D TRUE;
+  mVariableRtCacheInfo.CacheInfoFlag->ReadLock =3D TRUE;
   CheckForRuntimeCacheSync ();
 
-  if (!(*mVariableRuntimeCachePendingUpdate)) {
+  if (!(mVariableRtCacheInfo.CacheInfoFlag->PendingUpdate)) {
     //
     // 0: Volatile, 1: HOB, 2: Non-Volatile.
     // The index and attributes mapping must be kept i= n this order as FindVariable
     // makes use of this mapping to implement search a= lgorithm.
     //
-    VariableStoreList[VariableStoreTypeVolatile] =3D mVaria= bleRuntimeVolatileCacheBuffer;
-    VariableStoreList[VariableStoreTypeHob]  &nbs= p;   =3D mVariableRuntimeHobCacheBuffer;
-    VariableStoreList[VariableStoreTypeNv]   = ;    =3D mVariableRuntimeNvCacheBuffer;
+    VariableStoreList[VariableStoreTypeVolatile] =3D (VARIA= BLE_STORE_HEADER *)(UINTN)mVariableRtCacheInfo.RuntimeVolatileCacheBuffer;<= br> +    VariableStoreList[VariableStoreTypeHob]  &nbs= p;   =3D (VARIABLE_STORE_HEADER *)(UINTN)mVariableRtCacheInfo.Run= timeHobCacheBuffer;
+    VariableStoreList[VariableStoreTypeNv]   = ;    =3D (VARIABLE_STORE_HEADER *)(UINTN)mVariableRtCacheInf= o.RuntimeNvCacheBuffer;
 
     for (StoreType =3D (VARIABLE_STORE_TYPE)0; StoreTy= pe < VariableStoreTypeMax; StoreType++) {
       if (VariableStoreList[StoreType] =3D= =3D NULL) {
@@ -630,7 +624,7 @@ Done:
     }
   }
 
-  *mVariableRuntimeCacheReadLock =3D FALSE;
+  mVariableRtCacheInfo.CacheInfoFlag->ReadLock =3D FALSE;
 
   return Status;
 }
@@ -853,20 +847,20 @@ GetNextVariableNameInRuntimeCache (
   // a GetVariable () or GetNextVariable () call from being issu= ed until a prior call has returned. The runtime
   // cache read lock should always be free when entering this fu= nction.
   //
-  ASSERT (!(*mVariableRuntimeCacheReadLock));
+  ASSERT (!(mVariableRtCacheInfo.CacheInfoFlag->ReadLock));
 
   CheckForRuntimeCacheSync ();
 
-  *mVariableRuntimeCacheReadLock =3D TRUE;
-  if (!(*mVariableRuntimeCachePendingUpdate)) {
+  mVariableRtCacheInfo.CacheInfoFlag->ReadLock =3D TRUE;
+  if (!(mVariableRtCacheInfo.CacheInfoFlag->PendingUpdate)) {
     //
     // 0: Volatile, 1: HOB, 2: Non-Volatile.
     // The index and attributes mapping must be kept i= n this order as FindVariable
     // makes use of this mapping to implement search a= lgorithm.
     //
-    VariableStoreHeader[VariableStoreTypeVolatile] =3D mVar= iableRuntimeVolatileCacheBuffer;
-    VariableStoreHeader[VariableStoreTypeHob]  &n= bsp;   =3D mVariableRuntimeHobCacheBuffer;
-    VariableStoreHeader[VariableStoreTypeNv]  &nb= sp;    =3D mVariableRuntimeNvCacheBuffer;
+    VariableStoreHeader[VariableStoreTypeVolatile] =3D (VAR= IABLE_STORE_HEADER *)(UINTN)mVariableRtCacheInfo.RuntimeVolatileCacheBuffer= ;
+    VariableStoreHeader[VariableStoreTypeHob]  &n= bsp;   =3D (VARIABLE_STORE_HEADER *)(UINTN)mVariableRtCacheInfo.R= untimeHobCacheBuffer;
+    VariableStoreHeader[VariableStoreTypeNv]  &nb= sp;    =3D (VARIABLE_STORE_HEADER *)(UINTN)mVariableRtCacheI= nfo.RuntimeNvCacheBuffer;
 
     Status =3D  VariableServiceGetNextVariableInt= ernal (
            &nb= sp;    VariableName,
@@ -890,7 +884,7 @@ GetNextVariableNameInRuntimeCache (
     }
   }
 
-  *mVariableRuntimeCacheReadLock =3D FALSE;
+  mVariableRtCacheInfo.CacheInfoFlag->ReadLock =3D FALSE;
 
   return Status;
 }
@@ -1345,9 +1339,9 @@ VariableAddressChangeEvent (
 {
   EfiConvertPointer (0x0, (VOID **)&mVariableBuffer);
   EfiConvertPointer (0x0, (VOID **)&mMmCommunication2);
-  EfiConvertPointer (EFI_OPTIONAL_PTR, (VOID **)&mVariableRuntime= HobCacheBuffer);
-  EfiConvertPointer (EFI_OPTIONAL_PTR, (VOID **)&mVariableRuntime= NvCacheBuffer);
-  EfiConvertPointer (EFI_OPTIONAL_PTR, (VOID **)&mVariableRuntime= VolatileCacheBuffer);
+  EfiConvertPointer (EFI_OPTIONAL_PTR, (VOID **)&mVariableRtCache= Info.RuntimeHobCacheBuffer);
+  EfiConvertPointer (EFI_OPTIONAL_PTR, (VOID **)&mVariableRtCache= Info.RuntimeNvCacheBuffer);
+  EfiConvertPointer (EFI_OPTIONAL_PTR, (VOID **)&mVariableRtCache= Info.RuntimeVolatileCacheBuffer);
 }
 
 /**
@@ -1576,17 +1570,10 @@ InitVariableCache (
       (AllocatedVolatileCacheSize >=3D Ex= pectedVolatileCacheSize)
       );
 
-    mVariableRuntimeHobCacheBuffer    &= nbsp; =3D (VARIABLE_STORE_HEADER *)(UINTN)VariableRuntimeCacheHob->Runti= meHobCacheBuffer;
-    mVariableRuntimeNvCacheBuffer    &n= bsp;  =3D (VARIABLE_STORE_HEADER *)(UINTN)VariableRuntimeCacheHob->= RuntimeNvCacheBuffer;
-    mVariableRuntimeVolatileCacheBuffer =3D (VARIABLE_STORE= _HEADER *)(UINTN)VariableRuntimeCacheHob->RuntimeVolatileCacheBuffer; -    mVariableRuntimeCachePendingUpdate  =3D &Varia= bleRuntimeCacheHob->CacheInfoFlag->PendingUpdate;
-    mVariableRuntimeCacheReadLock    &n= bsp;  =3D &VariableRuntimeCacheHob->CacheInfoFlag->ReadLock;=
-    mHobFlushComplete      &n= bsp;            =3D = &VariableRuntimeCacheHob->CacheInfoFlag->HobFlushComplete;
-    mVariableRuntimeHobCacheBufferSize  =3D AllocatedH= obCacheSize;
-
-    InitVariableStoreHeader (mVariableRuntimeHobCacheBuffer= , AllocatedHobCacheSize);
-    InitVariableStoreHeader (mVariableRuntimeNvCacheBuffer,= AllocatedNvCacheSize);
-    InitVariableStoreHeader (mVariableRuntimeVolatileCacheB= uffer, AllocatedVolatileCacheSize);
+    CopyMem (&mVariableRtCacheInfo, VariableRuntimeCach= eHob, sizeof (VARIABLE_RUNTIME_CACHE_INFO));
+    InitVariableStoreHeader ((VOID *)(UINTN)mVariableRtCach= eInfo.RuntimeHobCacheBuffer, AllocatedHobCacheSize);
+    InitVariableStoreHeader ((VOID *)(UINTN)mVariableRtCach= eInfo.RuntimeNvCacheBuffer, AllocatedNvCacheSize);
+    InitVariableStoreHeader ((VOID *)(UINTN)mVariableRtCach= eInfo.RuntimeVolatileCacheBuffer, AllocatedVolatileCacheSize);
   }
 
   return Status;
@@ -1637,12 +1624,12 @@ SendRuntimeVariableCacheContextToSmm (
   SmmVariableFunctionHeader->Function =3D SMM_VARIABLE_FUNCTI= ON_INIT_RUNTIME_VARIABLE_CACHE_CONTEXT;
   SmmRuntimeVarCacheContext      &= nbsp;    =3D (SMM_VARIABLE_COMMUNICATE_RUNTIME_VARIABLE_CACH= E_CONTEXT *)SmmVariableFunctionHeader->Data;
 
-  SmmRuntimeVarCacheContext->RuntimeHobCache   &nbs= p;  =3D mVariableRuntimeHobCacheBuffer;
-  SmmRuntimeVarCacheContext->RuntimeVolatileCache =3D mVariableRun= timeVolatileCacheBuffer;
-  SmmRuntimeVarCacheContext->RuntimeNvCache    = ;   =3D mVariableRuntimeNvCacheBuffer;
-  SmmRuntimeVarCacheContext->PendingUpdate    =     =3D mVariableRuntimeCachePendingUpdate;
-  SmmRuntimeVarCacheContext->ReadLock     = ;        =3D mVariableRuntimeCacheReadLo= ck;
-  SmmRuntimeVarCacheContext->HobFlushComplete   &nb= sp; =3D mHobFlushComplete;
+  SmmRuntimeVarCacheContext->RuntimeHobCache   &nbs= p;  =3D (VARIABLE_STORE_HEADER *)(UINTN)mVariableRtCacheInfo.RuntimeHo= bCacheBuffer;
+  SmmRuntimeVarCacheContext->RuntimeVolatileCache =3D (VARIABLE_ST= ORE_HEADER *)(UINTN)mVariableRtCacheInfo.RuntimeVolatileCacheBuffer;
+  SmmRuntimeVarCacheContext->RuntimeNvCache    = ;   =3D (VARIABLE_STORE_HEADER *)(UINTN)mVariableRtCacheInfo.Runt= imeNvCacheBuffer;
+  SmmRuntimeVarCacheContext->PendingUpdate    =     =3D &mVariableRtCacheInfo.CacheInfoFlag->PendingU= pdate;
+  SmmRuntimeVarCacheContext->ReadLock     = ;        =3D &mVariableRtCacheInfo.C= acheInfoFlag->ReadLock;
+  SmmRuntimeVarCacheContext->HobFlushComplete   &nb= sp; =3D &mVariableRtCacheInfo.CacheInfoFlag->HobFlushComplete;
 
   //
   // Send data to SMM.
@@ -1712,9 +1699,7 @@ SmmVariableReady (
     }
 
     if (EFI_ERROR (Status)) {
-      mVariableRuntimeHobCacheBuffer  &= nbsp;   =3D NULL;
-      mVariableRuntimeNvCacheBuffer  &n= bsp;    =3D NULL;
-      mVariableRuntimeVolatileCacheBuffer =3D NUL= L;
+      ZeroMem (&mVariableRtCacheInfo, sizeof = (VARIABLE_RUNTIME_CACHE_INFO));
     }
 
     ASSERT_EFI_ERROR (Status);
--
2.31.1.windows.1

_._,_._,_

Groups.io Links:

=20 You receive all messages sent to this group. =20 =20

View/Reply Online (#119048) | =20 | Mute= This Topic | New Topic
Your Subscriptio= n | Contact Group Owner | Unsubscribe [rebecca@openfw.io]

_._,_._,_
--_000_MN6PR11MB8244D66D14131FF9252D94178CEE2MN6PR11MB8244namp_--