Reviewed-by: Jiewen Yao <jiewen....@intel.com> Merged https://github.com/tianocore/edk2/pull/3290
> -----Original Message----- > From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of Min Xu > Sent: Tuesday, August 30, 2022 9:04 AM > To: devel@edk2.groups.io > Cc: Xu, Min M <min.m...@intel.com>; Gerd Hoffmann > <kra...@redhat.com>; Aktas, Erdem <erdemak...@google.com>; James > Bottomley <j...@linux.ibm.com>; Yao, Jiewen <jiewen....@intel.com>; > Tom Lendacky <thomas.lenda...@amd.com>; Yuan Yu > <yua...@google.com> > Subject: [edk2-devel] [PATCH V5 0/2] Re-design CcProbeLib > > BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=3974 > > CcProbeLib once was designed to probe the Confidential Computing guest > type by checking the PcdOvmfWorkArea. But this memory is allocated with > either EfiACPIMemoryNVS or EfiBootServicesData. It cannot be accessed > after ExitBootService. Please see the detailed analysis in BZ#3974. > > To fix this issue, CcProbeLib is re-designed as 2 implementation: > - SecPeiCcProbeLib > - DxeCcProbeLib > > In SecPeiCcProbeLib we check the CC guest type by reading the > PcdOvmfWorkArea. Because it is used in SEC / PEI and we don't worry > about > the issues in BZ#3974. > > In DxeCcProbeLib we cache the GuestType in Ovmf work area in a global > variable. After that the Guest type is returned with the cached value. > So that we don't need to worry about the access to Ovmf work area after > ExitBootService. > > The reason why we probe CC guest type in 2 different ways is the global > variable. Global variable cannot be used in SEC/PEI and CcProbe is called > very frequently. > > Code: https://github.com/mxu9/edk2/tree/CcProbeLib.BZ3974.v4 > > v5 changes: > - Fix typos in commit message. > - No other changes in code. > > v4 changes: > - Read Cc guest type in both DxeCcProbeLib's constructor and CcProbe. So > that we guarantee the Cc guest type is read early enough. > > v3 changes: > - Re-design CcProbeLib to 2 implementation: SecPeiCcProbeLib and > DxeCcProbeLib. The difference between the 2 implementation is the > cache of the CcGuestType. > > v2 changes: > - Reserve Ovmf work-area as RT_DATA. See > https://edk2.groups.io/g/devel/message/92599 > > Cc: Gerd Hoffmann <kra...@redhat.com> > Cc: Erdem Aktas <erdemak...@google.com> > Cc: James Bottomley <j...@linux.ibm.com> > Cc: Jiewen Yao <jiewen....@intel.com> > Cc: Tom Lendacky <thomas.lenda...@amd.com> > Cc: Yuan Yu <yua...@google.com> > Acked: Gerd Hoffmann <kra...@redhat.com> > Signed-off-by: Min Xu <min.m...@intel.com> > > Min M Xu (2): > OvmfPkg: Add SecPeiCcProbeLib > OvmfPkg: Update CcProbeLib to DxeCcProbeLib > > OvmfPkg/IntelTdx/IntelTdxX64.dsc | 3 +- > OvmfPkg/Library/CcProbeLib/DxeCcProbeLib.c | 68 > +++++++++++++++++++ > OvmfPkg/Library/CcProbeLib/DxeCcProbeLib.inf | 26 +++++++ > .../{CcProbeLib.c => SecPeiCcProbeLib.c} | 0 > .../{CcProbeLib.inf => SecPeiCcProbeLib.inf} | 8 +-- > OvmfPkg/OvmfPkgX64.dsc | 5 +- > 6 files changed, 104 insertions(+), 6 deletions(-) > create mode 100644 OvmfPkg/Library/CcProbeLib/DxeCcProbeLib.c > create mode 100644 OvmfPkg/Library/CcProbeLib/DxeCcProbeLib.inf > rename OvmfPkg/Library/CcProbeLib/{CcProbeLib.c => SecPeiCcProbeLib.c} > (100%) > rename OvmfPkg/Library/CcProbeLib/{CcProbeLib.inf => > SecPeiCcProbeLib.inf} (65%) > > -- > 2.29.2.windows.2 > > > > > -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#93181): https://edk2.groups.io/g/devel/message/93181 Mute This Topic: https://groups.io/mt/93340305/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-