From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [216.205.24.124]) by mx.groups.io with SMTP id smtpd.web11.856.1610694999495651505 for ; Thu, 14 Jan 2021 23:16:39 -0800 Authentication-Results: mx.groups.io; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=KuB5jzJ4; spf=pass (domain: redhat.com, ip: 216.205.24.124, mailfrom: lersek@redhat.com) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1610694998; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=UrSyvgiHgFb0HVzVRIpcCzke28zTd8wuH23Kpu+937o=; b=KuB5jzJ4ArKZC//hgkxEhUUPlxCMpdqOEqHTVMxKtJGp9bbNoMHcPMHtsmUG5ZPUshlHPF 7ZjiPqqVD6PdSwd+Bi2i/UUFOu7BiHP8armbnpnmJul2C923vN1r1VxITAOyEcnysMlAxg OUqQmER0WphFq2XIoP7QDfLobtBiITw= Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-35-G-o49BYFMaWRfEypMyMISA-1; Fri, 15 Jan 2021 02:16:36 -0500 X-MC-Unique: G-o49BYFMaWRfEypMyMISA-1 Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 142C380A5C0; Fri, 15 Jan 2021 07:16:35 +0000 (UTC) Received: from lacos-laptop-7.usersys.redhat.com (ovpn-112-223.ams2.redhat.com [10.36.112.223]) by smtp.corp.redhat.com (Postfix) with ESMTP id B455660BF3; Fri, 15 Jan 2021 07:16:33 +0000 (UTC) Subject: Re: [PATCH v3 17/18] UefiCpuPkg: CpuIo2Smm: Support of CpuIo driver under StandaloneMm To: Kun Qin , devel@edk2.groups.io Cc: Eric Dong , Ray Ni , Rahul Kumar References: <20210114223637.2737-1-kun.q@outlook.com> From: "Laszlo Ersek" Message-ID: <7141bb8c-97f9-2a52-3e90-b28f7ee2b155@redhat.com> Date: Fri, 15 Jan 2021 08:16:32 +0100 MIME-Version: 1.0 In-Reply-To: X-Scanned-By: MIMEDefang 2.79 on 10.5.11.12 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=lersek@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit On 01/14/21 23:36, Kun Qin wrote: > This change abstracts standalone and traditional MM driver entrypoints > into separate files to match corresponding driver entrypoint interfaces. > > Cc: Eric Dong > Cc: Ray Ni > Cc: Laszlo Ersek > Cc: Rahul Kumar > > Signed-off-by: Kun Qin > --- > > Notes: > v3: > - Revert file name change of "CpuIo2Smm" for review and git history > concern [Laszlo] > - Break driver entrypoint into separate patch [Laszlo] > > v2: > - Removed "EFIAPI" for internal functions. > > UefiCpuPkg/CpuIo2Smm/CpuIo2Smm.c | 9 ++---- > UefiCpuPkg/CpuIo2Smm/CpuIo2StandaloneMm.c | 32 ++++++++++++++++++++ > UefiCpuPkg/CpuIo2Smm/CpuIo2TraditionalMm.c | 32 ++++++++++++++++++++ > UefiCpuPkg/CpuIo2Smm/CpuIo2Smm.h | 12 ++++++++ > UefiCpuPkg/CpuIo2Smm/CpuIo2Smm.inf | 3 +- > UefiCpuPkg/CpuIo2Smm/{CpuIo2Smm.inf => CpuIo2StandaloneMm.inf} | 18 +++++------ > UefiCpuPkg/UefiCpuPkg.dsc | 5 +++ > 7 files changed, 93 insertions(+), 18 deletions(-) > > diff --git a/UefiCpuPkg/CpuIo2Smm/CpuIo2Smm.c b/UefiCpuPkg/CpuIo2Smm/CpuIo2Smm.c > index c0a2baecee03..cc99fd59a184 100644 > --- a/UefiCpuPkg/CpuIo2Smm/CpuIo2Smm.c > +++ b/UefiCpuPkg/CpuIo2Smm/CpuIo2Smm.c > @@ -371,18 +371,13 @@ CpuIoServiceWrite ( > /** > The module Entry Point SmmCpuIoProtocol driver > > - @param[in] ImageHandle The firmware allocated handle for the EFI image. > - @param[in] SystemTable A pointer to the EFI System Table. > - > @retval EFI_SUCCESS The entry point is executed successfully. > @retval Other Some error occurs when executing this entry point. > > **/ > EFI_STATUS > -EFIAPI > -SmmCpuIo2Initialize ( > - IN EFI_HANDLE ImageHandle, > - IN EFI_SYSTEM_TABLE *SystemTable > +CommonCpuIo2Initialize ( > + VOID > ) > { > EFI_STATUS Status; > diff --git a/UefiCpuPkg/CpuIo2Smm/CpuIo2StandaloneMm.c b/UefiCpuPkg/CpuIo2Smm/CpuIo2StandaloneMm.c > new file mode 100644 > index 000000000000..d6707d7bc8bc > --- /dev/null > +++ b/UefiCpuPkg/CpuIo2Smm/CpuIo2StandaloneMm.c > @@ -0,0 +1,32 @@ > +/** @file > + Produces the SMM CPU I/O Protocol. > + > +Copyright (c) 2009 - 2018, Intel Corporation. All rights reserved.
> +Copyright (c) Microsoft Corporation. > +SPDX-License-Identifier: BSD-2-Clause-Patent > + > +**/ > + > +#include > + > +#include "CpuIo2Smm.h" > + > +/** > + The module Entry Point for Standalone MM CpuIoProtocol driver > + > + @param[in] ImageHandle The firmware allocated handle for the EFI image. > + @param[in] SystemTable A pointer to the EFI System Table. > + > + @retval EFI_SUCCESS The entry point is executed successfully. > + @retval Other Some error occurs when executing this entry point. > + > +**/ > +EFI_STATUS > +EFIAPI > +StandaloneMmCpuIo2Initialize ( > + IN EFI_HANDLE ImageHandle, > + IN EFI_MM_SYSTEM_TABLE *SystemTable > + ) > +{ > + return CommonCpuIo2Initialize (); > +} > diff --git a/UefiCpuPkg/CpuIo2Smm/CpuIo2TraditionalMm.c b/UefiCpuPkg/CpuIo2Smm/CpuIo2TraditionalMm.c > new file mode 100644 > index 000000000000..5a4f41b160a4 > --- /dev/null > +++ b/UefiCpuPkg/CpuIo2Smm/CpuIo2TraditionalMm.c > @@ -0,0 +1,32 @@ > +/** @file > + Produces the SMM CPU I/O Protocol. > + > +Copyright (c) 2009 - 2018, Intel Corporation. All rights reserved.
> +Copyright (c) Microsoft Corporation. > +SPDX-License-Identifier: BSD-2-Clause-Patent > + > +**/ > + > +#include > + > +#include "CpuIo2Smm.h" > + > +/** > + The module Entry Point for Traditional MM CpuIoProtocol driver > + > + @param[in] ImageHandle The firmware allocated handle for the EFI image. > + @param[in] SystemTable A pointer to the EFI System Table. > + > + @retval EFI_SUCCESS The entry point is executed successfully. > + @retval Other Some error occurs when executing this entry point. > + > +**/ > +EFI_STATUS > +EFIAPI > +TraditionalMmCpuIo2Initialize ( > + IN EFI_HANDLE ImageHandle, > + IN EFI_SYSTEM_TABLE *SystemTable > + ) > +{ > + return CommonCpuIo2Initialize (); > +} > diff --git a/UefiCpuPkg/CpuIo2Smm/CpuIo2Smm.h b/UefiCpuPkg/CpuIo2Smm/CpuIo2Smm.h > index c80261945f71..eda9fbb090cd 100644 > --- a/UefiCpuPkg/CpuIo2Smm/CpuIo2Smm.h > +++ b/UefiCpuPkg/CpuIo2Smm/CpuIo2Smm.h > @@ -153,4 +153,16 @@ CpuIoServiceWrite ( > IN VOID *Buffer > ); > > +/** > + The module Entry Point SmmCpuIoProtocol driver > + > + @retval EFI_SUCCESS The entry point is executed successfully. > + @retval Other Some error occurs when executing this entry point. > + > +**/ > +EFI_STATUS > +CommonCpuIo2Initialize ( > + VOID > + ); > + > #endif > diff --git a/UefiCpuPkg/CpuIo2Smm/CpuIo2Smm.inf b/UefiCpuPkg/CpuIo2Smm/CpuIo2Smm.inf > index b743a5e0e316..8c5d0542e3da 100644 > --- a/UefiCpuPkg/CpuIo2Smm/CpuIo2Smm.inf > +++ b/UefiCpuPkg/CpuIo2Smm/CpuIo2Smm.inf > @@ -14,7 +14,7 @@ [Defines] > MODULE_TYPE = DXE_SMM_DRIVER > VERSION_STRING = 1.0 > PI_SPECIFICATION_VERSION = 0x0001000A > - ENTRY_POINT = SmmCpuIo2Initialize > + ENTRY_POINT = TraditionalMmCpuIo2Initialize > > # > # The following information is for reference only and not required by the build tools. > @@ -25,6 +25,7 @@ [Defines] > [Sources] > CpuIo2Smm.c > CpuIo2Smm.h > + CpuIo2TraditionalMm.c > > [Packages] > MdePkg/MdePkg.dec > diff --git a/UefiCpuPkg/CpuIo2Smm/CpuIo2Smm.inf b/UefiCpuPkg/CpuIo2Smm/CpuIo2StandaloneMm.inf > similarity index 60% > copy from UefiCpuPkg/CpuIo2Smm/CpuIo2Smm.inf > copy to UefiCpuPkg/CpuIo2Smm/CpuIo2StandaloneMm.inf > index b743a5e0e316..c9fd3068cec4 100644 > --- a/UefiCpuPkg/CpuIo2Smm/CpuIo2Smm.inf > +++ b/UefiCpuPkg/CpuIo2Smm/CpuIo2StandaloneMm.inf > @@ -2,19 +2,19 @@ > # Produces the SMM CPU I/O 2 Protocol by using the services of the I/O Library. > # > # Copyright (c) 2009 - 2018, Intel Corporation. All rights reserved.
> +# Copyright (c) Microsoft Corporation. > # SPDX-License-Identifier: BSD-2-Clause-Patent > # > ## > > [Defines] > INF_VERSION = 0x00010005 > - BASE_NAME = CpuIo2Smm > - MODULE_UNI_FILE = CpuIo2Smm.uni > - FILE_GUID = A47EE2D8-F60E-42fd-8E58-7BD65EE4C29B > - MODULE_TYPE = DXE_SMM_DRIVER > + BASE_NAME = CpuIo2StandaloneMm > + FILE_GUID = E3121A26-BB1C-4A18-8E23-2EA3F0412248 > + MODULE_TYPE = MM_STANDALONE > VERSION_STRING = 1.0 > - PI_SPECIFICATION_VERSION = 0x0001000A > - ENTRY_POINT = SmmCpuIo2Initialize > + PI_SPECIFICATION_VERSION = 0x00010032 > + ENTRY_POINT = StandaloneMmCpuIo2Initialize > > # > # The following information is for reference only and not required by the build tools. > @@ -25,12 +25,13 @@ [Defines] > [Sources] > CpuIo2Smm.c > CpuIo2Smm.h > + CpuIo2StandaloneMm.c > > [Packages] > MdePkg/MdePkg.dec > > [LibraryClasses] > - UefiDriverEntryPoint > + StandaloneMmDriverEntryPoint > BaseLib > DebugLib > IoLib > @@ -42,6 +43,3 @@ [Protocols] > > [Depex] > TRUE > - > -[UserExtensions.TianoCore."ExtraFiles"] > - CpuIo2SmmExtra.uni I'm unsure whether this section in the new INF file should be re-created instead, with a customized UNI file. I think it may only matter for UPT (the packaging tool); I'll let the other reviewers comment on that. The patch looks OK to me. Reviewed-by: Laszlo Ersek Thanks Laszlo > diff --git a/UefiCpuPkg/UefiCpuPkg.dsc b/UefiCpuPkg/UefiCpuPkg.dsc > index 9b56bcaabebe..4e46c600788f 100644 > --- a/UefiCpuPkg/UefiCpuPkg.dsc > +++ b/UefiCpuPkg/UefiCpuPkg.dsc > @@ -38,6 +38,7 @@ [LibraryClasses] > UefiRuntimeServicesTableLib|MdePkg/Library/UefiRuntimeServicesTableLib/UefiRuntimeServicesTableLib.inf > UefiBootServicesTableLib|MdePkg/Library/UefiBootServicesTableLib/UefiBootServicesTableLib.inf > UefiDriverEntryPoint|MdePkg/Library/UefiDriverEntryPoint/UefiDriverEntryPoint.inf > + StandaloneMmDriverEntryPoint|MdePkg/Library/StandaloneMmDriverEntryPoint/StandaloneMmDriverEntryPoint.inf > DxeServicesTableLib|MdePkg/Library/DxeServicesTableLib/DxeServicesTableLib.inf > PeimEntryPoint|MdePkg/Library/PeimEntryPoint/PeimEntryPoint.inf > PeiServicesLib|MdePkg/Library/PeiServicesLib/PeiServicesLib.inf > @@ -94,6 +95,9 @@ [LibraryClasses.common.DXE_SMM_DRIVER] > HobLib|MdePkg/Library/DxeHobLib/DxeHobLib.inf > CpuExceptionHandlerLib|UefiCpuPkg/Library/CpuExceptionHandlerLib/SmmCpuExceptionHandlerLib.inf > > +[LibraryClasses.common.MM_STANDALONE] > + MmServicesTableLib|MdePkg/Library/StandaloneMmServicesTableLib/StandaloneMmServicesTableLib.inf > + > [LibraryClasses.common.UEFI_APPLICATION] > UefiApplicationEntryPoint|MdePkg/Library/UefiApplicationEntryPoint/UefiApplicationEntryPoint.inf > MemoryAllocationLib|MdePkg/Library/UefiMemoryAllocationLib/UefiMemoryAllocationLib.inf > @@ -122,6 +126,7 @@ [Components.IA32, Components.X64] > NULL|UefiCpuPkg/Library/CpuCommonFeaturesLib/CpuCommonFeaturesLib.inf > } > UefiCpuPkg/CpuIo2Smm/CpuIo2Smm.inf > + UefiCpuPkg/CpuIo2Smm/CpuIo2StandaloneMm.inf > UefiCpuPkg/CpuMpPei/CpuMpPei.inf > UefiCpuPkg/CpuS3DataDxe/CpuS3DataDxe.inf > UefiCpuPkg/Library/BaseUefiCpuLib/BaseUefiCpuLib.inf >