[edk2-devel] [PATCH v5 5/9] OvmfPkg/CpuHotplugSmm: define CPU_HOT_EJECT_DATA

Ankur Arora posted 9 patches 3 years, 9 months ago
There is a newer version of this series
[edk2-devel] [PATCH v5 5/9] OvmfPkg/CpuHotplugSmm: define CPU_HOT_EJECT_DATA
Posted by Ankur Arora 3 years, 9 months ago
Define CPU_HOT_EJECT_DATA and add PCD PcdCpuHotEjectDataAddress, which
will be used to share CPU ejection state between OvmfPkg/CpuHotPlugSmm
and PiSmmCpuDxeSmm.

Cc: Laszlo Ersek <lersek@redhat.com>
Cc: Jordan Justen <jordan.l.justen@intel.com>
Cc: Ard Biesheuvel <ard.biesheuvel@arm.com>
Cc: Igor Mammedov <imammedo@redhat.com>
Cc: Boris Ostrovsky <boris.ostrovsky@oracle.com>
Cc: Aaron Young <aaron.young@oracle.com>
Ref: https://bugzilla.tianocore.org/show_bug.cgi?id=3132
Signed-off-by: Ankur Arora <ankur.a.arora@oracle.com>
---
 OvmfPkg/OvmfPkg.dec                       | 10 ++++++++++
 OvmfPkg/CpuHotplugSmm/CpuHotplugSmm.inf   |  1 +
 OvmfPkg/Include/Library/CpuHotEjectData.h | 32 +++++++++++++++++++++++++++++++
 3 files changed, 43 insertions(+)
 create mode 100644 OvmfPkg/Include/Library/CpuHotEjectData.h

diff --git a/OvmfPkg/OvmfPkg.dec b/OvmfPkg/OvmfPkg.dec
index 4348bb45c64a..e79ff28465e3 100644
--- a/OvmfPkg/OvmfPkg.dec
+++ b/OvmfPkg/OvmfPkg.dec
@@ -106,6 +106,10 @@ [LibraryClasses]
   #

   XenPlatformLib|Include/Library/XenPlatformLib.h

 

+  ##  @libraryclass  Share CPU hot-eject state

+  #

+  CpuHotEjectData|Include/Library/CpuHotEjectData.h

+

 [Guids]

   gUefiOvmfPkgTokenSpaceGuid            = {0x93bb96af, 0xb9f2, 0x4eb8, {0x94, 0x62, 0xe0, 0xba, 0x74, 0x56, 0x42, 0x36}}

   gEfiXenInfoGuid                       = {0xd3b46f3b, 0xd441, 0x1244, {0x9a, 0x12, 0x0, 0x12, 0x27, 0x3f, 0xc1, 0x4d}}

@@ -352,6 +356,12 @@ [PcdsDynamic, PcdsDynamicEx]
   #  This PCD is only accessed if PcdSmmSmramRequire is TRUE (see below).

   gUefiOvmfPkgTokenSpaceGuid.PcdQ35SmramAtDefaultSmbase|FALSE|BOOLEAN|0x34

 

+  ## This PCD adds a communication channel between PiSmmCpuDxe and

+  #  CpuHotplugSmm.

+  #

+  #  Only accessed if PcdCpuHotPlugSupport is TRUE

+  gUefiOvmfPkgTokenSpaceGuid.PcdCpuHotEjectDataAddress|0|UINT64|0x46

+

 [PcdsFeatureFlag]

   gUefiOvmfPkgTokenSpaceGuid.PcdQemuBootOrderPciTranslation|TRUE|BOOLEAN|0x1c

   gUefiOvmfPkgTokenSpaceGuid.PcdQemuBootOrderMmioTranslation|FALSE|BOOLEAN|0x1d

diff --git a/OvmfPkg/CpuHotplugSmm/CpuHotplugSmm.inf b/OvmfPkg/CpuHotplugSmm/CpuHotplugSmm.inf
index 04322b0d7855..e08b572ef169 100644
--- a/OvmfPkg/CpuHotplugSmm/CpuHotplugSmm.inf
+++ b/OvmfPkg/CpuHotplugSmm/CpuHotplugSmm.inf
@@ -54,6 +54,7 @@ [Protocols]
 

 [Pcd]

   gUefiCpuPkgTokenSpaceGuid.PcdCpuHotPlugDataAddress                ## CONSUMES

+  gUefiOvmfPkgTokenSpaceGuid.PcdCpuHotEjectDataAddress              ## CONSUMES

   gUefiOvmfPkgTokenSpaceGuid.PcdQ35SmramAtDefaultSmbase             ## CONSUMES

 

 [FeaturePcd]

diff --git a/OvmfPkg/Include/Library/CpuHotEjectData.h b/OvmfPkg/Include/Library/CpuHotEjectData.h
new file mode 100644
index 000000000000..839ddad6d8f8
--- /dev/null
+++ b/OvmfPkg/Include/Library/CpuHotEjectData.h
@@ -0,0 +1,32 @@
+/** @file

+  Definition for a structure sharing state for CPU hot-eject.

+

+  Copyright (C) 2021, Oracle Corporation.

+

+  SPDX-License-Identifier: BSD-2-Clause-Patent

+**/

+

+#ifndef _CPU_HOT_EJECT_DATA_H_

+#define _CPU_HOT_EJECT_DATA_H_

+

+typedef

+VOID

+(EFIAPI *CPU_HOT_EJECT_FN)(

+  IN UINTN  ProcessorNum

+  );

+

+#define CPU_EJECT_INVALID               (MAX_UINT64)

+#define CPU_EJECT_WORKER                (MAX_UINT64-1)

+

+#define  CPU_HOT_EJECT_DATA_REVISION_1  0x00000001

+

+typedef struct {

+  UINT32           Revision;          // Used for version identification for this structure

+  UINT32           ArrayLength;       // Number of entries for the ApicIdMap array

+

+  UINT64           *ApicIdMap;        // Pointer to CpuIndex->ApicId map for pending ejects

+  CPU_HOT_EJECT_FN Handler;           // Handler to do the CPU ejection

+  UINT64           Reserved;

+} CPU_HOT_EJECT_DATA;

+

+#endif /* _CPU_HOT_EJECT_DATA_H_ */

-- 
2.9.3



-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#70764): https://edk2.groups.io/g/devel/message/70764
Mute This Topic: https://groups.io/mt/80125312/1787277
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org]
-=-=-=-=-=-=-=-=-=-=-=-