From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id C61748039E for ; Thu, 9 Mar 2017 22:13:21 -0800 (PST) Received: from fmsmga004.fm.intel.com ([10.253.24.48]) by fmsmga105.fm.intel.com with ESMTP; 09 Mar 2017 22:13:21 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.36,139,1486454400"; d="scan'208";a="234464131" Received: from fmsmsx107.amr.corp.intel.com ([10.18.124.205]) by fmsmga004.fm.intel.com with ESMTP; 09 Mar 2017 22:13:21 -0800 Received: from shsmsx104.ccr.corp.intel.com (10.239.4.70) by fmsmsx107.amr.corp.intel.com (10.18.124.205) with Microsoft SMTP Server (TLS) id 14.3.248.2; Thu, 9 Mar 2017 22:13:21 -0800 Received: from shsmsx102.ccr.corp.intel.com ([169.254.2.88]) by SHSMSX104.ccr.corp.intel.com ([10.239.4.70]) with mapi id 14.03.0248.002; Fri, 10 Mar 2017 14:13:19 +0800 From: "Yao, Jiewen" To: "Wu, Hao A" , "edk2-devel@lists.01.org" Thread-Topic: [PATCH 1/2] MdeModulePkg/CapsuleLib: Add lib destructors to handle unclosed events Thread-Index: AQHSmWSKkTkYpB+PikGOXFqgWdBg56GNl/5w Date: Fri, 10 Mar 2017 06:13:18 +0000 Message-ID: <74D8A39837DF1E4DA445A8C0B3885C503A901B08@shsmsx102.ccr.corp.intel.com> References: <20170310060700.10076-1-hao.a.wu@intel.com> <20170310060700.10076-2-hao.a.wu@intel.com> In-Reply-To: <20170310060700.10076-2-hao.a.wu@intel.com> Accept-Language: zh-CN, en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.239.127.40] MIME-Version: 1.0 Subject: Re: [PATCH 1/2] MdeModulePkg/CapsuleLib: Add lib destructors to handle unclosed events X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 10 Mar 2017 06:13:22 -0000 Content-Language: en-US Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Reviewed-by: Jiewen.yao@Intel.com > -----Original Message----- > From: Wu, Hao A > Sent: Friday, March 10, 2017 2:07 PM > To: edk2-devel@lists.01.org > Cc: Wu, Hao A ; Yao, Jiewen > Subject: [PATCH 1/2] MdeModulePkg/CapsuleLib: Add lib destructors to hand= le > unclosed events >=20 > Cc: Jiewen Yao > Contributed-under: TianoCore Contribution Agreement 1.0 > Signed-off-by: Hao Wu > --- > MdeModulePkg/Library/DxeCapsuleLibFmp/DxeCapsuleLib.c | 37 > +++++++++++++++++--- > MdeModulePkg/Library/DxeCapsuleLibFmp/DxeCapsuleLib.inf | 3 +- > MdeModulePkg/Library/DxeCapsuleLibFmp/DxeCapsuleRuntime.c | 33 > ++++++++++++++--- > MdeModulePkg/Library/DxeCapsuleLibFmp/DxeRuntimeCapsuleLib.inf | 4 > ++- > 4 files changed, 66 insertions(+), 11 deletions(-) >=20 > diff --git a/MdeModulePkg/Library/DxeCapsuleLibFmp/DxeCapsuleLib.c > b/MdeModulePkg/Library/DxeCapsuleLibFmp/DxeCapsuleLib.c > index 7f500a96eb..a892892ccd 100644 > --- a/MdeModulePkg/Library/DxeCapsuleLibFmp/DxeCapsuleLib.c > +++ b/MdeModulePkg/Library/DxeCapsuleLibFmp/DxeCapsuleLib.c > @@ -47,9 +47,11 @@ > #include > #include >=20 > -EFI_SYSTEM_RESOURCE_TABLE *mEsrtTable =3D NULL; > -BOOLEAN mIsVirtualAddrConverted =3D FALSE; > -BOOLEAN mDxeCapsuleLibEndOfDxe =3D FALSE; > +EFI_SYSTEM_RESOURCE_TABLE *mEsrtTable > =3D NULL; > +BOOLEAN mIsVirtualAddrConverted > =3D FALSE; > +BOOLEAN mDxeCapsuleLibEndOfDxe > =3D FALSE; > +EFI_EVENT mDxeCapsuleLibEndOfDxeEvent > =3D NULL; > +EFI_EVENT > mDxeRuntimeCapsuleLibVirtualAddressChangeEvent =3D NULL; >=20 > /** > Initialize capsule related variables. > @@ -1654,7 +1656,6 @@ DxeCapsuleLibConstructor ( > IN EFI_SYSTEM_TABLE *SystemTable > ) > { > - EFI_EVENT EndOfDxeEvent; > EFI_STATUS Status; >=20 > Status =3D gBS->CreateEventEx ( > @@ -1663,7 +1664,7 @@ DxeCapsuleLibConstructor ( > DxeCapsuleLibEndOfDxe, > NULL, > &gEfiEndOfDxeEventGroupGuid, > - &EndOfDxeEvent > + &mDxeCapsuleLibEndOfDxeEvent > ); > ASSERT_EFI_ERROR (Status); >=20 > @@ -1671,3 +1672,29 @@ DxeCapsuleLibConstructor ( >=20 > return EFI_SUCCESS; > } > + > +/** > + The destructor function closes the End of DXE event. > + > + @param ImageHandle The firmware allocated handle for the EFI image. > + @param SystemTable A pointer to the EFI System Table. > + > + @retval EFI_SUCCESS The destructor completed successfully. > +**/ > +EFI_STATUS > +EFIAPI > +DxeCapsuleLibDestructor ( > + IN EFI_HANDLE ImageHandle, > + IN EFI_SYSTEM_TABLE *SystemTable > + ) > +{ > + EFI_STATUS Status; > + > + // > + // Close the End of DXE event. > + // > + Status =3D gBS->CloseEvent (mDxeCapsuleLibEndOfDxeEvent); > + ASSERT_EFI_ERROR (Status); > + > + return EFI_SUCCESS; > +} > diff --git a/MdeModulePkg/Library/DxeCapsuleLibFmp/DxeCapsuleLib.inf > b/MdeModulePkg/Library/DxeCapsuleLibFmp/DxeCapsuleLib.inf > index 5e437dc418..a6cf54cb6b 100644 > --- a/MdeModulePkg/Library/DxeCapsuleLibFmp/DxeCapsuleLib.inf > +++ b/MdeModulePkg/Library/DxeCapsuleLibFmp/DxeCapsuleLib.inf > @@ -3,7 +3,7 @@ > # > # Capsule library instance for DXE_DRIVER module types. > # > -# Copyright (c) 2016, Intel Corporation. All rights reserved.
> +# Copyright (c) 2016 - 2017, Intel Corporation. All rights reserved. > # This program and the accompanying materials > # are licensed and made available under the terms and conditions of the= BSD > License > # which accompanies this distribution. The full text of the license ma= y be > found at > @@ -23,6 +23,7 @@ > VERSION_STRING =3D 1.0 > LIBRARY_CLASS =3D CapsuleLib|DXE_DRIVER > UEFI_APPLICATION > CONSTRUCTOR =3D DxeCapsuleLibConstructor > + DESTRUCTOR =3D DxeCapsuleLibDestructor >=20 > # > # The following information is for reference only and not required by th= e build > tools. > diff --git a/MdeModulePkg/Library/DxeCapsuleLibFmp/DxeCapsuleRuntime.c > b/MdeModulePkg/Library/DxeCapsuleLibFmp/DxeCapsuleRuntime.c > index 880143905a..513aa533e1 100644 > --- a/MdeModulePkg/Library/DxeCapsuleLibFmp/DxeCapsuleRuntime.c > +++ b/MdeModulePkg/Library/DxeCapsuleLibFmp/DxeCapsuleRuntime.c > @@ -1,7 +1,7 @@ > /** @file > Capsule library runtime support. >=20 > - Copyright (c) 2016, Intel Corporation. All rights reserved.
> + Copyright (c) 2016 - 2017, Intel Corporation. All rights reserved.
> This program and the accompanying materials > are licensed and made available under the terms and conditions of the = BSD > License > which accompanies this distribution. The full text of the license may= be > found at > @@ -28,6 +28,7 @@ >=20 > extern EFI_SYSTEM_RESOURCE_TABLE *mEsrtTable; > extern BOOLEAN mIsVirtualAddrConverted; > +extern EFI_EVENT > mDxeRuntimeCapsuleLibVirtualAddressChangeEvent; >=20 > /** > Convert EsrtTable physical address to virtual address. > @@ -92,21 +93,45 @@ DxeRuntimeCapsuleLibConstructor ( > ) > { > EFI_STATUS Status; > - EFI_EVENT Event; >=20 > // > // Make sure we can handle virtual address changes. > // > - Event =3D NULL; > Status =3D gBS->CreateEventEx ( > EVT_NOTIFY_SIGNAL, > TPL_NOTIFY, > DxeCapsuleLibVirtualAddressChangeEvent, > NULL, > &gEfiEventVirtualAddressChangeGuid, > - &Event > + &mDxeRuntimeCapsuleLibVirtualAddressChangeEvent > ); > ASSERT_EFI_ERROR (Status); >=20 > return EFI_SUCCESS; > } > + > +/** > + The destructor function closes the VirtualAddressChange event. > + > + @param ImageHandle The firmware allocated handle for the EFI image. > + @param SystemTable A pointer to the EFI System Table. > + > + @retval EFI_SUCCESS The destructor completed successfully. > +**/ > +EFI_STATUS > +EFIAPI > +DxeRuntimeCapsuleLibDestructor ( > + IN EFI_HANDLE ImageHandle, > + IN EFI_SYSTEM_TABLE *SystemTable > + ) > +{ > + EFI_STATUS Status; > + > + // > + // Close the VirtualAddressChange event. > + // > + Status =3D gBS->CloseEvent > (mDxeRuntimeCapsuleLibVirtualAddressChangeEvent); > + ASSERT_EFI_ERROR (Status); > + > + return EFI_SUCCESS; > +} > diff --git > a/MdeModulePkg/Library/DxeCapsuleLibFmp/DxeRuntimeCapsuleLib.inf > b/MdeModulePkg/Library/DxeCapsuleLibFmp/DxeRuntimeCapsuleLib.inf > index 47c67ccac5..25b7d51f57 100644 > --- a/MdeModulePkg/Library/DxeCapsuleLibFmp/DxeRuntimeCapsuleLib.inf > +++ b/MdeModulePkg/Library/DxeCapsuleLibFmp/DxeRuntimeCapsuleLib.inf > @@ -3,7 +3,7 @@ > # > # Capsule library instance for DXE_RUNTIME_DRIVER module types. > # > -# Copyright (c) 2016, Intel Corporation. All rights reserved.
> +# Copyright (c) 2016 - 2017, Intel Corporation. All rights reserved. > # This program and the accompanying materials > # are licensed and made available under the terms and conditions of the= BSD > License > # which accompanies this distribution. The full text of the license ma= y be > found at > @@ -24,6 +24,8 @@ > LIBRARY_CLASS =3D CapsuleLib|DXE_RUNTIME_DRIVER > CONSTRUCTOR =3D DxeCapsuleLibConstructor > CONSTRUCTOR =3D DxeRuntimeCapsuleLibConstructor > + DESTRUCTOR =3D DxeCapsuleLibDestructor > + DESTRUCTOR =3D DxeRuntimeCapsuleLibDestructor >=20 > # > # The following information is for reference only and not required by th= e build > tools. > -- > 2.12.0.windows.1