From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from aserp2130.oracle.com (aserp2130.oracle.com [141.146.126.79]) by mx.groups.io with SMTP id smtpd.web09.6098.1613725506222021084 for ; Fri, 19 Feb 2021 01:05:06 -0800 Authentication-Results: mx.groups.io; dkim=pass header.i=@oracle.com header.s=corp-2020-01-29 header.b=wX+OySn6; spf=pass (domain: oracle.com, ip: 141.146.126.79, mailfrom: ankur.a.arora@oracle.com) Received: from pps.filterd (aserp2130.oracle.com [127.0.0.1]) by aserp2130.oracle.com (8.16.0.42/8.16.0.42) with SMTP id 11J953Ot192904; Fri, 19 Feb 2021 09:05:03 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : content-transfer-encoding : content-type : mime-version; s=corp-2020-01-29; bh=ZSmLXnkGnrGbL4Gfu1w8+AqfVIYwQx2NR1XNbeKZBdM=; b=wX+OySn6mqN+wnlBr25IGU0NB84Hx583H8F9OFJe+nSdofqfzdwIL5ifTpsxU5crbupx DrgwjLhZ+oJxkJUjZHA+jom5jMwNxVjsUrMTWcDILMbYf25lTyIrnPjnmQxfrhUBVHwv 9I5CXcXrwnaldFl/wXzIXQJeaaDHogFnG7mFZjOpyVN3KL/Ew+iAbh27d0yAe4DPpdfL oVACLeObYRAjtFAXmPhju7vKuls4ZjWvT5OHVqoEsE2L1Awc7eLDcfU7vVSNCdqJ6aKj OVkLIG9+YWa0Eb2/NbINtZ+RBbdK7ecps6LUOHW/+HYEwa28WIGsEJa1ItKZPpYf/zIV TQ== Received: from aserp3020.oracle.com (aserp3020.oracle.com [141.146.126.70]) by aserp2130.oracle.com with ESMTP id 36p49bgw0a-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 19 Feb 2021 09:05:02 +0000 Received: from pps.filterd (aserp3020.oracle.com [127.0.0.1]) by aserp3020.oracle.com (8.16.0.42/8.16.0.42) with SMTP id 11J8uJSH131491; Fri, 19 Feb 2021 09:05:02 GMT Received: from nam12-bn8-obe.outbound.protection.outlook.com (mail-bn8nam12lp2177.outbound.protection.outlook.com [104.47.55.177]) by aserp3020.oracle.com with ESMTP id 36prp2pa12-3 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 19 Feb 2021 09:05:02 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=LoPpl1JxwUYyiXjw7vUuxahpb8xXadkR+84ZVMorexZRzKVAqESpGHYN4NCrm6l/Ir91a1OX5VEtDds4RVoy/vPbH7iYg2Q16s7naxhVfS2HLEgWjavEPC9I77bFjdMeP5Do7uLItVAeQ5ExlSN0w0FKMrrTBZG+cet+3qwfC1+84+LzOzwb1srlS7g1IZrhpFuS/uCBOmY3raORmwK0cPN6JL9lW9gBwNzLw0QZ+GfKEDSkwIXzwI4yH7tV6kCn74yVM6zbNd46vIBVWiKYTuEmNf35D2dQNDGo5DCk4Ef10Q2rV5JE+Z2qr+nHOnZBB3BI3EZoCcQjCjY3+JzjcQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=ZSmLXnkGnrGbL4Gfu1w8+AqfVIYwQx2NR1XNbeKZBdM=; b=A/xUCOgcmNcc/zW0Jw6q9HRjl5DggN/tPM1s75jwEQ2hpevKCcsN+PYHLiaMTADvxrATfYn7mw1IdM5b2Oe5e8v7bWfSkij+7ZJqyGlubtA/nx+NcgSoYbCHLABT33cmeNZOaiDV6e2+KbQvSxPeUNH7tNaqlx+mjggmcqZPUdqAGBW2nAtCAYG3O450BR1G6tGVHW6950BLiR6oblLu4gsjQxKIzrikqvTjLJkepTacLxuwX6S/FQ/a6OLKm7DthpqZ/kW+qIBKSwnQsbcR0apDRcviIjQxip9qMmGztOLuQYRLMpFmxHVIKiqg9RB54/zxSQ+7iChwxYcAcPYheQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oracle.com; dmarc=pass action=none header.from=oracle.com; dkim=pass header.d=oracle.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.onmicrosoft.com; s=selector2-oracle-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=ZSmLXnkGnrGbL4Gfu1w8+AqfVIYwQx2NR1XNbeKZBdM=; b=Z9TLRXqq6Zk52jtu3uUs8Z70bOE3SSBnK+dYePyMD+QGsyUHXh+l7umEasoBlYhsxdyznhQAQTvyTEDrahOz9C/WiDJRwRY5/Hdx81UM1BLnTyIlztb89NTgZqh+Dq8qnmEfCDsVcXEpt1vGp7EmwXFHYGI+uak+cf8GWPBT42A= Authentication-Results: edk2.groups.io; dkim=none (message not signed) header.d=none;edk2.groups.io; dmarc=none action=none header.from=oracle.com; Received: from SJ0PR10MB4605.namprd10.prod.outlook.com (2603:10b6:a03:2d9::24) by BYAPR10MB3605.namprd10.prod.outlook.com (2603:10b6:a03:129::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3846.27; Fri, 19 Feb 2021 09:05:01 +0000 Received: from SJ0PR10MB4605.namprd10.prod.outlook.com ([fe80::a021:790:7ce6:6f16]) by SJ0PR10MB4605.namprd10.prod.outlook.com ([fe80::a021:790:7ce6:6f16%6]) with mapi id 15.20.3868.029; Fri, 19 Feb 2021 09:05:01 +0000 From: "Ankur Arora" To: devel@edk2.groups.io Cc: lersek@redhat.com, imammedo@redhat.com, boris.ostrovsky@oracle.com, Ankur Arora , Jordan Justen , Ard Biesheuvel , Aaron Young Subject: [PATCH v7 06/10] OvmfPkg/SmmCpuFeaturesLib: init CPU ejection state Date: Fri, 19 Feb 2021 01:04:40 -0800 Message-Id: <20210219090444.1332380-7-ankur.a.arora@oracle.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210219090444.1332380-1-ankur.a.arora@oracle.com> References: <20210219090444.1332380-1-ankur.a.arora@oracle.com> X-Originating-IP: [148.87.23.5] X-ClientProxiedBy: MWHPR13CA0004.namprd13.prod.outlook.com (2603:10b6:300:16::14) To SJ0PR10MB4605.namprd10.prod.outlook.com (2603:10b6:a03:2d9::24) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from prion.us.oracle.com (148.87.23.5) by MWHPR13CA0004.namprd13.prod.outlook.com (2603:10b6:300:16::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3890.8 via Frontend Transport; Fri, 19 Feb 2021 09:05:00 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 042783e8-6318-43ec-5989-08d8d4b57029 X-MS-TrafficTypeDiagnostic: BYAPR10MB3605: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:124; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: kyS+11IxOWnDRMM/f2Rl9Ge22tyxuU6O0w5ByfWxl9Jz/s+4oVreFPu7MlLXn+40p33uKKVednZEJxFnKzRWmNJUyFGRn3r6WhQ/5P6f0Wj2cmj3FNdMUOO88u2woPobsT6CUKsIyOtDg+ftz04eG7mEOhF5w3xDtpn0SAsZRKbILEwqB40caRfq4CbTlJUyqOJgSeLNcRsngkd5/YSGgOuPjkdDZNxxiQUSXCiBsz7F3r7J4ENOS66kvc39ZvVHsz+xoAR7VfJNkvRnctgtQ/54yx/FIwVaKzEAeB2AwxdfpCAQgT8TryzYWyb9lIMbAnNZHc1XONbPi+Imxm8k0STlDbtfW4gAbgAhI89hLZlCUYNyzWN4tY9P/q0rzcLvne/0Aqf79miUYMIduM5w7+45iTv3WgT3rQgkdv+yEzKkm2DRVyhb+Qi/v3P5JpqWr/u+fFtXyJg5fFFcF2ydwdlYco5HuKSOQSLzRWSHZgs2HTwQzIWRNIexqFHxWwUqhLDUmtmQvBFtQpgxbx6vMBkh5rKybCAuRGFDUET/1hZy/OgV92SGSnA6DW1YZza/qcRpviS9jX2BRciEA8bQIbCe3oYMTDzX2U/7qlvsExc= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SJ0PR10MB4605.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(366004)(376002)(39860400002)(346002)(396003)(136003)(83380400001)(7696005)(66946007)(2616005)(66556008)(6486002)(36756003)(86362001)(316002)(6666004)(54906003)(966005)(8676002)(66476007)(52116002)(478600001)(956004)(4326008)(5660300002)(6916009)(8936002)(2906002)(107886003)(1076003)(186003)(103116003)(26005)(16526019);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData: =?us-ascii?Q?//mgjnKVVYit80RYCfHgfap18Awc619ZZHexnK1dZHeQNznfKTVwRsSaKR3b?= =?us-ascii?Q?g8XxLPm1V7/jCp7ea3Hfb9Qp1L1LocwyhQFrGKIUJAOm6E+KdwqlAXFMgZ7z?= =?us-ascii?Q?PGsJqat/kf1ld2c7Hzvg4kTEhB3JL9DWlIueIc/6JS7ncN+Io43VD3hjYHmM?= =?us-ascii?Q?VKjfOb+lPzPEDh4M0EUewpnTaFBUENUO9tu3VB1Jbgq/vesp+3SKsx7f6pMJ?= =?us-ascii?Q?JsyF797fRVjDTkP6xZO2jT8eDkR79toQvUc1Pg4CTN5uAcHMO4yS1Rn3dBvY?= =?us-ascii?Q?AoIH75z55//G/u5uKnsITVWuVT9NQzgiZpW7lfTwA8wJqNO/d7DlNLd8/uEJ?= =?us-ascii?Q?WnVmbiUKSvxJMqUBYfz96FIPgptcmP3PMIB7xeaAE6XCfllR+ZdeFClyHDpf?= =?us-ascii?Q?l/cU05zgC6ITaPulr8a8DC4vOLr/aXlB9bQH1CcHMhokE1PaPWqyo2500eNa?= =?us-ascii?Q?sjiBIJBUOBMqxKsDqFQqehkP+5INGjiZHdwpm7Lx1rTBQ4TI9dJapR8b1Dj7?= =?us-ascii?Q?+vzlGC85SWoQ+tqednJrTBDyqwvXqwMRM3qCrRHLvvoKe6HULPCx6VZW2eJM?= =?us-ascii?Q?Bxsl57efTQlYTo3mqW9XwIjPIygCFOeRV3PW6AvmiaHRMinMHiuOgMlkDu6I?= =?us-ascii?Q?dwRhk6mwlxt9e0nMR88yBU+zQ4dKmWofav2i6hSOmRZ8sQWdm3AnUKaFwOTK?= =?us-ascii?Q?LjU+lFu6Jcy4/RZgoSpehmSajDkLl41jhJAqfgUJGSQtxJws6dxObyGEVGqR?= =?us-ascii?Q?9arZ4qJXQWk4/rFo+bjC6GM4fKvwXLJK+rMpGDtpV10pDTKFizIUaZSQcEI3?= =?us-ascii?Q?gjJGG3GZyF8G+qIObajaW4m+0wxYuwMGveAn/dVz2JNcv3LCH7zPcFUxPhi1?= =?us-ascii?Q?uEQNASyz8XgipY1GlEOWxXZ22YWwoMOdtQXKMaBkwziZ6WM1orOseZ+0d3qB?= =?us-ascii?Q?pRX2YtDYvPNCGynMZdT2ZVx0EY28VVhKkQCMUy1vgLjVBuBnJYgff39xsXDd?= =?us-ascii?Q?PXN0t/nPEqpMfEKMtx91J0PbeWXIbElwsxozvMNIspeMHUUTTirYwgjK5P6e?= =?us-ascii?Q?3r8f1Ep86JrkcZQDKDE6+CTbmRsH4MAjsdy2Xfs2+bbrvTMTghJn/w43MHPI?= =?us-ascii?Q?BkaSm45wYLwNoEENZl1Tajp3xdeis+Vsby3ydx3S9B/WoTA9tTjXevQ1vw8B?= =?us-ascii?Q?LZqMlTAeUp/XXFWu7SnFXd/jkGbW03RH2wSok3hH3v7ddM08+HexKPlc/YOe?= =?us-ascii?Q?wZtndRI7JA5X9HRZvdxww1/46a0kc0M1AHYfMz0S71jnQf1nn7Tzds9Ev/6I?= =?us-ascii?Q?7UczN9pv4QVYhdAzz+Hz7JyW?= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 042783e8-6318-43ec-5989-08d8d4b57029 X-MS-Exchange-CrossTenant-AuthSource: SJ0PR10MB4605.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 19 Feb 2021 09:05:01.0863 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 4e2c6054-71cb-48f1-bd6c-3a9705aca71b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: zS6VB2xa+6z4HLOeO4DaRy9oB8OLVQDUHE1eZYMkUFdbKfa3NdfK73+UAjRcC9Q6/tAr8j3Y7fnFGtpxLUc91rr3veqOuaHxIBPGpiPKlNM= X-MS-Exchange-Transport-CrossTenantHeadersStamped: BYAPR10MB3605 X-Proofpoint-Virus-Version: vendor=nai engine=6200 definitions=9899 signatures=668683 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 phishscore=0 mlxlogscore=999 bulkscore=0 suspectscore=0 spamscore=0 malwarescore=0 mlxscore=0 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2009150000 definitions=main-2102190070 X-Proofpoint-Virus-Version: vendor=nai engine=6200 definitions=9899 signatures=668683 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0 priorityscore=1501 lowpriorityscore=0 bulkscore=0 impostorscore=0 mlxlogscore=999 adultscore=0 malwarescore=0 phishscore=0 clxscore=1015 mlxscore=0 suspectscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2009150000 definitions=main-2102190071 Content-Transfer-Encoding: 8bit Content-Type: text/plain Init CPU_HOT_EJECT_DATA, which will be used to share CPU ejection state between SmmCpuFeaturesLib (via PiSmmCpuDxeSmm) and CpuHotPlugSmm. The init happens via SmmCpuFeaturesSmmRelocationComplete(), and so it will run as part of the PiSmmCpuDxeSmm entry point function, PiCpuSmmEntry(). Once inited, CPU_HOT_EJECT_DATA is exposed via PcdCpuHotEjectDataAddress. The CPU hot-eject handler (CPU_HOT_EJECT_DATA->Handler) is setup when there is an ejection request via CpuHotplugSmm. Cc: Laszlo Ersek Cc: Jordan Justen Cc: Ard Biesheuvel Cc: Igor Mammedov Cc: Boris Ostrovsky Cc: Aaron Young Ref: https://bugzilla.tianocore.org/show_bug.cgi?id=3132 Signed-off-by: Ankur Arora --- Notes: Addresses the following review comments: (1) Detail in commit message about context in which CPU_HOT_EJECT_DATA is inited. (2) Add in sorted order MemoryAllocationLib in LibraryClasses (3) Sort added includes in SmmCpuFeaturesLib.c (4a-4b) Fixup linkage directives for mCpuHotEjectData. (5) s/CpuHotEjectData/mCpuHotEjectData/ (6,10a,10b) Remove dependence on PcdCpuHotPlugSupport (7) Make the tense structure consistent in block comment for InitCpuHotEject(). (8) s/SmmCpuFeaturesSmmInitHotEject/InitCpuHotEject/ (9) s/mMaxNumberOfCpus/MaxNumberOfCpus/ (11) Remove a bunch of obvious comments. (14a,14b,14c) Use SafeUint functions and rework the allocation logic so we can just use a single allocation. (12) Remove the AllocatePool() cast. (13) Use a CpuDeadLoop() in case of failure; albeit via a goto, not inline. (15) Initialize the mCpuHotEjectData->QemuSelectorMap locally. (16) Fix indentation in PcdSet64S. (17) Change the cast in PcdSet64S() to UINTN. (18) Use RETURN_STATUS instead of EFI_STATUS. (19,20) Move the Handler logic in SmmCpuFeaturesRendezvousExit() into into a separate patch. .../SmmCpuFeaturesLib/SmmCpuFeaturesLib.inf | 4 + .../Library/SmmCpuFeaturesLib/SmmCpuFeaturesLib.c | 92 ++++++++++++++++++++++ 2 files changed, 96 insertions(+) diff --git a/OvmfPkg/Library/SmmCpuFeaturesLib/SmmCpuFeaturesLib.inf b/OvmfPkg/Library/SmmCpuFeaturesLib/SmmCpuFeaturesLib.inf index 97a10afb6e27..8a426a4c10fb 100644 --- a/OvmfPkg/Library/SmmCpuFeaturesLib/SmmCpuFeaturesLib.inf +++ b/OvmfPkg/Library/SmmCpuFeaturesLib/SmmCpuFeaturesLib.inf @@ -30,9 +30,13 @@ [LibraryClasses] BaseMemoryLib DebugLib MemEncryptSevLib + MemoryAllocationLib PcdLib + SafeIntLib SmmServicesTableLib UefiBootServicesTableLib [Pcd] + gUefiCpuPkgTokenSpaceGuid.PcdCpuMaxLogicalProcessorNumber + gUefiOvmfPkgTokenSpaceGuid.PcdCpuHotEjectDataAddress gUefiOvmfPkgTokenSpaceGuid.PcdQ35SmramAtDefaultSmbase diff --git a/OvmfPkg/Library/SmmCpuFeaturesLib/SmmCpuFeaturesLib.c b/OvmfPkg/Library/SmmCpuFeaturesLib/SmmCpuFeaturesLib.c index 7ef7ed98342e..adbfc90ad46e 100644 --- a/OvmfPkg/Library/SmmCpuFeaturesLib/SmmCpuFeaturesLib.c +++ b/OvmfPkg/Library/SmmCpuFeaturesLib/SmmCpuFeaturesLib.c @@ -11,10 +11,13 @@ #include #include #include +#include #include +#include #include #include #include +#include #include #include #include @@ -171,6 +174,92 @@ SmmCpuFeaturesHookReturnFromSmm ( return OriginalInstructionPointer; } +STATIC CPU_HOT_EJECT_DATA *mCpuHotEjectData = NULL; + +/** + Initialize mCpuHotEjectData if PcdCpuMaxLogicalProcessorNumber > 1. + + Also setup the corresponding PcdCpuHotEjectDataAddress. +**/ +STATIC +VOID +InitCpuHotEjectData ( + VOID + ) +{ + UINTN ArrayLen; + UINTN BaseLen; + UINTN TotalLen; + UINT32 Idx; + UINT32 MaxNumberOfCpus; + RETURN_STATUS PcdStatus; + + MaxNumberOfCpus = PcdGet32 (PcdCpuMaxLogicalProcessorNumber); + + if (MaxNumberOfCpus == 1) { + return; + } + + // + // We want the following lay out for CPU_HOT_EJECT_DATA: + // UINTN alignment: CPU_HOT_EJECT_DATA + // --- padding if needed --- + // UINT64 alignment: CPU_HOT_EJECT_DATA->QemuSelectorMap[] + // + // Accordingly, we allocate: + // sizeof(*mCpuHotEjectData) + (MaxNumberOfCpus * + // sizeof(mCpuHotEjectData->QemuSelectorMap[0])). + // Add sizeof(UINT64) to use as padding if needed. + // + + if (RETURN_ERROR (SafeUintnMult (sizeof (*mCpuHotEjectData), 1, &BaseLen)) || + RETURN_ERROR (SafeUintnMult ( + sizeof (mCpuHotEjectData->QemuSelectorMap[0]), + MaxNumberOfCpus, &ArrayLen)) || + RETURN_ERROR (SafeUintnAdd (BaseLen, ArrayLen, &TotalLen))|| + RETURN_ERROR (SafeUintnAdd (TotalLen, sizeof (UINT64), &TotalLen))) { + DEBUG ((DEBUG_ERROR, "%a: invalid CPU_HOT_EJECT_DATA\n", __FUNCTION__)); + goto Fatal; + } + + mCpuHotEjectData = AllocatePool (TotalLen); + if (mCpuHotEjectData == NULL) { + ASSERT (mCpuHotEjectData != NULL); + goto Fatal; + } + + mCpuHotEjectData->Handler = NULL; + mCpuHotEjectData->ArrayLength = MaxNumberOfCpus; + + mCpuHotEjectData->QemuSelectorMap = (void *)mCpuHotEjectData + + sizeof (*mCpuHotEjectData); + mCpuHotEjectData->QemuSelectorMap = + (void *)ALIGN_VALUE ((UINTN)mCpuHotEjectData->QemuSelectorMap, + sizeof (UINT64)); + // + // We use mCpuHotEjectData->QemuSelectorMap to map + // ProcessorNum -> QemuSelector. Initialize to invalid values. + // + for (Idx = 0; Idx < mCpuHotEjectData->ArrayLength; Idx++) { + mCpuHotEjectData->QemuSelectorMap[Idx] = CPU_EJECT_QEMU_SELECTOR_INVALID; + } + + // + // Expose address of CPU Hot eject Data structure + // + PcdStatus = PcdSet64S (PcdCpuHotEjectDataAddress, + (UINTN)(VOID *)mCpuHotEjectData); + if (RETURN_ERROR (PcdStatus)) { + ASSERT_EFI_ERROR (PcdStatus); + goto Fatal; + } + + return; + +Fatal: + CpuDeadLoop (); +} + /** Hook point in normal execution mode that allows the one CPU that was elected as monarch during System Management Mode initialization to perform additional @@ -188,6 +277,9 @@ SmmCpuFeaturesSmmRelocationComplete ( UINTN MapPagesBase; UINTN MapPagesCount; + + InitCpuHotEjectData (); + if (!MemEncryptSevIsEnabled ()) { return; } -- 2.9.3