From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by spool.mail.gandi.net (Postfix) with ESMTPS id 36BB09416BF for ; Wed, 10 Apr 2024 13:57:54 +0000 (UTC) DKIM-Signature: a=rsa-sha256; bh=V6wfAxd4rWBzj05c0mO73kLU9WrC5CSu2yL6pNANI3c=; c=relaxed/simple; d=groups.io; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References:Precedence:List-Subscribe:List-Help:Sender:List-Id:Mailing-List:Delivered-To:Resent-Date:Resent-From:Reply-To:List-Unsubscribe-Post:List-Unsubscribe; s=20240206; t=1712757472; v=1; b=Eg15oCdky8qBUD0efsUp0WS2pqQq62JBPT93iMxDThFEtAr6O/nxXC/qNL79Do1Nsry6QHOw 4EiSnaA/oCrsQmuv198ucuy9fWMgugyPcFOEekpfYRm9H+5LQLuIv7CJeXBmddzgVXuxQ0PqS8O RELz9h/3mkLTIWIsQajskbF1STDT+YJqSedXM8zSsK8IcLv31i2UOqI8fTXPth61E3LO/vo5jTA seiE7sqD2isLMj6OQW8tREnxTr38hSktBKnKQov6y4jmQ0RsDCsswhAm4OZB8JPPi9jFeitgGdE P2e9XJ0brE5lOFwJumOFbNPxUWslpFJhuSrfTQKIZqzXA== X-Received: by 127.0.0.2 with SMTP id hQKyYY7687511xESE2Jh40QH; Wed, 10 Apr 2024 06:57:52 -0700 X-Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.9]) by mx.groups.io with SMTP id smtpd.web10.306.1712757450770649687 for ; Wed, 10 Apr 2024 06:57:52 -0700 X-CSE-ConnectionGUID: 6S15X3w7S1KPZmyA8qc1nA== X-CSE-MsgGUID: omY1Ckz4RiuX0AD9qLNyTw== X-IronPort-AV: E=McAfee;i="6600,9927,11039"; a="30602194" X-IronPort-AV: E=Sophos;i="6.07,190,1708416000"; d="scan'208";a="30602194" X-Received: from fmviesa001.fm.intel.com ([10.60.135.141]) by orvoesa101.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 10 Apr 2024 06:57:52 -0700 X-CSE-ConnectionGUID: Hikt/XRdTxid9qGTmNldqg== X-CSE-MsgGUID: gs5WkoWNR3+IonFGmNTrEg== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.07,190,1708416000"; d="scan'208";a="51778194" X-Received: from sh1gapp1009.ccr.corp.intel.com ([10.239.189.219]) by fmviesa001.fm.intel.com with ESMTP; 10 Apr 2024 06:57:50 -0700 From: "Wu, Jiaxin" To: devel@edk2.groups.io Cc: Ard Biesheuvel , Jiewen Yao , Gerd Hoffmann , Ray Ni Subject: [edk2-devel] [PATCH v1 12/13] OvmfPkg/PlatformPei: Relocate SmBases in PEI phase Date: Wed, 10 Apr 2024 21:57:23 +0800 Message-Id: <20240410135724.15344-13-jiaxin.wu@intel.com> In-Reply-To: <20240410135724.15344-1-jiaxin.wu@intel.com> References: <20240410135724.15344-1-jiaxin.wu@intel.com> Precedence: Bulk List-Subscribe: List-Help: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Resent-Date: Wed, 10 Apr 2024 06:57:52 -0700 Resent-From: jiaxin.wu@intel.com Reply-To: devel@edk2.groups.io,jiaxin.wu@intel.com List-Unsubscribe-Post: List-Unsubscribe=One-Click List-Unsubscribe: X-Gm-Message-State: rWZlm8e26K5WhN55JEjO1sKrx7686176AA= X-GND-Status: LEGIT Authentication-Results: spool.mail.gandi.net; dkim=pass header.d=groups.io header.s=20240206 header.b=Eg15oCdk; dmarc=fail reason="SPF not aligned (relaxed), DKIM not aligned (relaxed)" header.from=intel.com (policy=none); spf=pass (spool.mail.gandi.net: domain of bounce@groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce@groups.io This patch is to consume SmmRelocationInit for SmBase Relocation. Cc: Ard Biesheuvel Cc: Jiewen Yao Cc: Gerd Hoffmann Cc: Ray Ni Signed-off-by: Jiaxin Wu --- OvmfPkg/PlatformPei/Platform.c | 1 + OvmfPkg/PlatformPei/Platform.h | 5 +++ OvmfPkg/PlatformPei/PlatformPei.inf | 5 ++- OvmfPkg/PlatformPei/SmmRelocation.c | 80 +++++++++++++++++++++++++++++++++++++ 4 files changed, 90 insertions(+), 1 deletion(-) create mode 100644 OvmfPkg/PlatformPei/SmmRelocation.c diff --git a/OvmfPkg/PlatformPei/Platform.c b/OvmfPkg/PlatformPei/Platform.c index f5dc41c3a8..47ccf9e2b9 100644 --- a/OvmfPkg/PlatformPei/Platform.c +++ b/OvmfPkg/PlatformPei/Platform.c @@ -365,8 +365,9 @@ InitializePlatform ( MiscInitialization (PlatformInfoHob); } IntelTdxInitialize (); InstallFeatureControlCallback (PlatformInfoHob); + InstallSmmRelocationCallback (); return EFI_SUCCESS; } diff --git a/OvmfPkg/PlatformPei/Platform.h b/OvmfPkg/PlatformPei/Platform.h index 1cf44844a7..e2057623b7 100644 --- a/OvmfPkg/PlatformPei/Platform.h +++ b/OvmfPkg/PlatformPei/Platform.h @@ -76,10 +76,15 @@ InstallFeatureControlCallback ( VOID InstallClearCacheCallback ( VOID ); +VOID +InstallSmmRelocationCallback ( + VOID + ); + VOID AmdSevInitialize ( IN EFI_HOB_PLATFORM_INFO *PlatformInfoHob ); diff --git a/OvmfPkg/PlatformPei/PlatformPei.inf b/OvmfPkg/PlatformPei/PlatformPei.inf index ad52be3065..d7a4fd5ffe 100644 --- a/OvmfPkg/PlatformPei/PlatformPei.inf +++ b/OvmfPkg/PlatformPei/PlatformPei.inf @@ -1,10 +1,10 @@ ## @file # Platform PEI driver # # This module provides platform specific function to detect boot mode. -# Copyright (c) 2006 - 2019, Intel Corporation. All rights reserved.
+# Copyright (c) 2006 - 2024, Intel Corporation. All rights reserved.
# # SPDX-License-Identifier: BSD-2-Clause-Patent # ## @@ -30,10 +30,11 @@ MemDetect.c MemTypeInfo.c Platform.c Platform.h IntelTdx.c + SmmRelocation.c [Packages] EmbeddedPkg/EmbeddedPkg.dec MdePkg/MdePkg.dec MdeModulePkg/MdeModulePkg.dec @@ -63,10 +64,11 @@ MtrrLib MemEncryptSevLib PcdLib CcExitLib PlatformInitLib + SmmRelocationLib [Pcd] gUefiOvmfPkgTokenSpaceGuid.PcdOvmfPeiMemFvBase gUefiOvmfPkgTokenSpaceGuid.PcdOvmfPeiMemFvSize gUefiOvmfPkgTokenSpaceGuid.PcdOvmfDxeMemFvBase @@ -137,9 +139,10 @@ [Ppis] gEfiPeiMasterBootModePpiGuid gEfiPeiMpServicesPpiGuid gEfiPeiReadOnlyVariable2PpiGuid + gEdkiiPeiMpServices2PpiGuid [Depex] TRUE diff --git a/OvmfPkg/PlatformPei/SmmRelocation.c b/OvmfPkg/PlatformPei/SmmRelocation.c new file mode 100644 index 0000000000..63db7101b5 --- /dev/null +++ b/OvmfPkg/PlatformPei/SmmRelocation.c @@ -0,0 +1,80 @@ +/**@file + Install a callback to do smm relocation. + + Copyright (c) 2024, Intel Corporation. All rights reserved. + + SPDX-License-Identifier: BSD-2-Clause-Patent +**/ + +#include +#include +#include +#include +#include "Platform.h" + +/** + Notification function called when EDKII_PEI_MP_SERVICES2_PPI becomes available. + + @param[in] PeiServices Indirect reference to the PEI Services Table. + @param[in] NotifyDescriptor Address of the notification descriptor data + structure. + @param[in] Ppi Address of the PPI that was installed. + + @return Status of the notification. The status code returned from this + function is ignored. +**/ +STATIC +EFI_STATUS +EFIAPI +OnMpServices2Available ( + IN EFI_PEI_SERVICES **PeiServices, + IN EFI_PEI_NOTIFY_DESCRIPTOR *NotifyDescriptor, + IN VOID *Ppi + ) +{ + EDKII_PEI_MP_SERVICES2_PPI *MpServices2; + EFI_STATUS Status; + + DEBUG ((DEBUG_INFO, "%a: %a\n", gEfiCallerBaseName, __func__)); + + MpServices2 = Ppi; + + // + // Smm Relocation Initialize. + // + Status = SmmRelocationInit (MpServices2); + if (EFI_ERROR (Status)) { + DEBUG ((DEBUG_WARN, "OnMpServices2Available: Not able to execute Smm Relocation Init. Status: %r\n", Status)); + } + + return EFI_SUCCESS; +} + +// +// Notification object for registering the callback, for when +// EDKII_PEI_MP_SERVICES2_PPI becomes available. +// +STATIC CONST EFI_PEI_NOTIFY_DESCRIPTOR mMpServices2Notify = { + EFI_PEI_PPI_DESCRIPTOR_NOTIFY_CALLBACK | // Flags + EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST, + &gEdkiiPeiMpServices2PpiGuid, // Guid + OnMpServices2Available // Notify +}; + +VOID +InstallSmmRelocationCallback ( + VOID + ) +{ + EFI_STATUS Status; + + Status = PeiServicesNotifyPpi (&mMpServices2Notify); + if (EFI_ERROR (Status)) { + DEBUG (( + DEBUG_ERROR, + "%a: failed to set up MP Services2 callback: %r\n", + __func__, + Status + )); + } +} -- 2.16.2.windows.1 -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#117600): https://edk2.groups.io/g/devel/message/117600 Mute This Topic: https://groups.io/mt/105442006/7686176 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [rebecca@openfw.io] -=-=-=-=-=-=-=-=-=-=-=-