From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from atlmailgw1.ami.com (atlmailgw1.ami.com [63.147.10.40]) (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 DCCB881E23 for ; Thu, 10 Nov 2016 07:44:21 -0800 (PST) X-AuditID: ac1060b2-a6bff7000000467b-16-582495d64ad4 Received: from atlms2.us.megatrends.com (atlms2.us.megatrends.com [172.16.96.152]) (using TLS with cipher AES128-SHA (128/128 bits)) (Client did not present a certificate) by (Symantec Messaging Gateway) with SMTP id 45.24.18043.6D594285; Thu, 10 Nov 2016 10:44:23 -0500 (EST) Received: from ATLMS1.us.megatrends.com ([fe80::8c55:daf0:ef05:5605]) by atlms2.us.megatrends.com ([fe80::29dc:a91e:ea0c:cdeb%12]) with mapi id 14.03.0123.003; Thu, 10 Nov 2016 10:44:21 -0500 From: Felix Poludov To: "Gao, Liming" , "Yao, Jiewen" , "edk2-devel@lists.01.org" Thread-Topic: [PATCH 0/2] MdePkg: UiLib library Thread-Index: AdI6m0xU2GzkXpsESA6bOeJKPIUocQAWQyagABdz3yAAA/EqMAABgzww Date: Thu, 10 Nov 2016 15:44:21 +0000 Message-ID: <9333E191E0D52B4999CE63A99BA663A00270FF9E7D@atlms1.us.megatrends.com> References: <9333E191E0D52B4999CE63A99BA663A00270FF997D@atlms1.us.megatrends.com> <74D8A39837DF1E4DA445A8C0B3885C50386CDB6E@shsmsx102.ccr.corp.intel.com> <9333E191E0D52B4999CE63A99BA663A00270FF9E17@atlms1.us.megatrends.com> <4A89E2EF3DFEDB4C8BFDE51014F606A14B4B07B6@shsmsx102.ccr.corp.intel.com> In-Reply-To: <4A89E2EF3DFEDB4C8BFDE51014F606A14B4B07B6@shsmsx102.ccr.corp.intel.com> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [172.16.99.93] MIME-Version: 1.0 X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFlrFKsWRmVeSWpSXmKPExsWyRiBhhu71qSoRBtd+GFnsOXSU2WLdRw+L Ffc2sDsweyze85LJo3v2P5YApqgGRpvEvLz8ksSSVIWU1OJkW6WAosyyxORKJYXMFFslQyWF gpzE5NTc1LwSW6XEgoLUvBQlOy4FDGADVJaZp5Cal5yfkpmXbqvkGeyva2FhaqlrqGQXkpGq kJmXll+Um1iSmZ+nkJyfVwJUnZoCFFVI6OLMaGg/xFbwczpTxcrn39gbGBu+M3YxcnJICJhI nPqxh62LkYtDSGA2k8Sn6VNZIJzDjBKzD6xnB6liE1CR2HT2AjNIQkSglVFixdybYO3CAnoS py5fAysSEdCXWLZkKhuE7SYxc0c3K4jNIqAqsXXBNKB6Dg5egUCJK7tFIBasZZJov3qZCaSG UyBEYsmCPmYQm1FATOL7qTVgcWYBcYlbT+YzQZwqILFkz3lmCFtU4uXjf6wQtoLElved7CDz mQXyJc5ekwEJ8woISpyc+YRlAqPwLCSTZiFUzUJSBVGiI7Fg9yc2CFtbYtnC18ww9pkDj5mQ xRcwsq9iFEosyclNzMxJLzfUS8zN1EvOz93ECEkam3Ywtlw0P8QowMGoxMMr1qsSIcSaWFZc mXuIUYKDWUmE9wBIiDclsbIqtSg/vqg0J7X4EKMTMLAmMktxgyIPmBrijQ0MpERhHEMTMxNz I3NDSxNzY2Mlcd6iP77hQgLpwFSVnZpakFoEM4SJg1OqgXFeg6DRgusfmNa93jTleHHouU2p m0oZM6pXLU+d3sx7/ELG8q58r9/CvrO96+dYvq1YcXKTp/KHzovzv3aFLrK9+s3gDdfnLtnT v17uD8ry8xJM83419dnkD8pHNWY9//B7lVt84IxP+6TWfUr84+Qh7+51Tv6ycW3OEtc6ebvr d5QdZzX/bJVTYinOSDTUYi4qTgQAitcKyT0DAAA= X-Content-Filtered-By: Mailman/MimeDel 2.1.21 Subject: Re: [PATCH 0/2] MdePkg: UiLib library 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: Thu, 10 Nov 2016 15:44:22 -0000 Content-Language: en-US Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Liming, With your proposal if a projects uses RegisterCreatePopUpHandler(), DSC file= has to be updated to link popup handler NULL library with all the modules that consume CreatePopup(). Since projects tend to evolve (new modules added, existing code changes), th= is sounds like a constant maintenance effort. Project integrator would have to scan source tree after each commit to check= if a new code that uses CretePopup has been added and if new DSC file modif= ications are required. Thanks Felix From: Gao, Liming [mailto:liming.gao@intel.com] Sent: Thursday, November 10, 2016 10:10 AM To: Felix Poludov; Yao, Jiewen; edk2-devel@lists.01.org Subject: RE: [PATCH 0/2] MdePkg: UiLib library Felix: I think two major concerns are here. 1) UefiLib depends on UiLib 2) UiLib class is defined in MdePkg. To resolve it, I have another idea. 1) Introduce new API RegisterCreatePopUpHandler() in UefiLib. Its inpu= t parameter is the handler function that is same to UiCreatePopUpVaList(). 2) Update CreatePopup() to use the registered handler if new handler i= s registered. If no handler, CreatePopup() still uses current logic. 3) If platform wants to customize CreatePopup(), it can provide its li= brary instance with library constructor only. Its library class is NULL, its= library constructor() will consume RegisterCreatePopUpHandler() to register= its handler. This solution is compatible. It just updates UefiLib, doesn't need to upda= te platform DSC files if the platforms don't enable the customized popup. It= doesn't conflict with new UiLib design. New UiLib class introduce new APIs= and update edk2 codes to use new one. For the driver uses old API, this way= can provide the customization. For the driver uses new API, the different U= iLib instances can provide the customization. Thanks Liming From: edk2-devel [mailto:edk2-devel-bounces@lists.01.org] On Behalf Of Felix= Poludov Sent: Thursday, November 10, 2016 9:38 PM To: Yao, Jiewen >; edk2-de= vel@lists.01.org Subject: Re: [edk2] [PATCH 0/2] MdePkg: UiLib library Hi Jiewen, Updating "all the code that uses the old API to use the new API" is not alwa= ys possible. We can certainly update all the EDKII packages; however, it is trickier with= the non-open source packages. For example, the Reference Code we are getting from a chipset vendor is usin= g CreatePopUp. Certainly, if we mark CreatePopUp deprecated (as you have suggested), the ch= ances are, reference code will get eventually updated not to use the functio= n. However, it might take a significant amount of time. Moreover, a project integrators that create board firmware by combining open= -source and close-source packages coming from multiple sources(from multiple= vendors), would have to solve this issue again and again; whereas with my proposal, th= e issue is solved by upgrading EDKII code base (no need to touch third party= packages). Having said that, I do understand your concerns with keeping the library in= MdePkg. How about finding a middle ground between your proposal and my proposal? We can keep UiLib instance in MdePkg, but keep only a minimalistic barebones= implementation there. We can also have another, more advanced, UiLib instance in the MdeModulePkg. This technique is already used in EDKII. For example, MdePkg defines DebugLib library class and provides BaseDebugLib= SerialPort instance. MdeModulePkg provides PeiDxeDebugLibReportStatusCode instance for the same l= ibrary class. Since "advanced" version of Popup is not currently available, there is no ne= ed to create new instance in MdeModulePkg. However, once Eric is ready with his Popup-on-top-of-HII implementation, it= can be added to a new UiLib instance in MdeModulePkg. Also, if new functions are added to UiLib in the future, MdePkg UiLib instan= ce can have a NULL implementation like many other libraries in the MdePkg. What do you think? Thanks Felix From: Yao, Jiewen [mailto:jiewen.yao@intel.com] Sent: Wednesday, November 09, 2016 8:54 PM To: Felix Poludov; edk2-devel@lists.01.org Subject: RE: [PATCH 0/2] MdePkg: UiLib library HI Poludov It is a good idea to have a new UiLib. Both Mike and I give the suggestion to "You could define new lib and update= all the code that uses the old API to use the new API." IMHO, I do not think it is right way to let UefiLib depend on a UiLib. We have plan to resolve it, but since you already have proposal to add UiLib= . I hope it can be resolved here. There is no real need to put UiLib into MdePkg. MdePkg is designed to hold E= FI/PI speciation or industry standard. In this case, I believe MdeModulePkg is a better place. Thank you Yao Jiewen > -----Original Message----- > From: edk2-devel [mailto:edk2-devel-bounces@lists.01.org] On Behalf Of > Felix Poludov > Sent: Wednesday, November 9, 2016 11:44 PM > To: edk2-devel@lists.01.org > Subject: [edk2] [PATCH 0/2] MdePkg: UiLib library > > This series of two patches introduces new UiLib library. > 1. New UiLib library class is added to MdePkg. > The library is intended for functions that produce UI elements. > The patch introduces two functions that produce a popup window: > UiCreatePopUp and UiCreatePopUpVaList. > 2. An instance of UiLib library class is added to MdePkg. > Popup implementation is copied from UefiLib > (CreatePopUp function in UefiLib/Console.c). > 3. MdePkg/UefiLib library is updated to implement CreatePopUp > by calling UiCreatePopUpVaList. > 4. Platform DSC files are updated to add UiLib instance. > > Contributed-under: TianoCore Contribution Agreement 1.0 > Signed-off-by: Felix Polyudov > > AppPkg/AppPkg.dsc | 1 + > ArmPkg/ArmPkg.dsc | 1 + > BeagleBoardPkg/BeagleBoardPkg.dsc | 1 + > CorebootPayloadPkg/CorebootPayloadPkgIa32.dsc | 1 + > CorebootPayloadPkg/CorebootPayloadPkgIa32X64.dsc | 1 + > CryptoPkg/CryptoPkg.dsc | 1 + > DuetPkg/DuetPkgIa32.dsc | 1 + > DuetPkg/DuetPkgX64.dsc | 1 + > EdkCompatibilityPkg/EdkCompatibilityPkg.dsc | 1 + > EmbeddedPkg/EmbeddedPkg.dsc | 1 + > EmulatorPkg/EmulatorPkg.dsc | 1 + > FatPkg/FatPkg.dsc | 1 + > .../IntelFrameworkModulePkg.dsc | 1 + > IntelFsp2WrapperPkg/IntelFsp2WrapperPkg.dsc | 1 + > IntelFspWrapperPkg/IntelFspWrapperPkg.dsc | 1 + > MdeModulePkg/MdeModulePkg.dsc | 1 + > MdePkg/Include/Library/UiLib.h | 71 +++++ > MdePkg/Library/UefiLib/Console.c | 252 > +--------------- > MdePkg/Library/UefiLib/UefiLib.inf | 1 + > MdePkg/Library/UefiLib/UefiLibInternal.h | 1 + > MdePkg/Library/UiLib/UiLib.c | 334 > +++++++++++++++++++++ > MdePkg/Library/UiLib/UiLib.inf | 38 +++ > MdePkg/Library/UiLib/UiLib.uni | 21 ++ > MdePkg/MdePkg.dec | 3 + > NetworkPkg/NetworkPkg.dsc | 1 + > Nt32Pkg/Nt32Pkg.dsc | 1 + > Omap35xxPkg/Omap35xxPkg.dsc | 1 + > OptionRomPkg/OptionRomPkg.dsc | 1 + > OvmfPkg/OvmfPkgIa32.dsc | 1 + > OvmfPkg/OvmfPkgIa32X64.dsc | 1 + > OvmfPkg/OvmfPkgX64.dsc | 1 + > PcAtChipsetPkg/PcAtChipsetPkg.dsc | 1 + > PerformancePkg/PerformancePkg.dsc | 1 + > QuarkPlatformPkg/Quark.dsc | 1 + > QuarkPlatformPkg/QuarkMin.dsc | 1 + > QuarkSocPkg/QuarkSocPkg.dsc | 1 + > SecurityPkg/SecurityPkg.dsc | 1 + > ShellPkg/ShellPkg.dsc | 1 + > SourceLevelDebugPkg/SourceLevelDebugPkg.dsc | 1 + > StdLib/StdLib.dsc | 1 + > UefiCpuPkg/UefiCpuPkg.dsc | 1 + > Vlv2TbltDevicePkg/PlatformPkgGccX64.dsc | 1 + > Vlv2TbltDevicePkg/PlatformPkgIA32.dsc | 1 + > Vlv2TbltDevicePkg/PlatformPkgX64.dsc | 1 + > 44 files changed, 506 insertions(+), 251 deletions(-) > create mode 100644 MdePkg/Include/Library/UiLib.h > create mode 100644 MdePkg/Library/UiLib/UiLib.c > create mode 100644 MdePkg/Library/UiLib/UiLib.inf > create mode 100644 MdePkg/Library/UiLib/UiLib.uni > > Please consider the environment before printing this email. > > The information contained in this message may be confidential and > proprietary to American Megatrends, Inc. This communication is intended > to be read only by the individual or entity to whom it is addressed or by= their > designee. If the reader of this message is not the intended recipient, you= are > on notice that any distribution of this message, in any form, is strictly > prohibited. Please promptly notify the sender by reply e-mail or by > telephone at 770-246-8600, and then delete or destroy all copies of the > transmission. > _______________________________________________ > edk2-devel mailing list > edk2-devel@lists.01.org > https://lists.01.org/mailman/listinfo/edk2-devel Please consider the environment before printing this email. The information contained in this message may be confidential and proprietar= y to American Megatrends, Inc. This communication is intended to be read onl= y by the individual or entity to whom it is addressed or by their designee.= If the reader of this message is not the intended recipient, you are on not= ice that any distribution of this message, in any form, is strictly prohibit= ed. Please promptly notify the sender by reply e-mail or by telephone at 770= -246-8600, and then delete or destroy all copies of the transmission. _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel Please consider the environment before printing this email. The information contained in this message may be confidential and proprietar= y to American Megatrends, Inc. This communication is intended to be read on= ly by the individual or entity to whom it is addressed or by their designee.= If the reader of this message is not the intended recipient, you are on not= ice that any distribution of this message, in any form, is strictly prohibit= ed. Please promptly notify the sender by reply e-mail or by telephone at 77= 0-246-8600, and then delete or destroy all copies of the transmission.