Hi Pawel, Let's add Ray and Vincent to this topic to help pick the best option.
If everything is rebuilt from sources, then just removing the union member will work. The challenge is that the non-Itanium CPU archs that may depend on the current binary layout of these structures. This could be a binary PEI CPU module, DXE CPU module, SMM CPU module, MM CPU modules, UEFI App/Shell App that use the PPI or HOB. Even if we define a new HOB format, we have to decide when it is used to support compatibility. Perhaps always keep the current logic if < 1024 CPUs. If number of CPUs >= 1024, then produce the new format of CPU information and update all consumers to look for new format and use that with higher priority than the old format. Another option is to keep the current format and allow multiple HOBs to be produced if the CPU information does not fit in the single HOB size limit of 64KB. Then update all consumers to look for 1 or more HOBs to collect all the information. This approach removes the CPU number limit as long as there is enough temp RAM for the multiple HOBs. Best regards, Mike > -----Original Message----- > From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of Pawel Polawski > Sent: Monday, December 12, 2022 9:18 PM > To: devel@edk2.groups.io; Kinney, Michael D <michael.d.kin...@intel.com> > Cc: Gao, Liming <gaolim...@byosoft.com.cn>; Liu, Zhiguang > <zhiguang....@intel.com> > Subject: Re: [edk2-devel] PATCH v1 1/1 MdePkg: Remove Itanium leftover data > structure > > Hi Mike > > If there is a chance you were able to check if I should introduce new > PPI with a new GUID for my pull request? Or we can push forward with > exiting version? > > In case of some changes needed - I could start implementing them right > away so we could try to process everything before Christmas break. > > Let me know what is your opinion. > > Best regards, > Pawel > > W dniu 1.12.2022 o 21:23, Paweł Poławski pisze: > > Hi Mike, > > > > Thank you for the fast response. > > I will be waiting for your guidance on this topic. > > > > Btw - I am too new in the EDK2 world to witness this Itanium > > deprecation back in 2019. How such process looks like? > > If it starts with update in documentation followed by the changes > > in the code? How long is the intermediate part where both - new and old > > functionality needs to be supported? > > > > Best regards, > > Pawel > > > > > > W dniu 1.12.2022 o 18:01, Michael D Kinney pisze: > >> Hi Pawel, > >> > >> Thank you for the patch. I agree this fixes the size issue. > >> > >> However, this structure and the associated PPI are defined in the PI Spec > >> and other modules may depend on the structure layout and would have to be > >> rebuilt after this structure change. > >> > >> It would be better to have a backwards compatible change here and I do > >> not have a specific proposal yet that both reduces the size and > >> preserves backwards compatibility. > >> > >> There have been examples in the past where we have had to introduce > >> a new version of a PPI with a new GUID for this type of change. > >> > >> I will get back to you on this topic in a few days. > >> > >> Thanks, > >> > >> Mike > >> > >>> -----Original Message----- > >>> From: Paweł Poławski <ppola...@redhat.com> > >>> Sent: Thursday, December 1, 2022 7:36 AM > >>> To: devel@edk2.groups.io > >>> Cc: Kinney, Michael D <michael.d.kin...@intel.com>; Gao, Liming > >>> <gaolim...@byosoft.com.cn>; Liu, Zhiguang > >>> <zhiguang....@intel.com> > >>> Subject: [edk2-devel] PATCH v1 1/1 MdePkg: Remove Itanium leftover > >>> data structure > >>> > >>> Itanium support has been removed from EDK2 aroun 2019. > >>> ITANIUM_HANDOFF_STATUS data structure looks to be > >>> some leftover from that process. > >>> > >>> There is also positive sidefect of this data structure removal. > >>> Due to HOB allocation type used in PEI stage there is a limit > >>> how much data about virtual CPU can be hold. This limit result > >>> in only 1024 vCPU can be used by VM. > >>> With Itanium related data structure removed more allocated space > >>> can be used for vCPU data and with current allocation limit > >>> will change from 1024 to around 8k vCPUs. > >>> > >>> Cc: Michael D Kinney <michael.d.kin...@intel.com> > >>> Cc: Liming Gao <gaolim...@byosoft.com.cn> > >>> Cc: Zhiguang Liu <zhiguang....@intel.com> > >>> > >>> Signed-off-by: Paweł Poławski <ppola...@redhat.com> > >>> --- > >>> MdePkg/Include/Ppi/SecPlatformInformation.h | 44 -------------------- > >>> 1 file changed, 44 deletions(-) > >>> > >>> diff --git a/MdePkg/Include/Ppi/SecPlatformInformation.h > >>> b/MdePkg/Include/Ppi/SecPlatformInformation.h > >>> index 02b0711f189e..fbcd205acd96 100644 > >>> --- a/MdePkg/Include/Ppi/SecPlatformInformation.h > >>> +++ b/MdePkg/Include/Ppi/SecPlatformInformation.h > >>> @@ -84,49 +84,6 @@ typedef union { > >>> > >>> typedef EFI_HEALTH_FLAGS X64_HANDOFF_STATUS; > >>> typedef EFI_HEALTH_FLAGS IA32_HANDOFF_STATUS; > >>> -/// > >>> -/// The hand-off status structure for Itanium architecture. > >>> -/// > >>> -typedef struct { > >>> - /// > >>> - /// SALE_ENTRY state : 3 = Recovery_Check > >>> - /// and 0 = RESET or Normal_Boot phase. > >>> - /// > >>> - UINT8 BootPhase; > >>> - /// > >>> - /// Firmware status on entry to SALE. > >>> - /// > >>> - UINT8 FWStatus; > >>> - UINT16 Reserved1; > >>> - UINT32 Reserved2; > >>> - /// > >>> - /// Geographically significant unique processor ID assigned by PAL. > >>> - /// > >>> - UINT16 ProcId; > >>> - UINT16 Reserved3; > >>> - UINT8 IdMask; > >>> - UINT8 EidMask; > >>> - UINT16 Reserved4; > >>> - /// > >>> - /// Address to make PAL calls. > >>> - /// > >>> - UINT64 PalCallAddress; > >>> - /// > >>> - /// If the entry state is RECOVERY_CHECK, this contains the PAL_RESET > >>> - /// return address, and if entry state is RESET, this contains > >>> - /// address for PAL_authentication call. > >>> - /// > >>> - UINT64 PalSpecialAddress; > >>> - /// > >>> - /// GR35 from PALE_EXIT state. > >>> - /// > >>> - UINT64 SelfTestStatus; > >>> - /// > >>> - /// GR37 from PALE_EXIT state. > >>> - /// > >>> - UINT64 SelfTestControl; > >>> - UINT64 MemoryBufferRequired; > >>> -} ITANIUM_HANDOFF_STATUS; > >>> > >>> /// > >>> /// EFI_SEC_PLATFORM_INFORMATION_RECORD. > >>> @@ -134,7 +91,6 @@ typedef struct { > >>> typedef union { > >>> IA32_HANDOFF_STATUS IA32HealthFlags; > >>> X64_HANDOFF_STATUS x64HealthFlags; > >>> - ITANIUM_HANDOFF_STATUS ItaniumHealthFlags; > >>> } EFI_SEC_PLATFORM_INFORMATION_RECORD; > >>> > >>> /** > >>> -- > >>> 2.38.1 > >> > >> > >> > >> > >> > >> > > > > > -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#97321): https://edk2.groups.io/g/devel/message/97321 Mute This Topic: https://groups.io/mt/95384808/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-