On Wed, 26 Feb 2020 at 23:12, Laszlo Ersek <ler...@redhat.com> wrote:
>
> Clone the Null instance of SmmCpuPlatformHookLib from UefiCpuPkg to
> OvmfPkg. In this patch, customize the lib instance only with the following
> no-op steps:
>
> - Replace Null/NULL references in filenames and comments with Qemu/QEMU
>   references.
> - Update copyright notices.
> - Clean up and rewrap comment blocks.
> - Update INF_VERSION to the latest INF spec version (1.29).
> - Update FILE_GUID.
> - Drop the UNI file.
>
> This patch is best reviewed with:
>
> $ git show --find-copies=43 --find-copies-harder
>
> Cc: Ard Biesheuvel <ard.biesheu...@linaro.org>
> Cc: Igor Mammedov <imamm...@redhat.com>
> Cc: Jiewen Yao <jiewen....@intel.com>
> Cc: Jordan Justen <jordan.l.jus...@intel.com>
> Cc: Michael Kinney <michael.d.kin...@intel.com>
> Cc: Philippe Mathieu-Daudé <phi...@redhat.com>
> Ref: https://bugzilla.tianocore.org/show_bug.cgi?id=1512
> Signed-off-by: Laszlo Ersek <ler...@redhat.com>
> Acked-by: Ard Biesheuvel <ard.biesheu...@linaro.org>
> ---
>

Reviewed-by: Ard Biesheuvel <ard.biesheu...@linaro.org>

> Notes:
>     v2:
>
>     - Pick up Ard's Acked-by, which is conditional on approval from Intel
>       reviewers on Cc. (I'd like to save Ard the churn of re-acking
>       unmodified patches.)
>
>  OvmfPkg/OvmfPkgIa32.dsc                                                      
>                                                                          |  2 
> +-
>  OvmfPkg/OvmfPkgIa32X64.dsc                                                   
>                                                                          |  2 
> +-
>  OvmfPkg/OvmfPkgX64.dsc                                                       
>                                                                          |  2 
> +-
>  UefiCpuPkg/Library/SmmCpuPlatformHookLibNull/SmmCpuPlatformHookLibNull.inf 
> => OvmfPkg/Library/SmmCpuPlatformHookLibQemu/SmmCpuPlatformHookLibQemu.inf | 
> 21 +++++-------
>  UefiCpuPkg/Library/SmmCpuPlatformHookLibNull/SmmCpuPlatformHookLibNull.c => 
> OvmfPkg/Library/SmmCpuPlatformHookLibQemu/SmmCpuPlatformHookLibQemu.c     | 
> 36 ++++++++++++--------
>  5 files changed, 32 insertions(+), 31 deletions(-)
>
> diff --git a/OvmfPkg/OvmfPkgIa32.dsc b/OvmfPkg/OvmfPkgIa32.dsc
> index 19728f20b34e..813995fefad8 100644
> --- a/OvmfPkg/OvmfPkgIa32.dsc
> +++ b/OvmfPkg/OvmfPkgIa32.dsc
> @@ -858,45 +858,45 @@ [Components]
>    UefiCpuPkg/CpuS3DataDxe/CpuS3DataDxe.inf
>
>    #
>    # SMM Initial Program Load (a DXE_RUNTIME_DRIVER)
>    #
>    MdeModulePkg/Core/PiSmmCore/PiSmmIpl.inf
>
>    #
>    # SMM_CORE
>    #
>    MdeModulePkg/Core/PiSmmCore/PiSmmCore.inf
>
>    #
>    # Privileged drivers (DXE_SMM_DRIVER modules)
>    #
>    UefiCpuPkg/CpuIo2Smm/CpuIo2Smm.inf
>    MdeModulePkg/Universal/LockBox/SmmLockBox/SmmLockBox.inf {
>      <LibraryClasses>
>        LockBoxLib|MdeModulePkg/Library/SmmLockBoxLib/SmmLockBoxSmmLib.inf
>    }
>    UefiCpuPkg/PiSmmCpuDxeSmm/PiSmmCpuDxeSmm.inf {
>      <LibraryClasses>
> -      
> SmmCpuPlatformHookLib|UefiCpuPkg/Library/SmmCpuPlatformHookLibNull/SmmCpuPlatformHookLibNull.inf
> +      
> SmmCpuPlatformHookLib|OvmfPkg/Library/SmmCpuPlatformHookLibQemu/SmmCpuPlatformHookLibQemu.inf
>        
> SmmCpuFeaturesLib|OvmfPkg/Library/SmmCpuFeaturesLib/SmmCpuFeaturesLib.inf
>    }
>
>    #
>    # Variable driver stack (SMM)
>    #
>    OvmfPkg/QemuFlashFvbServicesRuntimeDxe/FvbServicesSmm.inf
>    MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteSmm.inf
>    MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmm.inf {
>      <LibraryClasses>
>        NULL|MdeModulePkg/Library/VarCheckUefiLib/VarCheckUefiLib.inf
>    }
>    MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmmRuntimeDxe.inf
>
>  !else
>
>    #
>    # Variable driver stack (non-SMM)
>    #
>    OvmfPkg/QemuFlashFvbServicesRuntimeDxe/FvbServicesRuntimeDxe.inf
>    OvmfPkg/EmuVariableFvbRuntimeDxe/Fvb.inf {
>      <LibraryClasses>
> diff --git a/OvmfPkg/OvmfPkgIa32X64.dsc b/OvmfPkg/OvmfPkgIa32X64.dsc
> index 3c0c229e3a72..a256c7084a7e 100644
> --- a/OvmfPkg/OvmfPkgIa32X64.dsc
> +++ b/OvmfPkg/OvmfPkgIa32X64.dsc
> @@ -872,45 +872,45 @@ [Components.X64]
>    UefiCpuPkg/CpuS3DataDxe/CpuS3DataDxe.inf
>
>    #
>    # SMM Initial Program Load (a DXE_RUNTIME_DRIVER)
>    #
>    MdeModulePkg/Core/PiSmmCore/PiSmmIpl.inf
>
>    #
>    # SMM_CORE
>    #
>    MdeModulePkg/Core/PiSmmCore/PiSmmCore.inf
>
>    #
>    # Privileged drivers (DXE_SMM_DRIVER modules)
>    #
>    UefiCpuPkg/CpuIo2Smm/CpuIo2Smm.inf
>    MdeModulePkg/Universal/LockBox/SmmLockBox/SmmLockBox.inf {
>      <LibraryClasses>
>        LockBoxLib|MdeModulePkg/Library/SmmLockBoxLib/SmmLockBoxSmmLib.inf
>    }
>    UefiCpuPkg/PiSmmCpuDxeSmm/PiSmmCpuDxeSmm.inf {
>      <LibraryClasses>
> -      
> SmmCpuPlatformHookLib|UefiCpuPkg/Library/SmmCpuPlatformHookLibNull/SmmCpuPlatformHookLibNull.inf
> +      
> SmmCpuPlatformHookLib|OvmfPkg/Library/SmmCpuPlatformHookLibQemu/SmmCpuPlatformHookLibQemu.inf
>        
> SmmCpuFeaturesLib|OvmfPkg/Library/SmmCpuFeaturesLib/SmmCpuFeaturesLib.inf
>    }
>
>    #
>    # Variable driver stack (SMM)
>    #
>    OvmfPkg/QemuFlashFvbServicesRuntimeDxe/FvbServicesSmm.inf
>    MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteSmm.inf
>    MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmm.inf {
>      <LibraryClasses>
>        NULL|MdeModulePkg/Library/VarCheckUefiLib/VarCheckUefiLib.inf
>    }
>    MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmmRuntimeDxe.inf
>
>  !else
>
>    #
>    # Variable driver stack (non-SMM)
>    #
>    OvmfPkg/QemuFlashFvbServicesRuntimeDxe/FvbServicesRuntimeDxe.inf
>    OvmfPkg/EmuVariableFvbRuntimeDxe/Fvb.inf {
>      <LibraryClasses>
> diff --git a/OvmfPkg/OvmfPkgX64.dsc b/OvmfPkg/OvmfPkgX64.dsc
> index f6c1d8d228c6..78079b9f8e13 100644
> --- a/OvmfPkg/OvmfPkgX64.dsc
> +++ b/OvmfPkg/OvmfPkgX64.dsc
> @@ -870,45 +870,45 @@ [Components]
>    UefiCpuPkg/CpuS3DataDxe/CpuS3DataDxe.inf
>
>    #
>    # SMM Initial Program Load (a DXE_RUNTIME_DRIVER)
>    #
>    MdeModulePkg/Core/PiSmmCore/PiSmmIpl.inf
>
>    #
>    # SMM_CORE
>    #
>    MdeModulePkg/Core/PiSmmCore/PiSmmCore.inf
>
>    #
>    # Privileged drivers (DXE_SMM_DRIVER modules)
>    #
>    UefiCpuPkg/CpuIo2Smm/CpuIo2Smm.inf
>    MdeModulePkg/Universal/LockBox/SmmLockBox/SmmLockBox.inf {
>      <LibraryClasses>
>        LockBoxLib|MdeModulePkg/Library/SmmLockBoxLib/SmmLockBoxSmmLib.inf
>    }
>    UefiCpuPkg/PiSmmCpuDxeSmm/PiSmmCpuDxeSmm.inf {
>      <LibraryClasses>
> -      
> SmmCpuPlatformHookLib|UefiCpuPkg/Library/SmmCpuPlatformHookLibNull/SmmCpuPlatformHookLibNull.inf
> +      
> SmmCpuPlatformHookLib|OvmfPkg/Library/SmmCpuPlatformHookLibQemu/SmmCpuPlatformHookLibQemu.inf
>        
> SmmCpuFeaturesLib|OvmfPkg/Library/SmmCpuFeaturesLib/SmmCpuFeaturesLib.inf
>    }
>
>    #
>    # Variable driver stack (SMM)
>    #
>    OvmfPkg/QemuFlashFvbServicesRuntimeDxe/FvbServicesSmm.inf
>    MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteSmm.inf
>    MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmm.inf {
>      <LibraryClasses>
>        NULL|MdeModulePkg/Library/VarCheckUefiLib/VarCheckUefiLib.inf
>    }
>    MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmmRuntimeDxe.inf
>
>  !else
>
>    #
>    # Variable driver stack (non-SMM)
>    #
>    OvmfPkg/QemuFlashFvbServicesRuntimeDxe/FvbServicesRuntimeDxe.inf
>    OvmfPkg/EmuVariableFvbRuntimeDxe/Fvb.inf {
>      <LibraryClasses>
> diff --git 
> a/UefiCpuPkg/Library/SmmCpuPlatformHookLibNull/SmmCpuPlatformHookLibNull.inf 
> b/OvmfPkg/Library/SmmCpuPlatformHookLibQemu/SmmCpuPlatformHookLibQemu.inf
> similarity index 43%
> copy from 
> UefiCpuPkg/Library/SmmCpuPlatformHookLibNull/SmmCpuPlatformHookLibNull.inf
> copy to 
> OvmfPkg/Library/SmmCpuPlatformHookLibQemu/SmmCpuPlatformHookLibQemu.inf
> index fab6b30b7a3f..82edeca3d12d 100644
> --- 
> a/UefiCpuPkg/Library/SmmCpuPlatformHookLibNull/SmmCpuPlatformHookLibNull.inf
> +++ b/OvmfPkg/Library/SmmCpuPlatformHookLibQemu/SmmCpuPlatformHookLibQemu.inf
> @@ -1,34 +1,29 @@
>  ## @file
> -#  SMM CPU Platform Hook NULL library instance.
> +#  SMM CPU Platform Hook library instance for QEMU.
>  #
> +#  Copyright (c) 2020, Red Hat, Inc.
>  #  Copyright (c) 2006 - 2015, Intel Corporation. All rights reserved.<BR>
>  #  SPDX-License-Identifier: BSD-2-Clause-Patent
> -#
>  ##
>
> -################################################################################
> -#
> -# Defines Section - statements that will be processed to create a Makefile.
> -#
> -################################################################################
>  [Defines]
> -  INF_VERSION                    = 0x00010005
> -  BASE_NAME                      = SmmCpuPlatformHookLibNull
> -  MODULE_UNI_FILE                = SmmCpuPlatformHookLibNull.uni
> -  FILE_GUID                      = D6494E1B-E06F-4ab5-B64D-48B25AA9EB33
> +  INF_VERSION                    = 1.29
> +  BASE_NAME                      = SmmCpuPlatformHookLibQemu
> +  FILE_GUID                      = 154D6D26-54B8-45BC-BA3A-CBAA20C02A6A
>    MODULE_TYPE                    = DXE_DRIVER
>    VERSION_STRING                 = 1.0
>    LIBRARY_CLASS                  = SmmCpuPlatformHookLib
>
>  #
> -# The following information is for reference only and not required by the 
> build tools.
> +# The following information is for reference only and not required by the 
> build
> +# tools.
>  #
>  #  VALID_ARCHITECTURES           = IA32 X64
>  #
>
>  [Sources]
> -  SmmCpuPlatformHookLibNull.c
> +  SmmCpuPlatformHookLibQemu.c
>
>  [Packages]
>    MdePkg/MdePkg.dec
>    UefiCpuPkg/UefiCpuPkg.dec
> diff --git 
> a/UefiCpuPkg/Library/SmmCpuPlatformHookLibNull/SmmCpuPlatformHookLibNull.c 
> b/OvmfPkg/Library/SmmCpuPlatformHookLibQemu/SmmCpuPlatformHookLibQemu.c
> similarity index 67%
> copy from 
> UefiCpuPkg/Library/SmmCpuPlatformHookLibNull/SmmCpuPlatformHookLibNull.c
> copy to OvmfPkg/Library/SmmCpuPlatformHookLibQemu/SmmCpuPlatformHookLibQemu.c
> index 6c2010dc0a67..257e1d399cc6 100644
> --- a/UefiCpuPkg/Library/SmmCpuPlatformHookLibNull/SmmCpuPlatformHookLibNull.c
> +++ b/OvmfPkg/Library/SmmCpuPlatformHookLibQemu/SmmCpuPlatformHookLibQemu.c
> @@ -1,102 +1,108 @@
>  /** @file
> -SMM CPU Platform Hook NULL library instance.
> +SMM CPU Platform Hook library instance for QEMU.
>
> +Copyright (c) 2020, Red Hat, Inc.
>  Copyright (c) 2006 - 2015, Intel Corporation. All rights reserved.<BR>
>  SPDX-License-Identifier: BSD-2-Clause-Patent
>
>  **/
>  #include <PiSmm.h>
>  #include <Library/SmmCpuPlatformHookLib.h>
>
>  /**
>    Checks if platform produces a valid SMI.
>
>    This function checks if platform produces a valid SMI. This function is
>    called at SMM entry to detect if this is a spurious SMI. This function
>    must be implemented in an MP safe way because it is called by multiple CPU
>    threads.
>
>    @retval TRUE              There is a valid SMI
>    @retval FALSE             There is no valid SMI
>
>  **/
>  BOOLEAN
>  EFIAPI
>  PlatformValidSmi (
>    VOID
>    )
>  {
>    return TRUE;
>  }
>
>  /**
>    Clears platform top level SMI status bit.
>
>    This function clears platform top level SMI status bit.
>
>    @retval TRUE              The platform top level SMI status is cleared.
> -  @retval FALSE             The platform top level SMI status cannot be 
> cleared.
> +  @retval FALSE             The platform top level SMI status cannot be
> +                            cleared.
>
>  **/
>  BOOLEAN
>  EFIAPI
>  ClearTopLevelSmiStatus (
>    VOID
>    )
>  {
>    return TRUE;
>  }
>
>  /**
>    Performs platform specific way of SMM BSP election.
>
>    This function performs platform specific way of SMM BSP election.
>
> -  @param  IsBsp             Output parameter. TRUE: the CPU this function 
> executes
> -                            on is elected to be the SMM BSP. FALSE: the CPU 
> this
> -                            function executes on is to be SMM AP.
> +  @param  IsBsp             Output parameter. TRUE: the CPU this function
> +                            executes on is elected to be the SMM BSP. FALSE:
> +                            the CPU this function executes on is to be SMM 
> AP.
>
>    @retval EFI_SUCCESS       The function executes successfully.
> -  @retval EFI_NOT_READY     The function does not determine whether this CPU 
> should be
> -                            BSP or AP. This may occur if hardware init 
> sequence to
> -                            enable the determination is yet to be done, or 
> the function
> -                            chooses not to do BSP election and will let SMM 
> CPU driver to
> -                            use its default BSP election process.
> -  @retval EFI_DEVICE_ERROR  The function cannot determine whether this CPU 
> should be
> -                            BSP or AP due to hardware error.
> +  @retval EFI_NOT_READY     The function does not determine whether this CPU
> +                            should be BSP or AP. This may occur if hardware
> +                            init sequence to enable the determination is yet 
> to
> +                            be done, or the function chooses not to do BSP
> +                            election and will let SMM CPU driver to use its
> +                            default BSP election process.
> +  @retval EFI_DEVICE_ERROR  The function cannot determine whether this CPU
> +                            should be BSP or AP due to hardware error.
>
>  **/
>  EFI_STATUS
>  EFIAPI
>  PlatformSmmBspElection (
>    OUT BOOLEAN     *IsBsp
>    )
>  {
>    return EFI_NOT_READY;
>  }
>
>  /**
>    Get platform page table attribute.
>
>    This function gets page table attribute of platform.
>
> -  @param  Address        Input parameter. Obtain the page table entries 
> attribute on this address.
> +  @param  Address        Input parameter. Obtain the page table entries
> +                         attribute on this address.
>    @param  PageSize       Output parameter. The size of the page.
>    @param  NumOfPages     Output parameter. Number of page.
>    @param  PageAttribute  Output parameter. Paging Attributes (WB, UC, etc).
>
> -  @retval EFI_SUCCESS      The platform page table attribute from the 
> address is determined.
> -  @retval EFI_UNSUPPORTED  The platform does not support getting page table 
> attribute for the address.
> +  @retval EFI_SUCCESS      The platform page table attribute from the address
> +                           is determined.
> +  @retval EFI_UNSUPPORTED  The platform does not support getting page table
> +                           attribute for the address.
>
>  **/
>  EFI_STATUS
>  EFIAPI
>  GetPlatformPageTableAttribute (
>    IN  UINT64                Address,
>    IN OUT SMM_PAGE_SIZE_TYPE *PageSize,
>    IN OUT UINTN              *NumOfPages,
>    IN OUT UINTN              *PageAttribute
>    )
>  {
>    return EFI_UNSUPPORTED;
>  }
> --
> 2.19.1.3.g30247aa5d201
>
>

-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.

View/Reply Online (#55190): https://edk2.groups.io/g/devel/message/55190
Mute This Topic: https://groups.io/mt/71575165/21656
Group Owner: devel+ow...@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub  [arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to