public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
From: "Michael D Kinney" <michael.d.kinney@intel.com>
To: Laszlo Ersek <lersek@redhat.com>,
	edk2-devel-groups-io <devel@edk2.groups.io>
Cc: Abdul Lateef Attar <abdattar@amd.com>,
	Abner Chang <abner.chang@amd.com>,
	"Warkentin, Andrei" <andrei.warkentin@intel.com>,
	Andrew Fish <afish@apple.com>,
	Ard Biesheuvel <ardb+tianocore@kernel.org>,
	"S, Ashraf Ali" <ashraf.ali.s@intel.com>,
	Bibo Mao <maobibo@loongson.cn>,
	"Feng, Bob C" <bob.c.feng@intel.com>,
	"West, Catharine" <catharine.west@intel.com>,
	Chao Li <lichao@loongson.cn>,
	"Chiu, Chasel" <chasel.chiu@intel.com>,
	"Duggapu, Chinni B" <chinni.b.duggapu@intel.com>,
	Duke Zhai <duke.zhai@amd.com>,
	"Aktas, Erdem" <erdemaktas@google.com>,
	Eric Xing <eric.xing@amd.com>,
	"Gerd Hoffmann" <kraxel@redhat.com>,
	"Guo, Gua" <gua.guo@intel.com>, "Dong, Guo" <guo.dong@intel.com>,
	Igniculus Fu <igniculus.fu@amd.com>,
	"Lu, James" <james.lu@intel.com>,
	"Yao, Jiewen" <jiewen.yao@intel.com>,
	Kelly Steele <kelly.steele@intel.com>, Ken Yao <ken.yao@amd.com>,
	Leif Lindholm <quic_llindhol@quicinc.com>,
	Liming Gao <gaoliming@byosoft.com.cn>,
	"Michael Roth" <michael.roth@amd.com>,
	"Xu, Min M" <min.m.xu@intel.com>,
	"Desimone, Nathaniel L" <nathaniel.l.desimone@intel.com>,
	Paul Grimes <paul.grimes@amd.com>,
	"Kumar, Rahul R" <rahul.r.kumar@intel.com>,
	"Ni, Ray" <ray.ni@intel.com>, Rebecca Cran <rebecca@bsdio.com>,
	"Chaganty, Rangasai V" <rangasai.v.chaganty@intel.com>,
	Sami Mujawar <sami.mujawar@arm.com>,
	"Rhodes, Sean" <sean@starlabs.systems>,
	"Zeng, Star" <star.zeng@intel.com>,
	Sunil V L <sunilvl@ventanamicro.com>,
	"Mohapatra, Susovan" <susovan.mohapatra@intel.com>,
	"Kuo, Ted" <ted.kuo@intel.com>,
	Tom Lendacky <thomas.lendacky@amd.com>,
	USER0FISH <libing1202@outlook.com>,
	Xianglai li <lixianglai@loongson.cn>,
	"Chen, Christine" <yuwei.chen@intel.com>,
	caiyuqing379 <caiyuqing_hz@outlook.com>,
	dahogn <dahogn@hotmail.com>, meng-cz <mengcz1126@gmail.com>,
	"Kinney, Michael D" <michael.d.kinney@intel.com>
Subject: Re: [edk2-devel] BaseTools/AutoGen: declare ProcessLibraryConstructorList() for SEC modules
Date: Thu, 8 Feb 2024 16:40:15 +0000	[thread overview]
Message-ID: <CO1PR11MB49295EDF2DF678AC2F0D95B1D2442@CO1PR11MB4929.namprd11.prod.outlook.com> (raw)
In-Reply-To: <d66e5275-b876-51b7-4b68-804760496e0b@redhat.com>

Hi Laszlo,

I need to review the proposed BaseTools/AutoGen change to see what options
are available for compatibility.

My main concern is downstream consumers that may break immediately with
a change like this and we need a way for them to be informed and have
time to update their components just like you outline a sequence to update
the edk2 repo components.

Thanks,

Mike

> -----Original Message-----
> From: Laszlo Ersek <lersek@redhat.com>
> Sent: Wednesday, February 7, 2024 7:40 AM
> To: Kinney, Michael D <michael.d.kinney@intel.com>; edk2-devel-groups-
> io <devel@edk2.groups.io>
> Cc: Abdul Lateef Attar <abdattar@amd.com>; Abner Chang
> <abner.chang@amd.com>; Warkentin, Andrei <andrei.warkentin@intel.com>;
> Andrew Fish <afish@apple.com>; Ard Biesheuvel
> <ardb+tianocore@kernel.org>; S, Ashraf Ali <ashraf.ali.s@intel.com>;
> Bibo Mao <maobibo@loongson.cn>; Feng, Bob C <bob.c.feng@intel.com>;
> West, Catharine <catharine.west@intel.com>; Chao Li
> <lichao@loongson.cn>; Chiu, Chasel <chasel.chiu@intel.com>; Duggapu,
> Chinni B <chinni.b.duggapu@intel.com>; Duke Zhai <duke.zhai@amd.com>;
> Aktas, Erdem <erdemaktas@google.com>; Eric Xing <eric.xing@amd.com>;
> Gerd Hoffmann <kraxel@redhat.com>; Guo, Gua <gua.guo@intel.com>; Dong,
> Guo <guo.dong@intel.com>; Igniculus Fu <igniculus.fu@amd.com>; Lu,
> James <james.lu@intel.com>; Yao, Jiewen <jiewen.yao@intel.com>; Kelly
> Steele <kelly.steele@intel.com>; Ken Yao <ken.yao@amd.com>; Leif
> Lindholm <quic_llindhol@quicinc.com>; Liming Gao
> <gaoliming@byosoft.com.cn>; Michael Roth <michael.roth@amd.com>; Xu,
> Min M <min.m.xu@intel.com>; Desimone, Nathaniel L
> <nathaniel.l.desimone@intel.com>; Paul Grimes <paul.grimes@amd.com>;
> Kumar, Rahul R <rahul.r.kumar@intel.com>; Ni, Ray <ray.ni@intel.com>;
> Rebecca Cran <rebecca@bsdio.com>; Chaganty, Rangasai V
> <rangasai.v.chaganty@intel.com>; Sami Mujawar <sami.mujawar@arm.com>;
> Rhodes, Sean <sean@starlabs.systems>; Zeng, Star <star.zeng@intel.com>;
> Sunil V L <sunilvl@ventanamicro.com>; Mohapatra, Susovan
> <susovan.mohapatra@intel.com>; Kuo, Ted <ted.kuo@intel.com>; Tom
> Lendacky <thomas.lendacky@amd.com>; USER0FISH <libing1202@outlook.com>;
> Xianglai li <lixianglai@loongson.cn>; Chen, Christine
> <yuwei.chen@intel.com>; caiyuqing379 <caiyuqing_hz@outlook.com>; dahogn
> <dahogn@hotmail.com>; meng-cz <mengcz1126@gmail.com>
> Subject: Re: BaseTools/AutoGen: declare ProcessLibraryConstructorList()
> for SEC modules
> 
> On 2/7/24 02:16, Kinney, Michael D wrote:
> > Hi Laszlo,
> >
> > The main issue is that a non-backwards compatible change is being
> > proposed to BaseTools.
> >
> > In order for this to work, BaseTools needs to support both the
> > old style and new style SEC autogen.
> >
> > The guarantee of backwards compatibility is something that is
> required
> > for BaseTools.  Similar to constrains on compilers/linkers.  New
> features
> > can be added, but the old behavior has to always be supported.
> Removing
> > old behavior takes a very long time.
> 
> This change consists of three parts:
> 
> (1) generate the SEC ProcessLibraryConstructorList() declaration in
> "AutoGen.h"
> 
> (2) in those modules that declare SEC ProcessLibraryConstructorList()
> themselves *properly*, remove the (now superfluous, but certainly *not
> conflicting*) manual declarations
> 
> (3) in those modules that declare SEC ProcessLibraryConstructorList()
> themselves *incorrectly*, either manually, or by way of including
> <Library/PeimEntryPoint.h>, remove the *now-conflicting* manual
> declarations / inclusions.
> 
> For modules that fall in category (2), the AutoGen change (1) is
> compatible. The AutoGen change (1) is incompatible only with modules
> that fall into category (3) -- that is, with modules that already
> declare SEC ProcessLibraryConstructorList() incorrectly.
> 
> In other words, the compatibility we're talking about here is *bug
> compatibility*.
> 
> If bug compat is a goal, then the AutoGen patch cannot be merged at
> all.
> 
> If bug compat is not a goal, then:
> 
> (a) the AutoGen change could be / should be merged into the separate
> BaseTools repository at first,
> 
> (b) for edk2, I should rework this series such that:
> 
> - modules from category (3) be brought to category (2) at first (i.e.,
> replacing the bogus calls / manual declarations with proper calls /
> manual declarations),
> 
> - the edk2-basetools dependency in "pip-requirements.txt" be bumped
> from
> 0.1.48 to the new version,
> 
> - finally, the manual (but otherwise, now-correct) declarations in the
> modules of category (2) be eliminated.
> 
> Therefore, my question is: do we intend to preserve bug compatibility?
> 
> Thanks!
> Laszlo
> 
> 
> 
> >
> > Mike
> >
> >> -----Original Message-----
> >> From: Laszlo Ersek <lersek@redhat.com>
> >> Sent: Tuesday, February 6, 2024 4:51 PM
> >> To: edk2-devel-groups-io <devel@edk2.groups.io>
> >> Cc: Abdul Lateef Attar <abdattar@amd.com>; Abner Chang
> >> <abner.chang@amd.com>; Warkentin, Andrei
> <andrei.warkentin@intel.com>;
> >> Andrew Fish <afish@apple.com>; Ard Biesheuvel
> >> <ardb+tianocore@kernel.org>; S, Ashraf Ali <ashraf.ali.s@intel.com>;
> >> Bibo Mao <maobibo@loongson.cn>; Feng, Bob C <bob.c.feng@intel.com>;
> >> West, Catharine <catharine.west@intel.com>; Chao Li
> >> <lichao@loongson.cn>; Chiu, Chasel <chasel.chiu@intel.com>; Duggapu,
> >> Chinni B <chinni.b.duggapu@intel.com>; Duke Zhai
> <duke.zhai@amd.com>;
> >> Aktas, Erdem <erdemaktas@google.com>; Eric Xing <eric.xing@amd.com>;
> >> Gerd Hoffmann <kraxel@redhat.com>; Guo, Gua <gua.guo@intel.com>;
> Dong,
> >> Guo <guo.dong@intel.com>; Igniculus Fu <igniculus.fu@amd.com>; Lu,
> >> James <james.lu@intel.com>; Yao, Jiewen <jiewen.yao@intel.com>;
> Kelly
> >> Steele <kelly.steele@intel.com>; Ken Yao <ken.yao@amd.com>; Leif
> >> Lindholm <quic_llindhol@quicinc.com>; Liming Gao
> >> <gaoliming@byosoft.com.cn>; Kinney, Michael D
> >> <michael.d.kinney@intel.com>; Michael Roth <michael.roth@amd.com>;
> Xu,
> >> Min M <min.m.xu@intel.com>; Desimone, Nathaniel L
> >> <nathaniel.l.desimone@intel.com>; Paul Grimes <paul.grimes@amd.com>;
> >> Kumar, Rahul R <rahul.r.kumar@intel.com>; Ni, Ray
> <ray.ni@intel.com>;
> >> Rebecca Cran <rebecca@bsdio.com>; Chaganty, Rangasai V
> >> <rangasai.v.chaganty@intel.com>; Sami Mujawar
> <sami.mujawar@arm.com>;
> >> Rhodes, Sean <sean@starlabs.systems>; Zeng, Star
> <star.zeng@intel.com>;
> >> Sunil V L <sunilvl@ventanamicro.com>; Mohapatra, Susovan
> >> <susovan.mohapatra@intel.com>; Kuo, Ted <ted.kuo@intel.com>; Tom
> >> Lendacky <thomas.lendacky@amd.com>; USER0FISH
> <libing1202@outlook.com>;
> >> Xianglai li <lixianglai@loongson.cn>; Chen, Christine
> >> <yuwei.chen@intel.com>; caiyuqing379 <caiyuqing_hz@outlook.com>;
> dahogn
> >> <dahogn@hotmail.com>; meng-cz <mengcz1126@gmail.com>
> >> Subject: BaseTools/AutoGen: declare ProcessLibraryConstructorList()
> for
> >> SEC modules
> >>
> >> Bugzillas:
> >> - https://bugzilla.tianocore.org/show_bug.cgi?id=990
> >> - https://bugzilla.tianocore.org/show_bug.cgi?id=991
> >>
> >> Personal build:
> >> - https://github.com/tianocore/edk2/pull/5354
> >>
> >> I'll follow up with two series, in response to this message. One of
> >> those sets makes AutoGen declare ProcessLibraryConstructorList() for
> >> SEC
> >> modules (as Liming suggested), and cleans up the buggy or
> superfluous
> >> manual declarations in edk2. The other set cleans up edk2-platforms
> >> similarly. The edk2 set is intended to be bisectable. The edk2-
> >> platforms
> >> set can't be like that (separate repo anyway). I build-tested
> >> everything
> >> that I could, but the coverage is not complete in edk2-platforms.
> >>
> >> Note that the personal build (PR#5354) failed. The reason is that CI
> >> uses an out-of-tree BaseTools installation / package (version 0.1.48
> at
> >> the moment). This just goes on to show why it's a bad idea to
> develop
> >> BaseTools in separation from edk2: even though the edk2 series *is*
> >> fully bisectable, it's impossible to get it through CI (because CI
> >> ignores the BaseTools update inside the series); and if we get the
> >> central BaseTools patch from the edk2 series into "that other"
> >> (separate) project *first*, then the series will not be bisectable
> any
> >> longer (because the BaseTools/AutoGen update at the front, without
> >> further patches in the series applied, will trigger build errors).
> >>
> >> Laszlo
> >



-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#115270): https://edk2.groups.io/g/devel/message/115270
Mute This Topic: https://groups.io/mt/104210524/7686176
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [rebecca@openfw.io]
-=-=-=-=-=-=-=-=-=-=-=-



  reply	other threads:[~2024-02-08 16:40 UTC|newest]

Thread overview: 36+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-02-07  0:50 [edk2-devel] BaseTools/AutoGen: declare ProcessLibraryConstructorList() for SEC modules Laszlo Ersek
2024-02-07  1:04 ` [edk2-devel] [PATCH 00/11] " Laszlo Ersek
2024-02-07  1:04   ` [edk2-devel] [PATCH 01/11] OvmfPkg/Sec: Use correct prototype of ProcessLibraryConstructorList() Laszlo Ersek
2024-02-14 14:27     ` Ard Biesheuvel
2024-02-07  1:04   ` [edk2-devel] [PATCH 02/11] OvmfPkg/RiscVVirt/Sec: don't #include <Library/PeimEntryPoint.h> Laszlo Ersek
2024-02-07  1:04   ` [edk2-devel] [PATCH 03/11] BaseTools/AutoGen: declare ProcessLibraryConstructorList() for SEC modules Laszlo Ersek
2024-02-07  1:04   ` [edk2-devel] [PATCH 04/11] ArmPlatformPkg: remove SEC ProcessLibraryConstructorList() declarations Laszlo Ersek
2024-02-07  1:04   ` [edk2-devel] [PATCH 05/11] ArmVirtPkg: remove SEC ProcessLibraryConstructorList() declaration Laszlo Ersek
2024-02-07  1:04   ` [edk2-devel] [PATCH 06/11] EmulatorPkg: " Laszlo Ersek
2024-02-07  1:04   ` [edk2-devel] [PATCH 07/11] IntelFsp2Pkg: " Laszlo Ersek
2024-02-07  1:04   ` [edk2-devel] [PATCH 08/11] OvmfPkg/RiscVVirt: " Laszlo Ersek
2024-02-07  1:04   ` [edk2-devel] [PATCH 09/11] OvmfPkg: " Laszlo Ersek
2024-02-07  1:04   ` [edk2-devel] [PATCH 10/11] UefiCpuPkg: " Laszlo Ersek
2024-02-07  1:04   ` [edk2-devel] [PATCH 11/11] UefiPayloadPkg: " Laszlo Ersek
2024-02-07  1:09 ` [edk2-devel] [edk2-platforms PATCH 0/6] clean up SEC ProcessLibraryConstructorList() declarations Laszlo Ersek
2024-02-07  1:09   ` [edk2-devel] [edk2-platforms PATCH 1/6] ChachaniBoardPkg: remove SEC ProcessLibraryConstructorList() declaration Laszlo Ersek
2024-02-07  1:09   ` [edk2-devel] [edk2-platforms PATCH 2/6] BeagleBoardPkg: " Laszlo Ersek
2024-02-07  1:09   ` [edk2-devel] [edk2-platforms PATCH 3/6] QuarkPlatformPkg: " Laszlo Ersek
2024-02-07  1:09   ` [edk2-devel] [edk2-platforms PATCH 4/6] SimicsOpenBoardPkg: fix SEC ProcessLibraryConstructorList() prototype Laszlo Ersek
2024-02-09  0:07     ` Nate DeSimone
2024-02-09  9:24       ` Laszlo Ersek
2024-02-09 22:53         ` Nate DeSimone
2024-02-07  1:09   ` [edk2-devel] [edk2-platforms PATCH 5/6] LoongArchQemuPkg: " Laszlo Ersek
2024-02-19  2:21     ` Chao Li
2024-02-19 20:08       ` Laszlo Ersek
2024-02-07  1:09   ` [edk2-devel] [edk2-platforms PATCH 6/6] SG2042Pkg: clean up SEC ProcessLibraryConstructorList() declaration Laszlo Ersek
2024-02-14 14:25   ` [edk2-devel] [edk2-platforms PATCH 0/6] clean up SEC ProcessLibraryConstructorList() declarations Ard Biesheuvel
2024-02-07  1:16 ` [edk2-devel] BaseTools/AutoGen: declare ProcessLibraryConstructorList() for SEC modules Michael D Kinney
2024-02-07 15:40   ` Laszlo Ersek
2024-02-08 16:40     ` Michael D Kinney [this message]
2024-02-15  7:57       ` Laszlo Ersek
2024-02-15 17:29         ` Michael D Kinney
2024-02-16 14:16           ` Laszlo Ersek
2024-02-16 17:21             ` Michael D Kinney
2024-02-24 18:02           ` Laszlo Ersek
2024-02-24 18:37           ` Laszlo Ersek

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-list from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=CO1PR11MB49295EDF2DF678AC2F0D95B1D2442@CO1PR11MB4929.namprd11.prod.outlook.com \
    --to=devel@edk2.groups.io \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox