* Re: [edk2-devel] [PATCH V5 0/2] Re-design CcProbeLib
[not found] <170FF9CEE7D1A481.21714@groups.io>
@ 2022-09-06 6:11 ` Yao, Jiewen
0 siblings, 0 replies; only message in thread
From: Yao, Jiewen @ 2022-09-06 6:11 UTC (permalink / raw)
To: devel@edk2.groups.io, Xu, Min M
Cc: Gerd Hoffmann, Aktas, Erdem, James Bottomley, Tom Lendacky,
Yuan Yu
Reviewed-by: Jiewen Yao <Jiewen.yao@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.xu@intel.com>; Gerd Hoffmann
> <kraxel@redhat.com>; Aktas, Erdem <erdemaktas@google.com>; James
> Bottomley <jejb@linux.ibm.com>; Yao, Jiewen <jiewen.yao@intel.com>;
> Tom Lendacky <thomas.lendacky@amd.com>; Yuan Yu
> <yuanyu@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 <kraxel@redhat.com>
> Cc: Erdem Aktas <erdemaktas@google.com>
> Cc: James Bottomley <jejb@linux.ibm.com>
> Cc: Jiewen Yao <jiewen.yao@intel.com>
> Cc: Tom Lendacky <thomas.lendacky@amd.com>
> Cc: Yuan Yu <yuanyu@google.com>
> Acked: Gerd Hoffmann <kraxel@redhat.com>
> Signed-off-by: Min Xu <min.m.xu@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
>
>
>
>
>
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2022-09-06 6:11 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <170FF9CEE7D1A481.21714@groups.io>
2022-09-06 6:11 ` [edk2-devel] [PATCH V5 0/2] Re-design CcProbeLib Yao, Jiewen
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox