Liming, Adding error message/assert when PEI and DXE databases are not compatible is a good idea.
But I also think we should do everything we can to prevent PEI and DXE databases from ever being incompatible. Especially if 100% of the PCDs used are accessed as DynamixEx. Thanks, Mike > -----Original Message----- > From: Gao, Liming > Sent: Wednesday, February 17, 2016 7:07 AM > To: Tim Lewis <[email protected]>; Zeng, Star <[email protected]>; > Kinney, Michael > D <[email protected]>; [email protected] > Subject: RE: PCD Local Token Numbers in PEI/DXE > > Tim: > I think we can enhance PCD driver and Build tool to do this check. If the > mismatch > happens, PcdDxe driver will report error message, and not install PCD > protocol. > > Thanks > Liming > -----Original Message----- > From: edk2-devel [mailto:[email protected]] On Behalf Of Tim > Lewis > Sent: Monday, February 15, 2016 1:59 PM > To: Zeng, Star <[email protected]>; Kinney, Michael D > <[email protected]>; > [email protected] > Subject: Re: [edk2] PCD Local Token Numbers in PEI/DXE > > Star -- > > There are many cases where the PEI FV is not updated because it resides in a > portion of > the flash that is specially protected, often by a pin on the motherboard. In > many > platforms, this recovery firmware in PEI is never updated throughout the life > of the > platform. But DXE might be updated many times. > > We handle the mismatch case often, for HOBs, etc. We design the HOBs, UEFI > variables, > etc. in such a way that the detection can be detected or worked-around. > > But with PCDs, we cannot detect the mismatch without special knowledge, > because the PCD > driver will return the wrong PCD value. > > Tim > > -----Original Message----- > From: Zeng, Star [mailto:[email protected]] > Sent: Sunday, February 14, 2016 9:54 PM > To: Tim Lewis <[email protected]>; Kinney, Michael D > <[email protected]>; > [email protected] > Cc: Zeng, Star <[email protected]> > Subject: RE: PCD Local Token Numbers in PEI/DXE > > Tim, > > Basically, I aware PEI as the high-reliability, high-security portion of the > BIOS. > I mean for this case, should PEI FV be also updated? > > And the mismatch seems not a special case for PCD. Consider one situation > that new DXE > wants to consume a HOB produced by new PEI, the new DXE could also not work > with old > PEI. > > Thanks, > Star > -----Original Message----- > From: Tim Lewis [mailto:[email protected]] > Sent: Monday, February 15, 2016 1:45 PM > To: Zeng, Star; Kinney, Michael D; [email protected] > Subject: RE: PCD Local Token Numbers in PEI/DXE > > Star -- > > Consider the case where PEI FV is inside the flash boot block, but DXE FV is > outside of > the flash boot block. This case is very common, using PEI as the > high-reliability, > high-security portion of the BIOS. > > You are correct, there is another case which is: > > Build #1: PEI database A does not have PCD X, DXE database A has PCD X Build > #2: PEI > database A has PCD X, DXE database A does not have PCD X > > If the PEI from #2 is combined with the DXE from #1, there will be two copies > of the > PCD (one in PEI, one in DXE). In our work-around, we searched PEI before DXE. > The > better method might be to timestamp (rather than assume PEI before DXE). > > Tim > > -----Original Message----- > From: Zeng, Star [mailto:[email protected]] > Sent: Sunday, February 14, 2016 9:33 PM > To: Kinney, Michael D <[email protected]>; Tim Lewis > <[email protected]>; > [email protected] > Subject: RE: PCD Local Token Numbers in PEI/DXE > > Mike, > > Could one PCD be accessed using both methods Dynamic and DynamicEx in one > build? > As I know, it could not. > > Another problem is about where the default PCD value stores. Currently, PEI > and PEI+DXE > phase consumed PCDs are stored in PEI PCD database, and only DXE phase > consumed PCDs > are stored in DXE PCD database. > If the new PEI consumes 4+ PCDs, the 4+ PCDs will be stored in PEI database, > and if DXE > also consumes them, the new DXE would not work with old PEI. And is it a > valid case to > only update DXE FV? > > > Thanks, > Star > -----Original Message----- > From: edk2-devel [mailto:[email protected]] On Behalf Of > Kinney, Michael > D > Sent: Thursday, February 11, 2016 2:21 AM > To: Tim Lewis; [email protected]; Kinney, Michael D > Subject: Re: [edk2] PCD Local Token Numbers in PEI/DXE > > Tim, > > All good ideas to evaluate. > > We did design in the Dynamic PCDs with generated local tokens to minimize the > size > overhead of the PCD database for source builds. We can do some size impact > analysis of > these ideas to see which one makes the most sense. > > The database is currently optimized for Dynamic PCDs. When a DynamicEx PCD > is used it > is internally translated to a Dynamic request. I think all of the ideas here > require > this concept to be reversed. We need to optimized the database for DynamicEx > and never > reference Dynamic part of database to process a DynamicEx request. If > Dynamic is used, > it can either be internally translated to a DynamicEx request with a fixed > token space > guid or be processed as a local token. In mixed Dynamic/DynamicEx > environments, the > same PCD may be accessed using both methods. Current design supports this > mixed env, > so we need to make sure that aspect is not broken if we change internal > code/database. > > Best regards, > > Mike > > > -----Original Message----- > > From: Tim Lewis [mailto:[email protected]] > > Sent: Wednesday, February 10, 2016 9:50 AM > > To: Kinney, Michael D <[email protected]>; > > [email protected] > > Subject: RE: PCD Local Token Numbers in PEI/DXE > > > > Mike -- > > > > Yes, we use all DynamicEx PCDs because we use a large number of binary > > deliverables in certain segments. > > > > It would be a much simpler database design if the look up was purely a > > GUID/token number/SkuId look-up (no local token numbers at all). The > > existing Dynamic PCDs could be supported by assigning them a single > > GUID. That is, Dynamic PCDs would be translated up to DynamicEx by > > using gEfiDynamicPcdGuid. Or we could deprecate Dynamic. Or make it > > auto-translate > to DynamicEx. > > > > Tim > > > > > > -----Original Message----- > > From: edk2-devel [mailto:[email protected]] On Behalf Of > > Kinney, Michael D > > Sent: Wednesday, February 10, 2016 9:41 AM > > To: Tim Lewis <[email protected]>; [email protected]; Kinney, > > Michael D <[email protected]> > > Subject: Re: [edk2] PCD Local Token Numbers in PEI/DXE > > > > Hi Tim, > > > > Your description looks correct to me. The current design does have an > > assumption that the PCD database used in PEI is aligned with the PCD > > database used in > DXE. > > > > If the number of Dynamic/DynamicEx PCDs used in a platform changes, > > then the PCD database associated with the PCD PEIM and PCD DXE Driver both > > need to be > updated. > > > > I think it would be good to work on a method that allows the PEI > > Database and DXE Database to be updated independently. > > > > In general, if binary modules are used, then Dynamic PCDs can not be > > used. Instead all Dynamic PCDs must be updated to by DynamicEx PCDs. > > That is for binary modules that performs PCD Get/Set operations through the > > PCD > PPI/Protocol. > > > > I think the gap here is that the PCD database does not have a build > > mode that forces use of only DynamicEx (TokenSpaceGuid, TokenNumber) for > > the entire > database contents. > > If we added that build mode (so there are no "local token numbers") > > then the PEI database and DXE database could be updated independently. > > > > This build mode could only be enabled if there are no Dynamic PCDs. > > In fact, this build mode could be automatic if there are no Dynamic PCDs in > > DSC file. > > > > Mike > > > > > -----Original Message----- > > > From: edk2-devel [mailto:[email protected]] On Behalf > > > Of Tim Lewis > > > Sent: Tuesday, February 9, 2016 10:24 AM > > > To: [email protected] > > > Subject: [edk2] PCD Local Token Numbers in PEI/DXE > > > > > > We have run into an interesting problem with the PCD database when > > > the PEI and DXE databases were not built at the same time. This > > > happens with boot-block type arrangements. This is not a Dynamic vs. > > > DynamicEx > issue. > > > > > > Short form: > > > > > > > > > 1) The standard PCD database for Dynamic/DynamicEx PCDs is broken > > > into two > > pieces, > > > based on whether the PCD is access by a PEIM, a DXE driver, or both. > > > The pieces are embedded directly into the PCD PEIM and PCD DXE > > > driver that produces > > the PCD services. > > > > > > 2) Each Dynamic/DynamicEx PCD is assigned a unique "local token > > > number" This > > > number is different than the token number which is in the PCD > > > declaration in the .dec file. This number is assigned at build time. > > > > > > 3) If a later version of the DXE PCD driver is a) built in a later > > > codebase > > where > > > there are more or less PEI-access PCDs, but later b) executed with a > > > version of the PEI PCD database from the earlier codebase where > > > there were fewer, it causes a problem. For example, if the new PEI > > > PCD database has 4 more, the new DXE PCD database will start its > > > numbering at +4. But when it is executed with the old PEI PCD > > > database, it will end up looking up the wrong PCD > > > > > > We're not sure what the best course is to solve this. Frankly, the > > > PCD database format is a muddle. We have a temporary work-around, > > > but we're wondering if anyone has thoughts on a good solution. > > > > > > Thanks, > > > > > > Tim > > > _______________________________________________ > > > edk2-devel mailing list > > > [email protected] > > > https://lists.01.org/mailman/listinfo/edk2-devel > > _______________________________________________ > > edk2-devel mailing list > > [email protected] > > https://lists.01.org/mailman/listinfo/edk2-devel > _______________________________________________ > edk2-devel mailing list > [email protected] > https://lists.01.org/mailman/listinfo/edk2-devel > _______________________________________________ > edk2-devel mailing list > [email protected] > https://lists.01.org/mailman/listinfo/edk2-devel _______________________________________________ edk2-devel mailing list [email protected] https://lists.01.org/mailman/listinfo/edk2-devel

