Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support 2 CpuMpPei/CpuDxe in One image #2877

Merged
merged 6 commits into from
May 11, 2022
Merged

Conversation

jyao1
Copy link
Contributor

@jyao1 jyao1 commented May 11, 2022

BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=3918

Above BZ reports an issue that commit 88da06c triggers ASSERT in some
scenario. This patch-set is to fix this issue.

As commit 88da06c describes TDVF BSP and APs are simplied and it can
simply use MpInitLibUp instead of MpInitLib. To achieve this goal, we
include 2 CpuMpPei/CpuDxe drivers in OvmfPkgX64 and IntelTdxX64. This
is done by setting different FILE_GUID to these drivers (of the same
name). In the other hand, we import a set of MpInitLibDepLib. These
libs simply depend on the PPI/Protocols. While these PPI/Protocols are
installed according to the guest type.

This patch-set is a replacement of
https://edk2.groups.io/g/devel/message/89381. Please see the dicussion in

The code is at: https://github.com/mxu9/edk2/tree/Rework-MpInitLib.v2

v2 changes:

  • Remove the un-used FILE_GUID definitions.
  • Delete un-used EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST in DispatchTable.
  • Add more comments.

Cc: Eric Dong eric.dong@intel.com
Cc: Ray Ni ray.ni@intel.com
Cc: Brijesh Singh brijesh.singh@amd.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: Gerd Hoffmann kraxel@redhat.com
Signed-off-by: Min Xu min.m.xu@intel.com

Min M Xu (4):
UefiCpuPkg: Revert "UefiCpuPkg: Enable Tdx support in MpInitLib"
OvmfPkg/Sec: Install MpInitLibDepLib PPIs in SecMain.c
OvmfPkg/TdxDxe: Install MpInitLibDepLib protocols
OvmfPkg: Enable 2 different CpuMpPei and CpuDxe drivers

Min Xu (2):
OvmfPkg: Add MpInitLibDepLib related PPI/Protocol definitions
OvmfPkg: Add MpInitLibDepLib

OvmfPkg/Include/Ppi/MpInitLibDep.h | 28 +++++
.../Include/Protocol/MpInitLibDepProtocols.h | 28 +++++
OvmfPkg/IntelTdx/IntelTdxX64.dsc | 30 ++++-
OvmfPkg/IntelTdx/IntelTdxX64.fdf | 3 +
.../MpInitLibDepLib/DxeMpInitLibMpDepLib.inf | 27 +++++
.../MpInitLibDepLib/DxeMpInitLibUpDepLib.inf | 27 +++++
.../Library/MpInitLibDepLib/MpInitLibDepLib.c | 23 ++++
.../MpInitLibDepLib/PeiMpInitLibMpDepLib.inf | 27 +++++
.../MpInitLibDepLib/PeiMpInitLibUpDepLib.inf | 27 +++++
OvmfPkg/OvmfPkg.dec | 5 +
OvmfPkg/OvmfPkgX64.dsc | 55 ++++++++-
OvmfPkg/OvmfPkgX64.fdf | 4 +
OvmfPkg/Sec/SecMain.c | 34 +++++-
OvmfPkg/Sec/SecMain.inf | 2 +
OvmfPkg/TdxDxe/TdxDxe.c | 22 +++-
OvmfPkg/TdxDxe/TdxDxe.inf | 2 +
UefiCpuPkg/Library/MpInitLib/DxeMpInitLib.inf | 3 -
UefiCpuPkg/Library/MpInitLib/MpIntelTdx.h | 69 ------------
UefiCpuPkg/Library/MpInitLib/MpLib.c | 63 +----------
UefiCpuPkg/Library/MpInitLib/MpLibTdx.c | 106 ------------------
UefiCpuPkg/Library/MpInitLib/MpLibTdxNull.c | 69 ------------
UefiCpuPkg/Library/MpInitLib/PeiMpInitLib.inf | 3 -
22 files changed, 343 insertions(+), 314 deletions(-)
create mode 100644 OvmfPkg/Include/Ppi/MpInitLibDep.h
create mode 100644 OvmfPkg/Include/Protocol/MpInitLibDepProtocols.h
create mode 100644 OvmfPkg/Library/MpInitLibDepLib/DxeMpInitLibMpDepLib.inf
create mode 100644 OvmfPkg/Library/MpInitLibDepLib/DxeMpInitLibUpDepLib.inf
create mode 100644 OvmfPkg/Library/MpInitLibDepLib/MpInitLibDepLib.c
create mode 100644 OvmfPkg/Library/MpInitLibDepLib/PeiMpInitLibMpDepLib.inf
create mode 100644 OvmfPkg/Library/MpInitLibDepLib/PeiMpInitLibUpDepLib.inf
delete mode 100644 UefiCpuPkg/Library/MpInitLib/MpIntelTdx.h
delete mode 100644 UefiCpuPkg/Library/MpInitLib/MpLibTdx.c
delete mode 100644 UefiCpuPkg/Library/MpInitLib/MpLibTdxNull.c

mxu9 added 6 commits May 11, 2022 16:16
BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=3918

This reverts commit 88da06c.
This commit triggers the ASSERT in Non-Td guest.

Cc: Eric Dong <eric.dong@intel.com>
Cc: Ray Ni <ray.ni@intel.com>
Cc: Brijesh Singh <brijesh.singh@amd.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: Gerd Hoffmann <kraxel@redhat.com>
Signed-off-by: Min Xu <min.m.xu@intel.com>
Tested-by: Tom Lendacky <thomas.lendacky@amd.com>
Acked-by: Gerd Hoffmann <kraxel@redhat.com>
Reviewed-by: Ray Ni <ray.ni@intel.com>
BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=3918

MpInitLibDepLib is a set of libraries which depend on PPI/Protocol.
This patch defines the related PPI/Protocols in OvmfPkg.

Cc: Eric Dong <eric.dong@intel.com>
Cc: Ray Ni <ray.ni@intel.com>
Cc: Brijesh Singh <brijesh.singh@amd.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: Gerd Hoffmann <kraxel@redhat.com>
Signed-off-by: Min Xu <min.m.xu@intel.com>
Tested-by: Tom Lendacky <thomas.lendacky@amd.com>
Acked-by: Gerd Hoffmann <kraxel@redhat.com>
Acked-by: Jiewen Yao <jiewen.yao@intel.com>
Reviewed-by: Ray Ni <ray.ni@intel.com>
BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=3918

There are 4 MpInitLibDepLib:
 - PeiMpInitLibMpDepLib:
   MpInitLib multi-processor dependency
 - PeiMpInitLibUpDepLib:
   MpInitLib unique-processor dependency
 - DxeMpInitLibMpDepLib:
   MpInitLib multi-processor dependency
 - DxeMpInitLibUpDepLib
   MpInitLib unique-processor dependency

The Pei libs depend on the corresponding PPI. The Dxe libs depend on the
corresponding Protocol.

Cc: Eric Dong <eric.dong@intel.com>
Cc: Ray Ni <ray.ni@intel.com>
Cc: Brijesh Singh <brijesh.singh@amd.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: Gerd Hoffmann <kraxel@redhat.com>
Signed-off-by: Min Xu <min.m.xu@intel.com>
Tested-by: Tom Lendacky <thomas.lendacky@amd.com>
Acked-by: Gerd Hoffmann <kraxel@redhat.com>
Acked-by: Jiewen Yao <jiewen.yao@intel.com>
Reviewed-by: Ray Ni <ray.ni@intel.com>
BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=3918

Td guest should use MpInitLibUp, other guest use the MpInitLib. So
in SecMain.c different PPI is installed according to the working
guest type.

Cc: Eric Dong <eric.dong@intel.com>
Cc: Ray Ni <ray.ni@intel.com>
Cc: Brijesh Singh <brijesh.singh@amd.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: Gerd Hoffmann <kraxel@redhat.com>
Signed-off-by: Min Xu <min.m.xu@intel.com>
Tested-by: Tom Lendacky <thomas.lendacky@amd.com>
Acked-by: Gerd Hoffmann <kraxel@redhat.com>
Acked-by: Jiewen Yao <jiewen.yao@intel.com>
Reviewed-by: Ray Ni <ray.ni@intel.com>
BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=3918

In Td guest CpuDxe driver uses the MpInitLibUp, the other guest type
use the MpInitLib. So we install different Protocols according to
the current working guest type.

Cc: Eric Dong <eric.dong@intel.com>
Cc: Ray Ni <ray.ni@intel.com>
Cc: Brijesh Singh <brijesh.singh@amd.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: Gerd Hoffmann <kraxel@redhat.com>
Signed-off-by: Min Xu <min.m.xu@intel.com>
Tested-by: Tom Lendacky <thomas.lendacky@amd.com>
Acked-by: Gerd Hoffmann <kraxel@redhat.com>
Acked-by: Jiewen Yao <jiewen.yao@intel.com>
Reviewed-by: Ray Ni <ray.ni@intel.com>
BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=3918

In OvmfPkgX64 we enable 2 different CpuMpPei and CpuDxe drivers. The
difference between the drivers is the MpInitLib or MpInitLibUp. This is
acomplished by adding a MpInitLibDepLib.

In IntelTdxX64 we enable 2 versions of CpuDxe drivers. It is because PEI
is skipped in IntelTdxX64.

Cc: Eric Dong <eric.dong@intel.com>
Cc: Ray Ni <ray.ni@intel.com>
Cc: Brijesh Singh <brijesh.singh@amd.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: Gerd Hoffmann <kraxel@redhat.com>
Signed-off-by: Min Xu <min.m.xu@intel.com>
Tested-by: Tom Lendacky <thomas.lendacky@amd.com>
Acked-by: Gerd Hoffmann <kraxel@redhat.com>
Acked-by: Jiewen Yao <jiewen.yao@intel.com>
Reviewed-by: Ray Ni <ray.ni@intel.com>
@jyao1 jyao1 added the push Auto push patch series in PR if all checks pass label May 11, 2022
@mergify mergify bot merged commit deee7a1 into tianocore:master May 11, 2022
@jyao1 jyao1 deleted the patch branch May 20, 2022 00:58
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
push Auto push patch series in PR if all checks pass
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants