On April 29, 2022 11:07 AM, Ni Ray wrote:
> 
> Min,
> You cannot use C global variable in PEIM.
> Can you add a new field in _CPU_MP_DATA?
> 
The reason why C global variable cannot be used in PEIM is that in some 
scenario PEIM is executed in FLASH so that the value of C global variable 
cannot be kept in different calls. But I don't think it is a problem in this 
situation.
1. This global variable is to keep the PcdConfidentialComputingGuestAttribute 
in mCcGuestAttr. So if this is Tdx guest, then the global variable can be kept 
(CC_GUEST_IS_TDX (mCcGuestAttr) == TRUE). 
2. If this is Non-Td guest, then even the global variable cannot be kept, 
CC_GUEST_IS_TDX (mCcGuestAttr) is FALSE. So mCcGuestAttr can still work.

There is another solution that we can use CcProbe (which is in 
MdePkg/CcProbeLib). CcProbe checks the work area to fetch the guest type. It 
calls FixedPcdGet32 (PcdOvmfWorkAreaBase) so there is no SMP safe issue in 
PcdLib.

As to a new field in CPU_MP_DATA, Tdx guest doesn't create CPU_MP_DATA object 
in MpInitLibInitialize, instead it return right after it detects the working 
guest is Tdx guest. So this fix will be more complicated than above 2 solutions.

Ray, What's your thought?

Thanks
Min


-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#89455): https://edk2.groups.io/g/devel/message/89455
Mute This Topic: https://groups.io/mt/90768905/21656
Group Owner: devel+ow...@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-


Reply via email to