From mboxrd@z Thu Jan 1 00:00:00 1970 Authentication-Results: mx.groups.io; dkim=pass header.i=@armh.onmicrosoft.com header.s=selector2-armh-onmicrosoft-com header.b=sW/tyCM6; spf=pass (domain: arm.com, ip: 40.107.1.42, mailfrom: achin.gupta@arm.com) Received: from EUR02-HE1-obe.outbound.protection.outlook.com (EUR02-HE1-obe.outbound.protection.outlook.com [40.107.1.42]) by groups.io with SMTP; Fri, 04 Oct 2019 07:53:27 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=9GMQtMoPVVEGQQB9p6UegUqdK9gqsNsF8YypGzcoALs=; b=sW/tyCM6QqgBRYsSJo0VTvvTE48gigwoS+Z6lK5+iv3l9rL8TNqtKQZPMm7VNScFFM4fHNXPTO2a05BibzPIJHOLLhgDfnmN/u5pt5+JRg/WCeQVJWbP2aIXQjbSqreWocEKBJsrX7o+ruSiv9rjHc8wvOCyDqHg5Z+Muakyt6Y= Received: from AM4PR08CA0043.eurprd08.prod.outlook.com (2603:10a6:205:2::14) by DB7PR08MB3242.eurprd08.prod.outlook.com (2603:10a6:5:1a::31) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2305.20; Fri, 4 Oct 2019 14:53:22 +0000 Received: from DB5EUR03FT024.eop-EUR03.prod.protection.outlook.com (2a01:111:f400:7e0a::209) by AM4PR08CA0043.outlook.office365.com (2603:10a6:205:2::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.2327.23 via Frontend Transport; Fri, 4 Oct 2019 14:53:22 +0000 Authentication-Results: spf=temperror (sender IP is 63.35.35.123) smtp.mailfrom=arm.com; edk2.groups.io; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com;edk2.groups.io; dmarc=none action=none header.from=arm.com; Received-SPF: TempError (protection.outlook.com: error in processing during lookup of arm.com: DNS Timeout) Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by DB5EUR03FT024.mail.protection.outlook.com (10.152.20.67) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.2305.15 via Frontend Transport; Fri, 4 Oct 2019 14:53:21 +0000 Received: ("Tessian outbound e4042aced47b:v33"); Fri, 04 Oct 2019 14:53:21 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: fbb0b04331cd564d X-CR-MTA-TID: 64aa7808 Received: from bd352d8ac836.2 (ip-172-16-0-2.eu-west-1.compute.internal [104.47.2.54]) by 64aa7808-outbound-1.mta.getcheckrecipient.com id D140C6EF-1DF7-4BF9-A018-6B1239620A09.1; Fri, 04 Oct 2019 14:53:15 +0000 Received: from EUR01-DB5-obe.outbound.protection.outlook.com (mail-db5eur01lp2054.outbound.protection.outlook.com [104.47.2.54]) by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id bd352d8ac836.2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Fri, 04 Oct 2019 14:53:15 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ATR7dYcJzkfUJslZI9HrvPWXGQL1W6LorZ2OL47tJRb/e6yRCkKC26MuDtefZtmTdNnOgm+rvWCEMcwF8V7gRf6o5KMv+UxiLYz6ZWniyBYnjUhqeTZmPeMr1t4p++s1N8OS5uts3SjISPAk/ZkoMbYQheO8vw3ilC2ChijmrkQmKm0SAK0VEL+70191cerUqwL/GMDVgc0Riv8AlV4MtJylbdTEGdsTycK8EA4SiIyjZJbibrF+cI4hUCHsE+HYdWImDGPFnD4aBEFCczdTDL1XMRYRi/Ua/9dYKPFTzM0ChWjA5NdNS8AWxAVAQXdhzr8JWVkzG1g92YmmSY/C2Q== 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=9GMQtMoPVVEGQQB9p6UegUqdK9gqsNsF8YypGzcoALs=; b=kxUSJuXd7+hkiK7JRVP6SwxGiBklTqP8T5GooavWY2UYYXF0Ienxo2bhpWHwVuVSXG9ojiOnO+q5P2sL0iQH5xM9QT9h8O299H9kFxn+ejHxN8gGGhL+BCvSa9KE+6hTr03TpRVMdCl8WTsppsahtTlmn0oOvPnzr8mxxJeFs1BMR1lKi3n/+YCnd3n1M+1c2muDyVh1BDcUQLuIU0OZHPCs9CK5HaZynLEo1XGLu/Zw+jGshfpTtemAY73upLqYk4toaqB01PYSofQ6bn7JsIB1jGY2+ncHTXV1B1OPynOOITmEH+n0BSGLA78F/tlFM4z9ynkU7XX/fDeakgLPUw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=9GMQtMoPVVEGQQB9p6UegUqdK9gqsNsF8YypGzcoALs=; b=sW/tyCM6QqgBRYsSJo0VTvvTE48gigwoS+Z6lK5+iv3l9rL8TNqtKQZPMm7VNScFFM4fHNXPTO2a05BibzPIJHOLLhgDfnmN/u5pt5+JRg/WCeQVJWbP2aIXQjbSqreWocEKBJsrX7o+ruSiv9rjHc8wvOCyDqHg5Z+Muakyt6Y= Received: from AM0PR08MB2980.eurprd08.prod.outlook.com (52.134.92.153) by AM0PR08MB4274.eurprd08.prod.outlook.com (20.179.36.74) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2305.20; Fri, 4 Oct 2019 14:53:14 +0000 Received: from AM0PR08MB2980.eurprd08.prod.outlook.com ([fe80::61fe:e079:98cd:4a0d]) by AM0PR08MB2980.eurprd08.prod.outlook.com ([fe80::61fe:e079:98cd:4a0d%6]) with mapi id 15.20.2305.023; Fri, 4 Oct 2019 14:53:14 +0000 From: Achin Gupta To: "devel@edk2.groups.io" , "lersek@redhat.com" CC: Jiewen Yao , Supreeth Venkatesh , nd Subject: Re: [edk2-devel] [PATCH 33/35] StandaloneMmPkg/Core: stop abusing EFI_HANDLE for FwVolHeader tracking Thread-Topic: [edk2-devel] [PATCH 33/35] StandaloneMmPkg/Core: stop abusing EFI_HANDLE for FwVolHeader tracking Thread-Index: AQHVbZEznLaX2gx4b0WV36kX0aBCnqc99i0AgArlIYCAAdBxgA== Date: Fri, 4 Oct 2019 14:53:14 +0000 Message-ID: <20191004145311.GA26564@mac-ubuntu-vm> References: <20190917194935.24322-1-lersek@redhat.com> <20190917194935.24322-34-lersek@redhat.com> <86cfd468-7fd4-e7b0-dcd5-cc183abd076d@redhat.com> In-Reply-To: <86cfd468-7fd4-e7b0-dcd5-cc183abd076d@redhat.com> Accept-Language: en-GB, en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: user-agent: Mutt/1.9.4 (2018-02-28) x-originating-ip: [217.140.106.50] x-clientproxiedby: LO2P265CA0380.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:a3::32) To AM0PR08MB2980.eurprd08.prod.outlook.com (2603:10a6:208:5b::25) Authentication-Results-Original: spf=none (sender IP is ) smtp.mailfrom=Achin.Gupta@arm.com; x-ms-exchange-messagesentrepresentingtype: 1 x-ms-publictraffictype: Email X-MS-Office365-Filtering-Correlation-Id: 2be4f708-bce0-46da-b43b-08d748da99aa X-MS-Office365-Filtering-HT: Tenant X-MS-TrafficTypeDiagnostic: AM0PR08MB4274:|AM0PR08MB4274:|DB7PR08MB3242: X-MS-Exchange-PUrlCount: 3 x-ms-exchange-transport-forked: True X-Microsoft-Antispam-PRVS: x-checkrecipientrouted: true x-ms-oob-tlc-oobclassifiers: OLM:10000;OLM:10000; x-forefront-prvs: 018093A9B5 X-Forefront-Antispam-Report-Untrusted: SFV:NSPM;SFS:(10009020)(6029001)(4636009)(7916004)(39860400002)(136003)(346002)(366004)(396003)(376002)(189003)(199004)(3846002)(6306002)(7736002)(14454004)(25786009)(5660300002)(44832011)(11346002)(81156014)(476003)(478600001)(66946007)(8676002)(81166006)(446003)(6116002)(305945005)(486006)(1076003)(66446008)(64756008)(66556008)(66476007)(386003)(52116002)(6246003)(33656002)(66066001)(256004)(966005)(71200400001)(71190400001)(76176011)(4326008)(2906002)(8936002)(86362001)(53546011)(6506007)(229853002)(33716001)(54906003)(99286004)(102836004)(316002)(6486002)(58126008)(26005)(6436002)(2501003)(186003)(9686003)(6512007)(110136005);DIR:OUT;SFP:1101;SCL:1;SRVR:AM0PR08MB4274;H:AM0PR08MB2980.eurprd08.prod.outlook.com;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;MX:1;A:1; received-spf: None (protection.outlook.com: arm.com does not designate permitted sender hosts) X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: y2yz8cMssdQMdzRVWpVDt4r1WalClyO4xoCLShL1biGAJrvNFG78tstR+unKl/b5RgykdQD4Y+A9FPiBtPpaPqGojfKCXgy4eAvFIQsTe32LVcJg6SuGVe4vDkkD+1e0SDX2LmqwN9jg8cvwbDn49a5FcgYEfD61/72fqXt/TERKgWfQadwZC3fDdwlw/nEeaHPQ5WgMClCGXhr0OR9USldp6ngALk0622FSwFPwosadBRZ/jm3KJqJgmOLVQdgb16yESWRh9OQPa/MU1ilFsBSJtShkbnzy3Jhu4m6ljB9Jcq3MxKGcHRAslan4wVzFzE0IdvQISCmpJoLFkujqG1LWZUWkf9vbGsUwNH+AWm4qFRxQsc7/x1lBvx96tTaYeCffyh2ASQr29WLwhdNJScXNSgaxpXaTbvUquiIV97dus9wh4EtiguioG23y+QkVks5nL0CrmhQWCaABdNyV4g== MIME-Version: 1.0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR08MB4274 Original-Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Achin.Gupta@arm.com; Return-Path: Achin.Gupta@arm.com X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: DB5EUR03FT024.eop-EUR03.prod.protection.outlook.com X-Forefront-Antispam-Report: CIP:63.35.35.123;IPV:CAL;SCL:-1;CTRY:IE;EFV:NLI;SFV:NSPM;SFS:(10009020)(6029001)(7916004)(4636009)(39860400002)(346002)(396003)(376002)(136003)(189003)(199004)(1076003)(6512007)(5660300002)(305945005)(4326008)(7736002)(33656002)(9686003)(2906002)(6246003)(6306002)(186003)(22756006)(86362001)(316002)(63350400001)(11346002)(336012)(54906003)(110136005)(76130400001)(70586007)(58126008)(356004)(70206006)(50466002)(486006)(2501003)(966005)(26005)(476003)(126002)(23726003)(66066001)(3846002)(446003)(47776003)(6116002)(46406003)(14454004)(81166006)(33716001)(386003)(6506007)(53546011)(81156014)(76176011)(102836004)(8676002)(25786009)(26826003)(97756001)(8936002)(229853002)(8746002)(99286004)(478600001)(6486002);DIR:OUT;SFP:1101;SCL:1;SRVR:DB7PR08MB3242;H:64aa7808-outbound-1.mta.getcheckrecipient.com;FPR:;SPF:TempError;LANG:en;PTR:ec2-63-35-35-123.eu-west-1.compute.amazonaws.com;MX:1;A:1; X-MS-Office365-Filtering-Correlation-Id-Prvs: dd8e60b7-ba4a-4441-d138-08d748da955b NoDisclaimer: True X-Forefront-PRVS: 018093A9B5 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: ZqUOLZqGTRAVxX9lsh9MXfeENrGZM2vjeMEIIEg5ZmPq793hbAe4ZGjFmeTBE92AvGRFbcakBKyx6q+UoBAp1cg7kt8saXyafhy65JY+yiOZqduJE5PRPteCtx+uBAW1nGfURtTXhRAhHNg1vz3Bn6XO3hhrrqHmQvGjKZGP7Zg1rpb+1Ajt3RDPXr33+fTB4EMZY/LRMGGf4R2gH/6gFvfHc0/w/VcUCN9u3TlMbHfRdWlZYgHoO/EkmgcWRFd/2dsdxjBy8JQG3vON4eKL2ghqSUX1ZAU8eUgmcmHgYoVNwVjZ50sdPcTLEXDY2xIk5PqopCraXSxYG1NuTAaoEHMp1IFrMT91SvrZSVcgBpfBD82p8FiVYlfN+ZsGjDudcmcUVRqUrbP1w3HRsBXffDgQl443NR9mp+juECUznmoB4sx8+hx9sF8pPM9Q96uqVNJVbalbnbgevj4C80Io/g== X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Oct 2019 14:53:21.3615 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 2be4f708-bce0-46da-b43b-08d748da99aa X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[63.35.35.123];Helo=[64aa7808-outbound-1.mta.getcheckrecipient.com] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB7PR08MB3242 Content-Language: en-US Content-Type: text/plain; charset="us-ascii" Content-ID: Content-Transfer-Encoding: quoted-printable Makes sense! Reviewed-by: Achin Gupta On Thu, Oct 03, 2019 at 01:10:53PM +0200, Laszlo Ersek wrote: > Pinging StandaloneMmPkg maintainers again, for reviewing this patch. > > Thanks > Laszlo > > On 09/26/19 14:48, Laszlo Ersek wrote: > > Achin, Jiewen, Supreeth, > > > > can one of you guys please review this patch? > > > > Thanks > > Laszlo > > > > On 09/17/19 21:49, Laszlo Ersek wrote: > >> The FvHasBeenProcessed() and FvIsBeingProcesssed() functions make sur= e > >> that every firmware volume is processed only once (every driver in ev= ery > >> firmware volume should be discovered only once). For this, the functi= ons > >> use a linked list. > >> > >> In MdeModulePkg's DXE Core and SMM Core, the key used for identifying > >> those firmware volumes that have been processed is the EFI_HANDLE on = which > >> the DXE or SMM firmware volume protocol is installed. In the > >> StandaloneMmPkg core however, the key is the address of the firmware > >> volume header; that is, it has type (EFI_FIRMWARE_VOLUME_HEADER*). > >> > >> (EFI_FIRMWARE_VOLUME_HEADER*) has nothing to do with EFI_HANDLE. > >> EFI_HANDLE just happens to be specified as (VOID*), and therefore the > >> conversion between (EFI_FIRMWARE_VOLUME_HEADER*) and EFI_HANDLE is si= lent. > >> > >> (The FvHasBeenProcessed() and FvIsBeingProcesssed() functions were li= kely > >> copied verbatim from MdeModulePkg's DXE Core and/or the SMM Core, and= not > >> flagged by the compiler in StandaloneMmPkg due to UEFI regrettably > >> specifying EFI_HANDLE as (VOID*), thereby enabling the above implicit > >> conversion.) > >> > >> We should not exploit this circumstance. Represent the key type faith= fully > >> instead. > >> > >> This is a semantic fix; there is no change in operation. > >> > >> Cc: Achin Gupta > >> Cc: Jiewen Yao > >> Cc: Supreeth Venkatesh > >> Signed-off-by: Laszlo Ersek > >> --- > >> > >> Notes: > >> build-tested only > >> > >> StandaloneMmPkg/Core/StandaloneMmCore.h | 2 +- > >> StandaloneMmPkg/Core/Dispatcher.c | 80 +++++++++++--------- > >> StandaloneMmPkg/Core/FwVol.c | 16 ++-- > >> 3 files changed, 52 insertions(+), 46 deletions(-) > >> > >> diff --git a/StandaloneMmPkg/Core/StandaloneMmCore.h b/StandaloneMmPk= g/Core/StandaloneMmCore.h > >> index dcf91bc5e916..23ddbe169faf 100644 > >> --- a/StandaloneMmPkg/Core/StandaloneMmCore.h > >> +++ b/StandaloneMmPkg/Core/StandaloneMmCore.h > >> @@ -67,7 +67,7 @@ typedef struct { > >> > >> LIST_ENTRY ScheduledLink; // mScheduledQue= ue > >> > >> - EFI_HANDLE FvHandle; > >> + EFI_FIRMWARE_VOLUME_HEADER *FwVolHeader; > >> EFI_GUID FileName; > >> VOID *Pe32Data; > >> UINTN Pe32DataSize; > >> diff --git a/StandaloneMmPkg/Core/Dispatcher.c b/StandaloneMmPkg/Core= /Dispatcher.c > >> index 3788389f95ed..9853445a64a1 100644 > >> --- a/StandaloneMmPkg/Core/Dispatcher.c > >> +++ b/StandaloneMmPkg/Core/Dispatcher.c > >> @@ -5,7 +5,7 @@ > >> is added to the mDiscoveredList. The Before, and After D= epex are > >> pre-processed as drivers are added to the mDiscoveredLis= t. If an Apriori > >> file exists in the FV those drivers are addeded to the > >> - mScheduledQueue. The mFvHandleList is used to make sure = a > >> + mScheduledQueue. The mFwVolList is used to make sure a > >> FV is only processed once. > >> > >> Step #2 - Dispatch. Remove driver from the mScheduledQueue and loa= d and > >> @@ -40,13 +40,13 @@ > >> // > >> // MM Dispatcher Data structures > >> // > >> -#define KNOWN_HANDLE_SIGNATURE SIGNATURE_32('k','n','o','w') > >> +#define KNOWN_FWVOL_SIGNATURE SIGNATURE_32('k','n','o','w') > >> > >> typedef struct { > >> - UINTN Signature; > >> - LIST_ENTRY Link; // mFvHandleList > >> - EFI_HANDLE Handle; > >> -} KNOWN_HANDLE; > >> + UINTN Signature; > >> + LIST_ENTRY Link; // mFwVolList > >> + EFI_FIRMWARE_VOLUME_HEADER *FwVolHeader; > >> +} KNOWN_FWVOL; > >> > >> // > >> // Function Prototypes > >> @@ -86,9 +86,10 @@ LIST_ENTRY mDiscoveredList =3D INITIALIZE_LIST_HE= AD_VARIABLE (mDiscoveredList); > >> LIST_ENTRY mScheduledQueue =3D INITIALIZE_LIST_HEAD_VARIABLE (mSche= duledQueue); > >> > >> // > >> -// List of handles who's Fv's have been parsed and added to the mFwD= riverList. > >> +// List of firmware volume headers whose containing firmware volumes= have been > >> +// parsed and added to the mFwDriverList. > >> // > >> -LIST_ENTRY mFvHandleList =3D INITIALIZE_LIST_HEAD_VARIABLE (mFvHand= leList); > >> +LIST_ENTRY mFwVolList =3D INITIALIZE_LIST_HEAD_VARIABLE (mFwVolList= ); > >> > >> // > >> // Flag for the MM Dispacher. TRUE if dispatcher is execuing. > >> @@ -769,26 +770,30 @@ MmInsertOnScheduledQueueWhileProcessingBeforeAn= dAfter ( > >> } > >> > >> /** > >> - Return TRUE if the Fv has been processed, FALSE if not. > >> + Return TRUE if the firmware volume has been processed, FALSE if no= t. > >> > >> - @param FvHandle The handle of a FV that's being test= ed > >> + @param FwVolHeader The header of the firmware volume th= at's being > >> + tested. > >> > >> - @retval TRUE Fv protocol on FvHandle has been pro= cessed > >> - @retval FALSE Fv protocol on FvHandle has not yet = been > >> - processed > >> + @retval TRUE The firmware volume denoted by FwVol= Header has > >> + been processed > >> + @retval FALSE The firmware volume denoted by FwVol= Header has > >> + not yet been processed > >> > >> **/ > >> BOOLEAN > >> FvHasBeenProcessed ( > >> - IN EFI_HANDLE FvHandle > >> + IN EFI_FIRMWARE_VOLUME_HEADER *FwVolHeader > >> ) > >> { > >> LIST_ENTRY *Link; > >> - KNOWN_HANDLE *KnownHandle; > >> + KNOWN_FWVOL *KnownFwVol; > >> > >> - for (Link =3D mFvHandleList.ForwardLink; Link !=3D &mFvHandleList;= Link =3D Link->ForwardLink) { > >> - KnownHandle =3D CR (Link, KNOWN_HANDLE, Link, KNOWN_HANDLE_SIGNA= TURE); > >> - if (KnownHandle->Handle =3D=3D FvHandle) { > >> + for (Link =3D mFwVolList.ForwardLink; > >> + Link !=3D &mFwVolList; > >> + Link =3D Link->ForwardLink) { > >> + KnownFwVol =3D CR (Link, KNOWN_FWVOL, Link, KNOWN_FWVOL_SIGNATUR= E); > >> + if (KnownFwVol->FwVolHeader =3D=3D FwVolHeader) { > >> return TRUE; > >> } > >> } > >> @@ -796,28 +801,29 @@ FvHasBeenProcessed ( > >> } > >> > >> /** > >> - Remember that Fv protocol on FvHandle has had it's drivers placed = on the > >> - mDiscoveredList. This fucntion adds entries on the mFvHandleList. = Items are > >> - never removed/freed from the mFvHandleList. > >> + Remember that the firmware volume denoted by FwVolHeader has had i= ts drivers > >> + placed on mDiscoveredList. This function adds entries to mFwVolLis= t. Items > >> + are never removed/freed from mFwVolList. > >> > >> - @param FvHandle The handle of a FV that has been pro= cessed > >> + @param FwVolHeader The header of the firmware volume th= at's being > >> + processed. > >> > >> **/ > >> VOID > >> FvIsBeingProcesssed ( > >> - IN EFI_HANDLE FvHandle > >> + IN EFI_FIRMWARE_VOLUME_HEADER *FwVolHeader > >> ) > >> { > >> - KNOWN_HANDLE *KnownHandle; > >> + KNOWN_FWVOL *KnownFwVol; > >> > >> - DEBUG ((DEBUG_INFO, "FvIsBeingProcesssed - 0x%08x\n", FvHandle)); > >> + DEBUG ((DEBUG_INFO, "FvIsBeingProcesssed - 0x%08x\n", KnownFwVol))= ; > >> > >> - KnownHandle =3D AllocatePool (sizeof (KNOWN_HANDLE)); > >> - ASSERT (KnownHandle !=3D NULL); > >> + KnownFwVol =3D AllocatePool (sizeof (KNOWN_FWVOL)); > >> + ASSERT (KnownFwVol !=3D NULL); > >> > >> - KnownHandle->Signature =3D KNOWN_HANDLE_SIGNATURE; > >> - KnownHandle->Handle =3D FvHandle; > >> - InsertTailList (&mFvHandleList, &KnownHandle->Link); > >> + KnownFwVol->Signature =3D KNOWN_FWVOL_SIGNATURE; > >> + KnownFwVol->FwVolHeader =3D FwVolHeader; > >> + InsertTailList (&mFwVolList, &KnownFwVol->Link); > >> } > >> > >> /** > >> @@ -842,12 +848,12 @@ FvIsBeingProcesssed ( > >> **/ > >> EFI_STATUS > >> MmAddToDriverList ( > >> - IN EFI_HANDLE FvHandle, > >> - IN VOID *Pe32Data, > >> - IN UINTN Pe32DataSize, > >> - IN VOID *Depex, > >> - IN UINTN DepexSize, > >> - IN EFI_GUID *DriverName > >> + IN EFI_FIRMWARE_VOLUME_HEADER *FwVolHeader, > >> + IN VOID *Pe32Data, > >> + IN UINTN Pe32DataSize, > >> + IN VOID *Depex, > >> + IN UINTN DepexSize, > >> + IN EFI_GUID *DriverName > >> ) > >> { > >> EFI_MM_DRIVER_ENTRY *DriverEntry; > >> @@ -863,7 +869,7 @@ MmAddToDriverList ( > >> > >> DriverEntry->Signature =3D EFI_MM_DRIVER_ENTRY_SIGNATURE; > >> CopyGuid (&DriverEntry->FileName, DriverName); > >> - DriverEntry->FvHandle =3D FvHandle; > >> + DriverEntry->FwVolHeader =3D FwVolHeader; > >> DriverEntry->Pe32Data =3D Pe32Data; > >> DriverEntry->Pe32DataSize =3D Pe32DataSize; > >> DriverEntry->Depex =3D Depex; > >> diff --git a/StandaloneMmPkg/Core/FwVol.c b/StandaloneMmPkg/Core/FwVo= l.c > >> index 9fe0c257a43a..99ecf4af4714 100644 > >> --- a/StandaloneMmPkg/Core/FwVol.c > >> +++ b/StandaloneMmPkg/Core/FwVol.c > >> @@ -24,22 +24,22 @@ EFI_FV_FILETYPE mMmFileTypes[] =3D { > >> > >> EFI_STATUS > >> MmAddToDriverList ( > >> - IN EFI_HANDLE FvHandle, > >> - IN VOID *Pe32Data, > >> - IN UINTN Pe32DataSize, > >> - IN VOID *Depex, > >> - IN UINTN DepexSize, > >> - IN EFI_GUID *DriverName > >> + IN EFI_FIRMWARE_VOLUME_HEADER *FwVolHeader, > >> + IN VOID *Pe32Data, > >> + IN UINTN Pe32DataSize, > >> + IN VOID *Depex, > >> + IN UINTN DepexSize, > >> + IN EFI_GUID *DriverName > >> ); > >> > >> BOOLEAN > >> FvHasBeenProcessed ( > >> - IN EFI_HANDLE FvHandle > >> + IN EFI_FIRMWARE_VOLUME_HEADER *FwVolHeader > >> ); > >> > >> VOID > >> FvIsBeingProcesssed ( > >> - IN EFI_HANDLE FvHandle > >> + IN EFI_FIRMWARE_VOLUME_HEADER *FwVolHeader > >> ); > >> > >> EFI_STATUS > >> > > > > > >=20 > > >