We've been hit by this same kind of issue and it's really painful, especially as it affects shipping systems.
Long term I think we need an extensible/revisioned data format so we can get forwards and backwards compatibility between NVRAM data and FW. > -----Original Message----- > From: edk2-devel [mailto:[email protected]] On Behalf Of > Larry Cleeton > Sent: Friday, August 05, 2016 9:35 AM > To: Ye, Ting <[email protected]>; [email protected] > Subject: Re: [edk2] Breaking change issue with > NetworkPkg/Ip6Dxe/Ip6ConfigImlp.[c, h] > > I agree with your assessment about leaving the data structure as it is. I > just > wanted to highlight it as it may impact others. > > The bottom line is my development group is entirely responsible for vetting > any changes coming from the EDK2 into our product. This one slipped by us. > > --Larry > > -----Original Message----- > From: Ye, Ting [mailto:[email protected]] > Sent: Thursday, August 4, 2016 8:25 PM > To: Larry Cleeton <[email protected]>; [email protected] > Subject: RE: Breaking change issue with > NetworkPkg/Ip6Dxe/Ip6ConfigImlp.[c, h] > > Hi Larry, > > We are very sorry about the impact you suffered today. We made the > change in early 2013 to support the existing NVRAM variable when firmware > image was updated from IA32 to X64. Unfortunately we introduced an > incompatibility issue as you raised. Now we prefer to keep the existing > definition, since if we change it back that would introduce another similar > incompatibility issue. What do you think about this? > > Best Regards, > Ye Ting > > -----Original Message----- > From: edk2-devel [mailto:[email protected]] On Behalf Of > Larry Cleeton > Sent: Wednesday, August 03, 2016 4:55 AM > To: [email protected] > Subject: [edk2] Breaking change issue with > NetworkPkg/Ip6Dxe/Ip6ConfigImlp.[c, h] > > This commit (fdc4b0b147b386e966e99893526181dfae9eaeef) changed a data > structure that is stored in an NVRAM variable. > See NetworkPkg/Ip6Dxe/Ip6ConfigImpl.[c,h] > > This data structure: > > typedef struct { > UINT16 Offset; > UINTN DataSize; > EFI_IP6_CONFIG_DATA_TYPE DataType; > } IP6_CONFIG_DATA_RECORD; > > Is now: > > typedef struct { > UINT16 Offset; > UINT32 DataSize; <---------------- changed size in > 64bit > environments > EFI_IP6_CONFIG_DATA_TYPE DataType; > } IP6_CONFIG_DATA_RECORD; > > Unfortunately with a 64bit implementation this current structure is now > *not* compatible with an existing NVRAM variable written with the previous > version of the structure. It's causing me considerable grief so I'm just > sharing > the discovery. It would only impact you if you update some 64bit machine's > firmware with a new version containing this change. > > --Larry > _______________________________________________ > 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

