On Wed, 26 Feb 2020 at 23:12, Laszlo Ersek <ler...@redhat.com> wrote:
>
> The @file comments in UefiCpuPkg/CpuS3DataDxe say,
>
>   [...] It also only supports the number of CPUs reported by the MP
>   Services Protocol, so this module does not support hot plug CPUs.  This
>   module can be copied into a CPU specific package and customized if these
>   additional features are required. [...]
>
> The driver is so small that the simplest way to extend it with hotplug
> support is indeed to clone it at first. In this patch, customize the
> driver only with the following no-op steps:
>
> - Update copyright notices.
> - Update INF_VERSION to the latest INF spec version (1.29).
> - Update FILE_GUID.
> - Drop the UNI files.
> - Replace EFI_D_VERBOSE with DEBUG_VERBOSE, to appease "PatchCheck.py".
>
> This patch is best reviewed with:
>
> $ git show --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 +-
>  OvmfPkg/OvmfPkgIa32.fdf                               |  2 +-
>  OvmfPkg/OvmfPkgIa32X64.fdf                            |  2 +-
>  OvmfPkg/OvmfPkgX64.fdf                                |  2 +-
>  {UefiCpuPkg => OvmfPkg}/CpuS3DataDxe/CpuS3DataDxe.inf | 10 +++-------
>  {UefiCpuPkg => OvmfPkg}/CpuS3DataDxe/CpuS3Data.c      |  4 ++--
>  8 files changed, 11 insertions(+), 15 deletions(-)
>
> diff --git a/OvmfPkg/OvmfPkgIa32.dsc b/OvmfPkg/OvmfPkgIa32.dsc
> index 78310da44a5f..8d8ca746ba03 100644
> --- a/OvmfPkg/OvmfPkgIa32.dsc
> +++ b/OvmfPkg/OvmfPkgIa32.dsc
> @@ -836,45 +836,45 @@ [Components]
>  !endif
>        
> HandleParsingLib|ShellPkg/Library/UefiHandleParsingLib/UefiHandleParsingLib.inf
>        PrintLib|MdePkg/Library/BasePrintLib/BasePrintLib.inf
>        
> BcfgCommandLib|ShellPkg/Library/UefiShellBcfgCommandLib/UefiShellBcfgCommandLib.inf
>
>      <PcdsFixedAtBuild>
>        gEfiMdePkgTokenSpaceGuid.PcdDebugPropertyMask|0xFF
>        gEfiShellPkgTokenSpaceGuid.PcdShellLibAutoInitialize|FALSE
>        gEfiMdePkgTokenSpaceGuid.PcdUefiLibMaxPrintBufferSize|8000
>    }
>
>  !if $(SECURE_BOOT_ENABLE) == TRUE
>    
> SecurityPkg/VariableAuthenticated/SecureBootConfigDxe/SecureBootConfigDxe.inf
>    OvmfPkg/EnrollDefaultKeys/EnrollDefaultKeys.inf
>  !endif
>
>    OvmfPkg/PlatformDxe/Platform.inf
>    OvmfPkg/IoMmuDxe/IoMmuDxe.inf
>
>  !if $(SMM_REQUIRE) == TRUE
>    OvmfPkg/SmmAccess/SmmAccess2Dxe.inf
>    OvmfPkg/SmmControl2Dxe/SmmControl2Dxe.inf
> -  UefiCpuPkg/CpuS3DataDxe/CpuS3DataDxe.inf
> +  OvmfPkg/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)
>    #
>    OvmfPkg/CpuHotplugSmm/CpuHotplugSmm.inf
>    UefiCpuPkg/CpuIo2Smm/CpuIo2Smm.inf
>    MdeModulePkg/Universal/LockBox/SmmLockBox/SmmLockBox.inf {
>      <LibraryClasses>
>        LockBoxLib|MdeModulePkg/Library/SmmLockBoxLib/SmmLockBoxSmmLib.inf
>    }
>    UefiCpuPkg/PiSmmCpuDxeSmm/PiSmmCpuDxeSmm.inf {
>      <LibraryClasses>
> diff --git a/OvmfPkg/OvmfPkgIa32X64.dsc b/OvmfPkg/OvmfPkgIa32X64.dsc
> index 428578a4f839..acba1f80a431 100644
> --- a/OvmfPkg/OvmfPkgIa32X64.dsc
> +++ b/OvmfPkg/OvmfPkgIa32X64.dsc
> @@ -850,45 +850,45 @@ [Components.X64]
>        
> HandleParsingLib|ShellPkg/Library/UefiHandleParsingLib/UefiHandleParsingLib.inf
>        PrintLib|MdePkg/Library/BasePrintLib/BasePrintLib.inf
>        
> BcfgCommandLib|ShellPkg/Library/UefiShellBcfgCommandLib/UefiShellBcfgCommandLib.inf
>
>      <PcdsFixedAtBuild>
>        gEfiMdePkgTokenSpaceGuid.PcdDebugPropertyMask|0xFF
>        gEfiShellPkgTokenSpaceGuid.PcdShellLibAutoInitialize|FALSE
>        gEfiMdePkgTokenSpaceGuid.PcdUefiLibMaxPrintBufferSize|8000
>    }
>
>  !if $(SECURE_BOOT_ENABLE) == TRUE
>    
> SecurityPkg/VariableAuthenticated/SecureBootConfigDxe/SecureBootConfigDxe.inf
>    OvmfPkg/EnrollDefaultKeys/EnrollDefaultKeys.inf
>  !endif
>
>    OvmfPkg/PlatformDxe/Platform.inf
>    OvmfPkg/AmdSevDxe/AmdSevDxe.inf
>    OvmfPkg/IoMmuDxe/IoMmuDxe.inf
>
>  !if $(SMM_REQUIRE) == TRUE
>    OvmfPkg/SmmAccess/SmmAccess2Dxe.inf
>    OvmfPkg/SmmControl2Dxe/SmmControl2Dxe.inf
> -  UefiCpuPkg/CpuS3DataDxe/CpuS3DataDxe.inf
> +  OvmfPkg/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)
>    #
>    OvmfPkg/CpuHotplugSmm/CpuHotplugSmm.inf
>    UefiCpuPkg/CpuIo2Smm/CpuIo2Smm.inf
>    MdeModulePkg/Universal/LockBox/SmmLockBox/SmmLockBox.inf {
>      <LibraryClasses>
>        LockBoxLib|MdeModulePkg/Library/SmmLockBoxLib/SmmLockBoxSmmLib.inf
>    }
>    UefiCpuPkg/PiSmmCpuDxeSmm/PiSmmCpuDxeSmm.inf {
>      <LibraryClasses>
> diff --git a/OvmfPkg/OvmfPkgX64.dsc b/OvmfPkg/OvmfPkgX64.dsc
> index 73b92f259201..621b27f80d4b 100644
> --- a/OvmfPkg/OvmfPkgX64.dsc
> +++ b/OvmfPkg/OvmfPkgX64.dsc
> @@ -848,45 +848,45 @@ [Components]
>        
> HandleParsingLib|ShellPkg/Library/UefiHandleParsingLib/UefiHandleParsingLib.inf
>        PrintLib|MdePkg/Library/BasePrintLib/BasePrintLib.inf
>        
> BcfgCommandLib|ShellPkg/Library/UefiShellBcfgCommandLib/UefiShellBcfgCommandLib.inf
>
>      <PcdsFixedAtBuild>
>        gEfiMdePkgTokenSpaceGuid.PcdDebugPropertyMask|0xFF
>        gEfiShellPkgTokenSpaceGuid.PcdShellLibAutoInitialize|FALSE
>        gEfiMdePkgTokenSpaceGuid.PcdUefiLibMaxPrintBufferSize|8000
>    }
>
>  !if $(SECURE_BOOT_ENABLE) == TRUE
>    
> SecurityPkg/VariableAuthenticated/SecureBootConfigDxe/SecureBootConfigDxe.inf
>    OvmfPkg/EnrollDefaultKeys/EnrollDefaultKeys.inf
>  !endif
>
>    OvmfPkg/PlatformDxe/Platform.inf
>    OvmfPkg/AmdSevDxe/AmdSevDxe.inf
>    OvmfPkg/IoMmuDxe/IoMmuDxe.inf
>
>  !if $(SMM_REQUIRE) == TRUE
>    OvmfPkg/SmmAccess/SmmAccess2Dxe.inf
>    OvmfPkg/SmmControl2Dxe/SmmControl2Dxe.inf
> -  UefiCpuPkg/CpuS3DataDxe/CpuS3DataDxe.inf
> +  OvmfPkg/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)
>    #
>    OvmfPkg/CpuHotplugSmm/CpuHotplugSmm.inf
>    UefiCpuPkg/CpuIo2Smm/CpuIo2Smm.inf
>    MdeModulePkg/Universal/LockBox/SmmLockBox/SmmLockBox.inf {
>      <LibraryClasses>
>        LockBoxLib|MdeModulePkg/Library/SmmLockBoxLib/SmmLockBoxSmmLib.inf
>    }
>    UefiCpuPkg/PiSmmCpuDxeSmm/PiSmmCpuDxeSmm.inf {
>      <LibraryClasses>
> diff --git a/OvmfPkg/OvmfPkgIa32.fdf b/OvmfPkg/OvmfPkgIa32.fdf
> index 61b891765c56..004aa318b222 100644
> --- a/OvmfPkg/OvmfPkgIa32.fdf
> +++ b/OvmfPkg/OvmfPkgIa32.fdf
> @@ -298,45 +298,45 @@ [FV.DXEFV]
>  INF  MdeModulePkg/Bus/Pci/EhciDxe/EhciDxe.inf
>  INF  MdeModulePkg/Bus/Pci/XhciDxe/XhciDxe.inf
>  INF  MdeModulePkg/Bus/Usb/UsbBusDxe/UsbBusDxe.inf
>  INF  MdeModulePkg/Bus/Usb/UsbKbDxe/UsbKbDxe.inf
>  INF  MdeModulePkg/Bus/Usb/UsbMassStorageDxe/UsbMassStorageDxe.inf
>
>  !ifdef $(CSM_ENABLE)
>  INF  OvmfPkg/Csm/BiosThunk/VideoDxe/VideoDxe.inf
>  INF  OvmfPkg/Csm/LegacyBiosDxe/LegacyBiosDxe.inf
>  INF  RuleOverride=CSM OvmfPkg/Csm/Csm16/Csm16.inf
>  !else
>  INF  OvmfPkg/QemuVideoDxe/QemuVideoDxe.inf
>  !endif
>
>  INF  OvmfPkg/QemuRamfbDxe/QemuRamfbDxe.inf
>  INF  OvmfPkg/VirtioGpuDxe/VirtioGpu.inf
>  INF  OvmfPkg/PlatformDxe/Platform.inf
>  INF  OvmfPkg/IoMmuDxe/IoMmuDxe.inf
>
>  !if $(SMM_REQUIRE) == TRUE
>  INF  OvmfPkg/SmmAccess/SmmAccess2Dxe.inf
>  INF  OvmfPkg/SmmControl2Dxe/SmmControl2Dxe.inf
> -INF  UefiCpuPkg/CpuS3DataDxe/CpuS3DataDxe.inf
> +INF  OvmfPkg/CpuS3DataDxe/CpuS3DataDxe.inf
>  INF  MdeModulePkg/Core/PiSmmCore/PiSmmIpl.inf
>  INF  MdeModulePkg/Core/PiSmmCore/PiSmmCore.inf
>  INF  OvmfPkg/CpuHotplugSmm/CpuHotplugSmm.inf
>  INF  UefiCpuPkg/CpuIo2Smm/CpuIo2Smm.inf
>  INF  MdeModulePkg/Universal/LockBox/SmmLockBox/SmmLockBox.inf
>  INF  UefiCpuPkg/PiSmmCpuDxeSmm/PiSmmCpuDxeSmm.inf
>
>  #
>  # Variable driver stack (SMM)
>  #
>  INF  OvmfPkg/QemuFlashFvbServicesRuntimeDxe/FvbServicesSmm.inf
>  INF  MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteSmm.inf
>  INF  MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmm.inf
>  INF  MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmmRuntimeDxe.inf
>
>  !else
>
>  #
>  # Variable driver stack (non-SMM)
>  #
>  INF  OvmfPkg/QemuFlashFvbServicesRuntimeDxe/FvbServicesRuntimeDxe.inf
>  INF  OvmfPkg/EmuVariableFvbRuntimeDxe/Fvb.inf
> diff --git a/OvmfPkg/OvmfPkgIa32X64.fdf b/OvmfPkg/OvmfPkgIa32X64.fdf
> index 501b4fcb7b67..13da8b9dbe65 100644
> --- a/OvmfPkg/OvmfPkgIa32X64.fdf
> +++ b/OvmfPkg/OvmfPkgIa32X64.fdf
> @@ -305,45 +305,45 @@ [FV.DXEFV]
>  INF  MdeModulePkg/Bus/Pci/XhciDxe/XhciDxe.inf
>  INF  MdeModulePkg/Bus/Usb/UsbBusDxe/UsbBusDxe.inf
>  INF  MdeModulePkg/Bus/Usb/UsbKbDxe/UsbKbDxe.inf
>  INF  MdeModulePkg/Bus/Usb/UsbMassStorageDxe/UsbMassStorageDxe.inf
>
>  !ifdef $(CSM_ENABLE)
>  INF  OvmfPkg/Csm/BiosThunk/VideoDxe/VideoDxe.inf
>  INF  OvmfPkg/Csm/LegacyBiosDxe/LegacyBiosDxe.inf
>  INF  RuleOverride=CSM OvmfPkg/Csm/Csm16/Csm16.inf
>  !else
>  INF  OvmfPkg/QemuVideoDxe/QemuVideoDxe.inf
>  !endif
>
>  INF  OvmfPkg/QemuRamfbDxe/QemuRamfbDxe.inf
>  INF  OvmfPkg/VirtioGpuDxe/VirtioGpu.inf
>  INF  OvmfPkg/PlatformDxe/Platform.inf
>  INF  OvmfPkg/AmdSevDxe/AmdSevDxe.inf
>  INF  OvmfPkg/IoMmuDxe/IoMmuDxe.inf
>
>  !if $(SMM_REQUIRE) == TRUE
>  INF  OvmfPkg/SmmAccess/SmmAccess2Dxe.inf
>  INF  OvmfPkg/SmmControl2Dxe/SmmControl2Dxe.inf
> -INF  UefiCpuPkg/CpuS3DataDxe/CpuS3DataDxe.inf
> +INF  OvmfPkg/CpuS3DataDxe/CpuS3DataDxe.inf
>  INF  MdeModulePkg/Core/PiSmmCore/PiSmmIpl.inf
>  INF  MdeModulePkg/Core/PiSmmCore/PiSmmCore.inf
>  INF  OvmfPkg/CpuHotplugSmm/CpuHotplugSmm.inf
>  INF  UefiCpuPkg/CpuIo2Smm/CpuIo2Smm.inf
>  INF  MdeModulePkg/Universal/LockBox/SmmLockBox/SmmLockBox.inf
>  INF  UefiCpuPkg/PiSmmCpuDxeSmm/PiSmmCpuDxeSmm.inf
>
>  #
>  # Variable driver stack (SMM)
>  #
>  INF  OvmfPkg/QemuFlashFvbServicesRuntimeDxe/FvbServicesSmm.inf
>  INF  MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteSmm.inf
>  INF  MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmm.inf
>  INF  MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmmRuntimeDxe.inf
>
>  !else
>
>  #
>  # Variable driver stack (non-SMM)
>  #
>  INF  OvmfPkg/QemuFlashFvbServicesRuntimeDxe/FvbServicesRuntimeDxe.inf
>  INF  OvmfPkg/EmuVariableFvbRuntimeDxe/Fvb.inf
> diff --git a/OvmfPkg/OvmfPkgX64.fdf b/OvmfPkg/OvmfPkgX64.fdf
> index 501b4fcb7b67..13da8b9dbe65 100644
> --- a/OvmfPkg/OvmfPkgX64.fdf
> +++ b/OvmfPkg/OvmfPkgX64.fdf
> @@ -305,45 +305,45 @@ [FV.DXEFV]
>  INF  MdeModulePkg/Bus/Pci/XhciDxe/XhciDxe.inf
>  INF  MdeModulePkg/Bus/Usb/UsbBusDxe/UsbBusDxe.inf
>  INF  MdeModulePkg/Bus/Usb/UsbKbDxe/UsbKbDxe.inf
>  INF  MdeModulePkg/Bus/Usb/UsbMassStorageDxe/UsbMassStorageDxe.inf
>
>  !ifdef $(CSM_ENABLE)
>  INF  OvmfPkg/Csm/BiosThunk/VideoDxe/VideoDxe.inf
>  INF  OvmfPkg/Csm/LegacyBiosDxe/LegacyBiosDxe.inf
>  INF  RuleOverride=CSM OvmfPkg/Csm/Csm16/Csm16.inf
>  !else
>  INF  OvmfPkg/QemuVideoDxe/QemuVideoDxe.inf
>  !endif
>
>  INF  OvmfPkg/QemuRamfbDxe/QemuRamfbDxe.inf
>  INF  OvmfPkg/VirtioGpuDxe/VirtioGpu.inf
>  INF  OvmfPkg/PlatformDxe/Platform.inf
>  INF  OvmfPkg/AmdSevDxe/AmdSevDxe.inf
>  INF  OvmfPkg/IoMmuDxe/IoMmuDxe.inf
>
>  !if $(SMM_REQUIRE) == TRUE
>  INF  OvmfPkg/SmmAccess/SmmAccess2Dxe.inf
>  INF  OvmfPkg/SmmControl2Dxe/SmmControl2Dxe.inf
> -INF  UefiCpuPkg/CpuS3DataDxe/CpuS3DataDxe.inf
> +INF  OvmfPkg/CpuS3DataDxe/CpuS3DataDxe.inf
>  INF  MdeModulePkg/Core/PiSmmCore/PiSmmIpl.inf
>  INF  MdeModulePkg/Core/PiSmmCore/PiSmmCore.inf
>  INF  OvmfPkg/CpuHotplugSmm/CpuHotplugSmm.inf
>  INF  UefiCpuPkg/CpuIo2Smm/CpuIo2Smm.inf
>  INF  MdeModulePkg/Universal/LockBox/SmmLockBox/SmmLockBox.inf
>  INF  UefiCpuPkg/PiSmmCpuDxeSmm/PiSmmCpuDxeSmm.inf
>
>  #
>  # Variable driver stack (SMM)
>  #
>  INF  OvmfPkg/QemuFlashFvbServicesRuntimeDxe/FvbServicesSmm.inf
>  INF  MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteSmm.inf
>  INF  MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmm.inf
>  INF  MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmmRuntimeDxe.inf
>
>  !else
>
>  #
>  # Variable driver stack (non-SMM)
>  #
>  INF  OvmfPkg/QemuFlashFvbServicesRuntimeDxe/FvbServicesRuntimeDxe.inf
>  INF  OvmfPkg/EmuVariableFvbRuntimeDxe/Fvb.inf
> diff --git a/UefiCpuPkg/CpuS3DataDxe/CpuS3DataDxe.inf 
> b/OvmfPkg/CpuS3DataDxe/CpuS3DataDxe.inf
> similarity index 83%
> copy from UefiCpuPkg/CpuS3DataDxe/CpuS3DataDxe.inf
> copy to OvmfPkg/CpuS3DataDxe/CpuS3DataDxe.inf
> index 510133a614ba..0ad8a0b35d25 100644
> --- a/UefiCpuPkg/CpuS3DataDxe/CpuS3DataDxe.inf
> +++ b/OvmfPkg/CpuS3DataDxe/CpuS3DataDxe.inf
> @@ -1,65 +1,61 @@
>  ## @file
>  #  ACPI CPU Data initialization module
>  #
>  #  This module initializes the ACPI_CPU_DATA structure and registers the 
> address
>  #  of this structure in the PcdCpuS3DataAddress PCD.  This is a 
> generic/simple
>  #  version of this module.  It does not provide a machine check handler or 
> CPU
>  #  register initialization tables for ACPI S3 resume.  It also only supports 
> the
>  #  number of CPUs reported by the MP Services Protocol, so this module does 
> not
>  #  support hot plug CPUs.  This module can be copied into a CPU specific 
> package
>  #  and customized if these additional features are required.
>  #
>  #  Copyright (c) 2013-2016, Intel Corporation. All rights reserved.<BR>
> -#  Copyright (c) 2015, Red Hat, Inc.
> +#  Copyright (c) 2015-2020, Red Hat, Inc.
>  #
>  #  SPDX-License-Identifier: BSD-2-Clause-Patent
>  #
>  ##
>
>  [Defines]
> -  INF_VERSION                    = 0x00010005
> +  INF_VERSION                    = 1.29
>    BASE_NAME                      = CpuS3DataDxe
> -  MODULE_UNI_FILE                = CpuS3DataDxe.uni
> -  FILE_GUID                      = 4D2E57EE-0E3F-44DD-93C4-D3B57E96945D
> +  FILE_GUID                      = 229B7EFD-DA02-46B9-93F4-E20C009F94E9
>    MODULE_TYPE                    = DXE_DRIVER
>    VERSION_STRING                 = 1.0
>    ENTRY_POINT                    = CpuS3DataInitialize
>
>  # The following information is for reference only and not required by the 
> build
>  # tools.
>  #
>  #  VALID_ARCHITECTURES           = IA32 X64
>
>  [Sources]
>    CpuS3Data.c
>
>  [Packages]
>    MdePkg/MdePkg.dec
>    MdeModulePkg/MdeModulePkg.dec
>    UefiCpuPkg/UefiCpuPkg.dec
>
>  [LibraryClasses]
>    UefiDriverEntryPoint
>    UefiBootServicesTableLib
>    BaseMemoryLib
>    DebugLib
>    BaseLib
>    MtrrLib
>    MemoryAllocationLib
>
>  [Guids]
>    gEfiEndOfDxeEventGroupGuid         ## CONSUMES   ## Event
>
>  [Protocols]
>    gEfiMpServiceProtocolGuid          ## CONSUMES
>
>  [Pcd]
>    gUefiCpuPkgTokenSpaceGuid.PcdCpuApStackSize    ## CONSUMES
>    gUefiCpuPkgTokenSpaceGuid.PcdCpuS3DataAddress  ## PRODUCES
>    gEfiMdeModulePkgTokenSpaceGuid.PcdAcpiS3Enable ## CONSUMES
>
>  [Depex]
>    gEfiMpServiceProtocolGuid
> -
> -[UserExtensions.TianoCore."ExtraFiles"]
> -  CpuS3DataDxeExtra.uni
> diff --git a/UefiCpuPkg/CpuS3DataDxe/CpuS3Data.c 
> b/OvmfPkg/CpuS3DataDxe/CpuS3Data.c
> similarity index 96%
> copy from UefiCpuPkg/CpuS3DataDxe/CpuS3Data.c
> copy to OvmfPkg/CpuS3DataDxe/CpuS3Data.c
> index 2be335d91903..2bb60d591b1e 100644
> --- a/UefiCpuPkg/CpuS3DataDxe/CpuS3Data.c
> +++ b/OvmfPkg/CpuS3DataDxe/CpuS3Data.c
> @@ -1,35 +1,35 @@
>  /** @file
>  ACPI CPU Data initialization module
>
>  This module initializes the ACPI_CPU_DATA structure and registers the address
>  of this structure in the PcdCpuS3DataAddress PCD.  This is a generic/simple
>  version of this module.  It does not provide a machine check handler or CPU
>  register initialization tables for ACPI S3 resume.  It also only supports the
>  number of CPUs reported by the MP Services Protocol, so this module does not
>  support hot plug CPUs.  This module can be copied into a CPU specific package
>  and customized if these additional features are required.
>
>  Copyright (c) 2013 - 2017, Intel Corporation. All rights reserved.<BR>
> -Copyright (c) 2015, Red Hat, Inc.
> +Copyright (c) 2015 - 2020, Red Hat, Inc.
>
>  SPDX-License-Identifier: BSD-2-Clause-Patent
>
>  **/
>
>  #include <PiDxe.h>
>
>  #include <AcpiCpuData.h>
>
>  #include <Library/BaseLib.h>
>  #include <Library/BaseMemoryLib.h>
>  #include <Library/UefiBootServicesTableLib.h>
>  #include <Library/DebugLib.h>
>  #include <Library/MtrrLib.h>
>  #include <Library/MemoryAllocationLib.h>
>
>  #include <Protocol/MpService.h>
>  #include <Guid/EventGroup.h>
>
>  //
>  // Data structure used to allocate ACPI_CPU_DATA and its supporting 
> structures
>  //
> @@ -107,45 +107,45 @@ VOID
>  EFIAPI
>  CpuS3DataOnEndOfDxe (
>    IN  EFI_EVENT  Event,
>    OUT VOID       *Context
>    )
>  {
>    EFI_STATUS         Status;
>    ACPI_CPU_DATA_EX   *AcpiCpuDataEx;
>
>    AcpiCpuDataEx = (ACPI_CPU_DATA_EX *) Context;
>    //
>    // Allocate a 4KB reserved page below 1MB
>    //
>    AcpiCpuDataEx->AcpiCpuData.StartupVector = BASE_1MB - 1;
>    Status = gBS->AllocatePages (
>                    AllocateMaxAddress,
>                    EfiReservedMemoryType,
>                    1,
>                    &AcpiCpuDataEx->AcpiCpuData.StartupVector
>                    );
>    ASSERT_EFI_ERROR (Status);
>
> -  DEBUG ((EFI_D_VERBOSE, "%a\n", __FUNCTION__));
> +  DEBUG ((DEBUG_VERBOSE, "%a\n", __FUNCTION__));
>    MtrrGetAllMtrrs (&AcpiCpuDataEx->MtrrTable);
>
>    //
>    // Close event, so it will not be invoked again.
>    //
>    gBS->CloseEvent (Event);
>  }
>
>  /**
>     The entry function of the CpuS3Data driver.
>
>     Allocate and initialize all fields of the ACPI_CPU_DATA structure except 
> the
>     MTRR settings.  Register an event notification on 
> gEfiEndOfDxeEventGroupGuid
>     to capture the ACPI_CPU_DATA MTRR settings.  The PcdCpuS3DataAddress is 
> set
>     to the address that ACPI_CPU_DATA is allocated at.
>
>     @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 EFI_UNSUPPORTED Do not support ACPI S3.
>     @retval other           Some error occurs when executing this entry point.
> --
> 2.19.1.3.g30247aa5d201
>
>

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

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

Reply via email to