From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=192.55.52.88; helo=mga01.intel.com; envelope-from=liming.gao@intel.com; receiver=edk2-devel@lists.01.org Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) (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 E9EF2208AE2C8 for ; Fri, 15 Feb 2019 05:52:14 -0800 (PST) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga007.jf.intel.com ([10.7.209.58]) by fmsmga101.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 15 Feb 2019 05:52:14 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.58,372,1544515200"; d="scan'208";a="115196977" Received: from fmsmsx103.amr.corp.intel.com ([10.18.124.201]) by orsmga007.jf.intel.com with ESMTP; 15 Feb 2019 05:52:13 -0800 Received: from fmsmsx115.amr.corp.intel.com (10.18.116.19) by FMSMSX103.amr.corp.intel.com (10.18.124.201) with Microsoft SMTP Server (TLS) id 14.3.408.0; Fri, 15 Feb 2019 05:52:13 -0800 Received: from shsmsx108.ccr.corp.intel.com (10.239.4.97) by fmsmsx115.amr.corp.intel.com (10.18.116.19) with Microsoft SMTP Server (TLS) id 14.3.408.0; Fri, 15 Feb 2019 05:52:13 -0800 Received: from shsmsx104.ccr.corp.intel.com ([169.254.5.102]) by SHSMSX108.ccr.corp.intel.com ([169.254.8.36]) with mapi id 14.03.0415.000; Fri, 15 Feb 2019 21:52:11 +0800 From: "Gao, Liming" To: "Bi, Dandan" , "edk2-devel@lists.01.org" CC: "Wu, Hao A" , Michael Turner , Max Knutsen Thread-Topic: [edk2] [patch V2] MdeModulePkg/ReportStatusCodeLib: Avoid using AllocatePool if possible Thread-Index: AQHUxA6KvMhFa5shzU6UodGyk9AuOqXeD88AgALTVrA= Date: Fri, 15 Feb 2019 13:52:10 +0000 Message-ID: <4A89E2EF3DFEDB4C8BFDE51014F606A14E3DF6D0@SHSMSX104.ccr.corp.intel.com> References: <20190214023907.52356-1-dandan.bi@intel.com> <3C0D5C461C9E904E8F62152F6274C0BB40B9243D@SHSMSX104.ccr.corp.intel.com> In-Reply-To: <3C0D5C461C9E904E8F62152F6274C0BB40B9243D@SHSMSX104.ccr.corp.intel.com> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ctpclassification: CTP_NT x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiYmM4NzE0YjItMmU1OC00MTdkLWEzMDYtNmJmMmVhYjQ4MjA4IiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX05UIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE3LjEwLjE4MDQuNDkiLCJUcnVzdGVkTGFiZWxIYXNoIjoiUGJJWXBEc2paaGZleWJHcittMlVjNkZxaDdLdlZYM3F0eDRhWGFJVTdSQWdwSVBzZzZ3NWdlZzJTMHZNRURmayJ9 dlp-product: dlpe-windows dlp-version: 11.0.400.15 dlp-reaction: no-action x-originating-ip: [10.239.127.40] MIME-Version: 1.0 Subject: Re: [patch V2] MdeModulePkg/ReportStatusCodeLib: Avoid using AllocatePool if possible X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 15 Feb 2019 13:52:15 -0000 Content-Language: en-US Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Reviewed-by: Liming Gao > -----Original Message----- > From: Bi, Dandan > Sent: Thursday, February 14, 2019 10:43 AM > To: Bi, Dandan ; edk2-devel@lists.01.org > Cc: Wu, Hao A ; Michael Turner ; Max Knutsen ; Gao, > Liming > Subject: RE: [edk2] [patch V2] MdeModulePkg/ReportStatusCodeLib: Avoid us= ing AllocatePool if possible >=20 > This patch is also available at > https://github.com/dandanbi/edk2/commit/e5c432b2d5083c0bbadbf773d460a9c2= 2d36b267 >=20 >=20 > Thanks, > Dandan > > -----Original Message----- > > From: edk2-devel [mailto:edk2-devel-bounces@lists.01.org] On Behalf Of > > Dandan Bi > > Sent: Thursday, February 14, 2019 10:39 AM > > To: edk2-devel@lists.01.org > > Cc: Wu, Hao A ; Michael Turner > > ; Max Knutsen > > ; Gao, Liming > > Subject: [edk2] [patch V2] MdeModulePkg/ReportStatusCodeLib: Avoid > > using AllocatePool if possible > > > > From: Max Knutsen > > > > REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3D1114 > > > > V2: simplify the code logic. > > update > > if (!mHaveExitedBootServices && > > (StatusCodeData !=3D (EFI_STATUS_CODE_DATA *) StatusCodeBuffer)) { > > gBS->FreePool (StatusCodeData); > > } > > to > > if (StatusCodeData !=3D (EFI_STATUS_CODE_DATA *) StatusCodeBuffer) { > > gBS->FreePool (StatusCodeData); > > } > > > > When report status code with ExtendedData data, and the extended data > > can fit in the local static buffer, there is no need to use AllocatePoo= l to hold > > the ExtendedData data. > > > > This patch is just to do the enhancement to avoid using AllocatePool. > > > > Cc: Jian J Wang > > Cc: Hao Wu > > Cc: Michael Turner > > Cc: Liming Gao > > Contributed-under: TianoCore Contribution Agreement 1.1 > > Signed-off-by: Dandan Bi > > --- > > .../Library/DxeReportStatusCodeLib/ReportStatusCodeLib.c | 9 +++++++-- > > .../RuntimeDxeReportStatusCodeLib/ReportStatusCodeLib.c | 9 +++++++-= - > > 2 files changed, 14 insertions(+), 4 deletions(-) > > > > diff --git > > a/MdeModulePkg/Library/DxeReportStatusCodeLib/ReportStatusCodeLib.c > > b/MdeModulePkg/Library/DxeReportStatusCodeLib/ReportStatusCodeLib.c > > index b28dc5c3bb..c88be5a1a3 100644 > > --- > > a/MdeModulePkg/Library/DxeReportStatusCodeLib/ReportStatusCodeLib.c > > +++ > > b/MdeModulePkg/Library/DxeReportStatusCodeLib/ReportStatusCodeLib.c > > @@ -505,13 +505,18 @@ ReportStatusCodeEx ( > > // > > Tpl =3D gBS->RaiseTPL (TPL_HIGH_LEVEL); > > gBS->RestoreTPL (Tpl); > > > > StatusCodeData =3D NULL; > > - if (Tpl <=3D TPL_NOTIFY) { > > + if (ExtendedDataSize <=3D (MAX_EXTENDED_DATA_SIZE - sizeof > > + (EFI_STATUS_CODE_DATA))) { > > // > > - // Allocate space for the Status Code Header and its buffer > > + // Use Buffer instead of allocating if possible. > > + // > > + StatusCodeData =3D (EFI_STATUS_CODE_DATA *)Buffer; } else if (Tpl= <=3D > > + TPL_NOTIFY){ > > + // > > + // If Buffer is not big enough, allocate space for the Status Code > > + Header and its buffer > > // > > gBS->AllocatePool (EfiBootServicesData, sizeof (EFI_STATUS_CODE_DA= TA) > > + ExtendedDataSize, (VOID **)&StatusCodeData); > > } > > > > if (StatusCodeData =3D=3D NULL) { > > diff --git > > a/MdeModulePkg/Library/RuntimeDxeReportStatusCodeLib/ReportStatusC > > odeLib.c > > b/MdeModulePkg/Library/RuntimeDxeReportStatusCodeLib/ReportStatusC > > odeLib.c > > index b73103517a..75e2f88ad2 100644 > > --- > > a/MdeModulePkg/Library/RuntimeDxeReportStatusCodeLib/ReportStatusC > > odeLib.c > > +++ > > b/MdeModulePkg/Library/RuntimeDxeReportStatusCodeLib/ReportStatusC > > od > > +++ eLib.c > > @@ -635,11 +635,14 @@ ReportStatusCodeEx ( > > if (mHaveExitedBootServices) { > > if (sizeof (EFI_STATUS_CODE_DATA) + ExtendedDataSize > > > MAX_EXTENDED_DATA_SIZE) { > > return EFI_OUT_OF_RESOURCES; > > } > > StatusCodeData =3D (EFI_STATUS_CODE_DATA *) StatusCodeBuffer; > > - } else { > > + } else if (sizeof (EFI_STATUS_CODE_DATA) + ExtendedDataSize > > > MAX_EXTENDED_DATA_SIZE) { > > + // > > + // Only use AllocatePool for larger ExtendedData. > > + // > > if (gBS =3D=3D NULL || gBS->AllocatePool =3D=3D NULL || gBS->FreeP= ool =3D=3D NULL) { > > return EFI_UNSUPPORTED; > > } > > > > // > > @@ -648,10 +651,12 @@ ReportStatusCodeEx ( > > StatusCodeData =3D NULL; > > gBS->AllocatePool (EfiBootServicesData, sizeof (EFI_STATUS_CODE_DA= TA) > > + ExtendedDataSize, (VOID **)&StatusCodeData); > > if (StatusCodeData =3D=3D NULL) { > > return EFI_OUT_OF_RESOURCES; > > } > > + } else { > > + StatusCodeData =3D (EFI_STATUS_CODE_DATA *) StatusCodeBuffer; > > } > > > > // > > // Fill in the extended data header > > // > > @@ -678,11 +683,11 @@ ReportStatusCodeEx ( > > Status =3D InternalReportStatusCode (Type, Value, Instance, CallerId= , > > StatusCodeData); > > > > // > > // Free the allocated buffer > > // > > - if (!mHaveExitedBootServices) { > > + if (StatusCodeData !=3D (EFI_STATUS_CODE_DATA *) StatusCodeBuffer) { > > gBS->FreePool (StatusCodeData); > > } > > > > return Status; > > } > > -- > > 2.18.0.windows.1 > > > > _______________________________________________ > > edk2-devel mailing list > > edk2-devel@lists.01.org > > https://lists.01.org/mailman/listinfo/edk2-devel