From nobody Fri May 10 08:29:36 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) client-ip=66.175.222.108; envelope-from=bounce+27952+111595+1787277+3901457@groups.io; helo=mail02.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+111595+1787277+3901457@groups.io; dmarc=fail(p=none dis=none) header.from=intel.com ARC-Seal: i=1; a=rsa-sha256; t=1700633340; cv=none; d=zohomail.com; s=zohoarc; b=EnTHPC/jXj14z3FNSoXhkvNE2zd0XfrgbDcm24NdV9lnkxKyOVsNUplmi5KhtUyKhFiMBvHuES0JKjuZFFiKgsb2lKliPcGBAXjYGkadSxWWXiKFz4g8PhQmLLUXkb4/5ntGa7ry7k9xGQ+ejSJPvlnlwfoAWFqKvg9ybplEJ9Q= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1700633340; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:Reply-To:References:Sender:Subject:Subject:To:To:Message-Id; bh=L/nNDprhUlv1jrGA65qstqjyC7JpvBTee1TP4N5hz+E=; b=caFWqtngHSBaKLiBbL1q4ZC9QuPOmxSsvIWYTdleQT7mhqJyZAZqMOz3yyYm6GIt28YDKQF/L8W8QSfa1i+i+kyd8iILLNdft27CE8GJwSweudDmy8tUaXfcaCs465HGZ92dIc69tnf3otKBmYoA0gdPtHqr8QQpMDzleJXw470= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+111595+1787277+3901457@groups.io; dmarc=fail header.from= (p=none dis=none) Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by mx.zohomail.com with SMTPS id 1700633340968884.2040885851812; Tue, 21 Nov 2023 22:09:00 -0800 (PST) Return-Path: DKIM-Signature: a=rsa-sha256; bh=Bc2eJMdamTamPun88OptV/lCZsnfzDzGSo82Qi0sLRE=; c=relaxed/simple; d=groups.io; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References:MIME-Version:Precedence:List-Subscribe:List-Help:Sender:List-Id:Mailing-List:Delivered-To:Reply-To:List-Unsubscribe-Post:List-Unsubscribe:Content-Transfer-Encoding; s=20140610; t=1700633340; v=1; b=HPIgQSrL1moyvDwoNx5+m/2EHXSFQHgMeE03nQMfb18kK4YWOocWdlFXsEV+JnXapZ2/0o7r q+1CeW+u7sYFEv9h56RfeTlaEOj6YcgMweQZkPzztbBog6EVdw9kloq6MppdY8wWvlvu0vceuZM 6u7u28F6uIitEXqk7Sa63ynU= X-Received: by 127.0.0.2 with SMTP id RSetYY1788612xDIR9rL0l6O; Tue, 21 Nov 2023 22:09:00 -0800 X-Received: from mgamail.intel.com (mgamail.intel.com [192.55.52.151]) by mx.groups.io with SMTP id smtpd.web11.13638.1700633335895148945 for ; Tue, 21 Nov 2023 22:09:00 -0800 X-IronPort-AV: E=McAfee;i="6600,9927,10901"; a="372166246" X-IronPort-AV: E=Sophos;i="6.04,217,1695711600"; d="scan'208";a="372166246" X-Received: from fmviesa001.fm.intel.com ([10.60.135.141]) by fmsmga107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 21 Nov 2023 22:08:59 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.04,217,1695711600"; d="scan'208";a="15129539" X-Received: from shwdeopenlab813.ccr.corp.intel.com ([10.239.55.230]) by fmviesa001.fm.intel.com with ESMTP; 21 Nov 2023 22:08:57 -0800 From: "Yuanhao Xie" To: devel@edk2.groups.io Cc: xieyuanh , Ray Ni , Eric Dong , Rahul Kumar , Tom Lendacky , Laszlo Ersek Subject: [edk2-devel] [Patch V3 1/3] UefiCpuPkg/MpInitLib: Eliminate redundant microcode loading in DXE. Date: Wed, 22 Nov 2023 14:08:32 +0800 Message-Id: <20231122060834.3467-2-yuanhao.xie@intel.com> In-Reply-To: <20231122060834.3467-1-yuanhao.xie@intel.com> References: <20231122060834.3467-1-yuanhao.xie@intel.com> MIME-Version: 1.0 Precedence: Bulk List-Subscribe: List-Help: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,yuanhao.xie@intel.com List-Unsubscribe-Post: List-Unsubscribe=One-Click List-Unsubscribe: X-Gm-Message-State: E5hYCf0Vl6OHxNogh7B05YPxx1787277AA= Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @groups.io) X-ZM-MESSAGEID: 1700633341821100001 Content-Type: text/plain; charset="utf-8" The DXE stage's Microcode loading process has been elimincated by: 1. Let ShadowMicrocodeUpdatePatch and MicrocodeDetect for BSP performed only during the PEI phase. DXE skip those actions. 2. BSP in DXE WakeUpAp only for synchronizing MTRR settings, not loading microcode. Synchronizing the MTRR table to the AP is always essential. During the DXE phase, it cannot be omitted like loading microcode, as the PEI and DXE may be in different bit modes. Cc: Ray Ni Cc: Eric Dong Cc: Rahul Kumar Cc: Tom Lendacky Cc: Laszlo Ersek Signed-off-by: Yuanhao Xie --- UefiCpuPkg/Library/MpInitLib/MpLib.c | 38 +++++++++++++++++++++++---------= ------ 1 file changed, 23 insertions(+), 15 deletions(-) diff --git a/UefiCpuPkg/Library/MpInitLib/MpLib.c b/UefiCpuPkg/Library/MpIn= itLib/MpLib.c index 9a6ec5db5c..c26a17e1db 100644 --- a/UefiCpuPkg/Library/MpInitLib/MpLib.c +++ b/UefiCpuPkg/Library/MpInitLib/MpLib.c @@ -451,12 +451,19 @@ ApInitializeSync ( CpuMpData =3D (CPU_MP_DATA *)Buffer; Status =3D GetProcessorNumber (CpuMpData, &ProcessorNumber); ASSERT_EFI_ERROR (Status); + ASSERT (CpuMpData->InitFlag =3D=3D ApInitReconfig || CpuMpData->InitFlag= =3D=3D ApInitDone); + if (CpuMpData->InitFlag !=3D ApInitReconfig) { + // + // Load microcode on AP for PEI phase. + // During the DXE phase, it cannot omitted. + // + MicrocodeDetect (CpuMpData, ProcessorNumber); + } + // - // Load microcode on AP - // - MicrocodeDetect (CpuMpData, ProcessorNumber); - // - // Sync BSP's MTRR table to AP + // Synchronizing the MTRR table to the AP is always essential. + // During the DXE phase, it cannot be omitted like loading microcode, + // as the PEI and DXE may be in different bit modes. // MtrrSetAllMtrrs (&CpuMpData->MtrrTable); } @@ -2224,29 +2231,25 @@ MpInitLibInitialize ( } } =20 - if (!GetMicrocodePatchInfoFromHob ( - &CpuMpData->MicrocodePatchAddress, - &CpuMpData->MicrocodePatchRegionSize - )) - { + if (MpHandOff =3D=3D NULL) { // // The microcode patch information cache HOB does not exist, which mea= ns // the microcode patches data has not been loaded into memory yet // ShadowMicrocodeUpdatePatch (CpuMpData); + // + // Detect and apply Microcode on BSP + // + MicrocodeDetect (CpuMpData, CpuMpData->BspNumber); } =20 - // - // Detect and apply Microcode on BSP - // - MicrocodeDetect (CpuMpData, CpuMpData->BspNumber); // // Store BSP's MTRR setting // MtrrGetAllMtrrs (&CpuMpData->MtrrTable); =20 // - // Wakeup APs to do some AP initialize sync (Microcode & MTRR) + // Wakeup APs to do some AP initialize sync (MTRR and/or Microcode). // if (CpuMpData->CpuCount > 1) { if (MpHandOff !=3D NULL) { @@ -2258,6 +2261,11 @@ MpInitLibInitialize ( CpuMpData->InitFlag =3D ApInitReconfig; } =20 + // + // Wake up the AP to perform some AP initialization synchronization. + // 1. For PEI stage, load microcode and synchronize MTRR, + // 2. For the DXE phase, only synchronize MTRR. + // WakeUpAP (CpuMpData, TRUE, 0, ApInitializeSync, CpuMpData, TRUE); // // Wait for all APs finished initialization --=20 2.39.1.windows.1 -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#111595): https://edk2.groups.io/g/devel/message/111595 Mute This Topic: https://groups.io/mt/102744598/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- From nobody Fri May 10 08:29:36 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) client-ip=66.175.222.108; envelope-from=bounce+27952+111596+1787277+3901457@groups.io; helo=mail02.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+111596+1787277+3901457@groups.io; dmarc=fail(p=none dis=none) header.from=intel.com ARC-Seal: i=1; a=rsa-sha256; t=1700633343; cv=none; d=zohomail.com; s=zohoarc; b=Gm/pGio9Xa75NKTu3zohnquYfmsTF4E2EV3Wv+oIh1txpW9gAsLMhU+T2hpBLgETWMmnqO6MF+5wbjVJFrzP9R86Z/FePfXTB/7a9Iko7rr+54Str3F2cp4oJwiCABhKc/Wpt1uB74VNMLOBymWChSMYiZKCgF7KNbP4DheH4kM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1700633343; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:Reply-To:References:Sender:Subject:Subject:To:To:Message-Id; bh=AfKelAyTS4X0Hluxi1SGKCHWNFAVDnyfFdeFWPXFhLI=; b=KtAcTBBKPwqz+0Mv5tV/ivWpTQKRjupYlr9Ep7nnDsOyrrCruD8/dKMYZ0QN54RggBPh87DOkNT5f/mSB7XoY6gxqPXX0dG5r2zR0C8Po2HCBE11XpTuZmn2JzX+AOf7ey0OZu5flOP8q0oX6rRrqvjMINK5Yf56OaKmWRNhDQk= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+111596+1787277+3901457@groups.io; dmarc=fail header.from= (p=none dis=none) Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by mx.zohomail.com with SMTPS id 1700633343585237.0894568846893; Tue, 21 Nov 2023 22:09:03 -0800 (PST) Return-Path: DKIM-Signature: a=rsa-sha256; bh=aQksryx6ZX/uFBeMoNrNVheBhntLgTCLpeSM1ChbnxI=; c=relaxed/simple; d=groups.io; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References:MIME-Version:Precedence:List-Subscribe:List-Help:Sender:List-Id:Mailing-List:Delivered-To:Reply-To:List-Unsubscribe-Post:List-Unsubscribe:Content-Transfer-Encoding; s=20140610; t=1700633343; v=1; b=BHK14PEjD5BpaGoNz44DjPSaIwOJXElA3slXHd3HdM4zvb8u1KmZjdMdMlNaekc34SFUIkch 2bzL7T4PbkqTm8rvG51K1DaCUZpwW0xIGKEXoNau9tKpo01vjYqHmrOIiUg5wGtlcYfhsmwyOZX iJ03klTed2Yo5eXfhDTIba5Q= X-Received: by 127.0.0.2 with SMTP id ibLuYY1788612x4RHGkwNUMu; Tue, 21 Nov 2023 22:09:03 -0800 X-Received: from mgamail.intel.com (mgamail.intel.com [192.55.52.151]) by mx.groups.io with SMTP id smtpd.web11.13638.1700633335895148945 for ; Tue, 21 Nov 2023 22:09:02 -0800 X-IronPort-AV: E=McAfee;i="6600,9927,10901"; a="372166261" X-IronPort-AV: E=Sophos;i="6.04,217,1695711600"; d="scan'208";a="372166261" X-Received: from fmviesa001.fm.intel.com ([10.60.135.141]) by fmsmga107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 21 Nov 2023 22:09:02 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.04,217,1695711600"; d="scan'208";a="15129559" X-Received: from shwdeopenlab813.ccr.corp.intel.com ([10.239.55.230]) by fmviesa001.fm.intel.com with ESMTP; 21 Nov 2023 22:09:00 -0800 From: "Yuanhao Xie" To: devel@edk2.groups.io Cc: xieyuanh , Ray Ni , Eric Dong , Rahul Kumar , Tom Lendacky , Laszlo Ersek Subject: [edk2-devel] [Patch V3 2/3] UefiCpuPkg/MpInitLib: Store MTRRs settings only when CpuCount>1 Date: Wed, 22 Nov 2023 14:08:33 +0800 Message-Id: <20231122060834.3467-3-yuanhao.xie@intel.com> In-Reply-To: <20231122060834.3467-1-yuanhao.xie@intel.com> References: <20231122060834.3467-1-yuanhao.xie@intel.com> MIME-Version: 1.0 Precedence: Bulk List-Subscribe: List-Help: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,yuanhao.xie@intel.com List-Unsubscribe-Post: List-Unsubscribe=One-Click List-Unsubscribe: X-Gm-Message-State: XFL1qVWESgv44xY40kB3dGtzx1787277AA= Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @groups.io) X-ZM-MESSAGEID: 1700633343821100005 Content-Type: text/plain; charset="utf-8" Store BSP's MTRR setting only when CpuCount>1. Cc: Ray Ni Cc: Eric Dong Cc: Rahul Kumar Cc: Tom Lendacky Cc: Laszlo Ersek Signed-off-by: Yuanhao Xie Reviewed-by: Ray Ni --- UefiCpuPkg/Library/MpInitLib/MpLib.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/UefiCpuPkg/Library/MpInitLib/MpLib.c b/UefiCpuPkg/Library/MpIn= itLib/MpLib.c index c26a17e1db..538095d3bb 100644 --- a/UefiCpuPkg/Library/MpInitLib/MpLib.c +++ b/UefiCpuPkg/Library/MpInitLib/MpLib.c @@ -2243,15 +2243,14 @@ MpInitLibInitialize ( MicrocodeDetect (CpuMpData, CpuMpData->BspNumber); } =20 - // - // Store BSP's MTRR setting - // - MtrrGetAllMtrrs (&CpuMpData->MtrrTable); - // // Wakeup APs to do some AP initialize sync (MTRR and/or Microcode). // if (CpuMpData->CpuCount > 1) { + // + // Store BSP's MTRR setting + // + MtrrGetAllMtrrs (&CpuMpData->MtrrTable); if (MpHandOff !=3D NULL) { // // Only needs to use this flag for DXE phase to update the wake up --=20 2.39.1.windows.1 -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#111596): https://edk2.groups.io/g/devel/message/111596 Mute This Topic: https://groups.io/mt/102744600/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- From nobody Fri May 10 08:29:36 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) client-ip=66.175.222.108; envelope-from=bounce+27952+111597+1787277+3901457@groups.io; helo=mail02.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+111597+1787277+3901457@groups.io; dmarc=fail(p=none dis=none) header.from=intel.com ARC-Seal: i=1; a=rsa-sha256; t=1700633352; cv=none; d=zohomail.com; s=zohoarc; b=bzPpqaQxWD9B7ntXApsL6xT69CV8edgd7TC7qHP6HEi2LdN3f3dRsMcjK3d8JcotbjBaDgLEByt5fgH4+C95ppwwORDLLLh4jEKkurvfF/Ygo8XhS/9Khc8281ZBUMrj4sYRuQOliHsE3YeyHN+6vkV3Sc5iuDHKz/+ypOjBDI8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1700633352; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:Reply-To:References:Sender:Subject:Subject:To:To:Message-Id; bh=IDktWFbSNp+GjXtoHthZlNpuFQ7FGQhVZ6z1pMy+4Y0=; b=BUd0lJw6DeivGwJXTQ+gQ7YmFDbUq627GibsK2hhYBtgHIbPNosqttRgtVgDeVHSqWLjPAw9FCmZQ02mv2UCiiXxp94b67Om5rSDUMtqKXhcYz5x4DvTGZcF3lvflbbCU782aSQRTy460MSnYmgVEu0C0+zCbDPhU1EDii4/AUk= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+111597+1787277+3901457@groups.io; dmarc=fail header.from= (p=none dis=none) Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by mx.zohomail.com with SMTPS id 1700633352162187.31665305693627; Tue, 21 Nov 2023 22:09:12 -0800 (PST) Return-Path: DKIM-Signature: a=rsa-sha256; bh=LyOYOTzDHtf4fmSJvTuv1QsTgm/i423WNEapGv4keqE=; c=relaxed/simple; d=groups.io; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References:MIME-Version:Precedence:List-Subscribe:List-Help:Sender:List-Id:Mailing-List:Delivered-To:Reply-To:List-Unsubscribe-Post:List-Unsubscribe:Content-Transfer-Encoding; s=20140610; t=1700633351; v=1; b=xJQW5eJD1GhMfhRVoHlH3enLkhHg+VHr8HM63AXK193mH8a96l+a1/AgUj8S30alDrGCqLSR oa1iAsJT4L4bjzX/nhsF+GY+jJlDcQG2hlITgcW2Ye4iKawnoAAjDDNN3WRblay8TUbXhm+U7H7 caeInxqRIUR47S1U+l+GYHE8= X-Received: by 127.0.0.2 with SMTP id fZyfYY1788612xpjY85FRnd3; Tue, 21 Nov 2023 22:09:11 -0800 X-Received: from mgamail.intel.com (mgamail.intel.com [192.55.52.151]) by mx.groups.io with SMTP id smtpd.web11.13638.1700633335895148945 for ; Tue, 21 Nov 2023 22:09:06 -0800 X-IronPort-AV: E=McAfee;i="6600,9927,10901"; a="372166281" X-IronPort-AV: E=Sophos;i="6.04,217,1695711600"; d="scan'208";a="372166281" X-Received: from fmviesa001.fm.intel.com ([10.60.135.141]) by fmsmga107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 21 Nov 2023 22:09:06 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.04,217,1695711600"; d="scan'208";a="15129583" X-Received: from shwdeopenlab813.ccr.corp.intel.com ([10.239.55.230]) by fmviesa001.fm.intel.com with ESMTP; 21 Nov 2023 22:09:04 -0800 From: "Yuanhao Xie" To: devel@edk2.groups.io Cc: xieyuanh , Ray Ni , Eric Dong , Rahul Kumar , Tom Lendacky , Laszlo Ersek Subject: [edk2-devel] [Patch V3 3/3] UefiCpuPkg/MpInitLib: Extract Dump Microcode Revision as function. Date: Wed, 22 Nov 2023 14:08:34 +0800 Message-Id: <20231122060834.3467-4-yuanhao.xie@intel.com> In-Reply-To: <20231122060834.3467-1-yuanhao.xie@intel.com> References: <20231122060834.3467-1-yuanhao.xie@intel.com> MIME-Version: 1.0 Precedence: Bulk List-Subscribe: List-Help: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,yuanhao.xie@intel.com List-Unsubscribe-Post: List-Unsubscribe=One-Click List-Unsubscribe: X-Gm-Message-State: GlqtflLLRJmM930eN1768uIux1787277AA= Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @groups.io) X-ZM-MESSAGEID: 1700633353884100003 Content-Type: text/plain; charset="utf-8" There is no functional changes, only extract DumpMicrocodeRevision since only in PEI BSP will detect, apply microcode, and APs will sync microcode. Cc: Ray Ni Cc: Eric Dong Cc: Rahul Kumar Cc: Tom Lendacky Cc: Laszlo Ersek Signed-off-by: Yuanhao Xie --- UefiCpuPkg/Library/MpInitLib/Microcode.c | 91 ++++++++++++++++++++++++++++= +++++++++++++++++---------------------------------------------- UefiCpuPkg/Library/MpInitLib/MpLib.c | 31 ++--------------------------= --- UefiCpuPkg/Library/MpInitLib/MpLib.h | 31 ++++++++++------------------= --- 3 files changed, 57 insertions(+), 96 deletions(-) diff --git a/UefiCpuPkg/Library/MpInitLib/Microcode.c b/UefiCpuPkg/Library/= MpInitLib/Microcode.c index 11720560af..c0ca85543a 100644 --- a/UefiCpuPkg/Library/MpInitLib/Microcode.c +++ b/UefiCpuPkg/Library/MpInitLib/Microcode.c @@ -322,65 +322,64 @@ OnExit: } =20 /** - Shadow the required microcode patches data into memory. + Dump the microcode revision for each core. =20 - @param[in, out] CpuMpData The pointer to CPU MP Data structure. -**/ + @param[in] CpuMpData Pointer to CPU MP Data + **/ VOID -ShadowMicrocodeUpdatePatch ( - IN OUT CPU_MP_DATA *CpuMpData +DumpMicrocodeRevision ( + IN CPU_MP_DATA *CpuMpData ) { - EFI_STATUS Status; + UINT32 ThreadId; + UINT32 ExpectedMicrocodeRevision; + CPU_INFO_IN_HOB *CpuInfoInHob; + UINTN Index; =20 - Status =3D PlatformShadowMicrocode (CpuMpData); - if (EFI_ERROR (Status)) { - ShadowMicrocodePatchByPcd (CpuMpData); + // + // Dump the microcode revision for each core. + // + DEBUG_CODE_BEGIN (); + CpuInfoInHob =3D (CPU_INFO_IN_HOB *)(UINTN)CpuMpData->CpuInfoInHob; + for (Index =3D 0; Index < CpuMpData->CpuCount; Index++) { + GetProcessorLocationByApicId (CpuInfoInHob[Index].InitialApicId, NULL,= NULL, &ThreadId); + if (ThreadId =3D=3D 0) { + // + // MicrocodeDetect() loads microcode in first thread of each core, s= o, + // CpuMpData->CpuData[Index].MicrocodeEntryAddr is initialized only = for first thread of each core. + // + ExpectedMicrocodeRevision =3D 0; + if (CpuMpData->CpuData[Index].MicrocodeEntryAddr !=3D 0) { + ExpectedMicrocodeRevision =3D ((CPU_MICROCODE_HEADER *)(UINTN)CpuM= pData->CpuData[Index].MicrocodeEntryAddr)->UpdateRevision; + } + + DEBUG (( + DEBUG_INFO, + "CPU[%04d]: Microcode revision =3D %08x, expected =3D %08x\n", + Index, + CpuMpData->CpuData[Index].MicrocodeRevision, + ExpectedMicrocodeRevision + )); + } } + + DEBUG_CODE_END (); } =20 /** - Get the cached microcode patch base address and size from the microcode = patch - information cache HOB. - - @param[out] Address Base address of the microcode patches data. - It will be updated if the microcode patch - information cache HOB is found. - @param[out] RegionSize Size of the microcode patches data. - It will be updated if the microcode patch - information cache HOB is found. - - @retval TRUE The microcode patch information cache HOB is found. - @retval FALSE The microcode patch information cache HOB is not found. + Shadow the required microcode patches data into memory. =20 + @param[in, out] CpuMpData The pointer to CPU MP Data structure. **/ -BOOLEAN -GetMicrocodePatchInfoFromHob ( - UINT64 *Address, - UINT64 *RegionSize +VOID +ShadowMicrocodeUpdatePatch ( + IN OUT CPU_MP_DATA *CpuMpData ) { - EFI_HOB_GUID_TYPE *GuidHob; - EDKII_MICROCODE_PATCH_HOB *MicrocodePathHob; + EFI_STATUS Status; =20 - GuidHob =3D GetFirstGuidHob (&gEdkiiMicrocodePatchHobGuid); - if (GuidHob =3D=3D NULL) { - DEBUG ((DEBUG_INFO, "%a: Microcode patch cache HOB is not found.\n", _= _func__)); - return FALSE; + Status =3D PlatformShadowMicrocode (CpuMpData); + if (EFI_ERROR (Status)) { + ShadowMicrocodePatchByPcd (CpuMpData); } - - MicrocodePathHob =3D GET_GUID_HOB_DATA (GuidHob); - - *Address =3D MicrocodePathHob->MicrocodePatchAddress; - *RegionSize =3D MicrocodePathHob->MicrocodePatchRegionSize; - - DEBUG (( - DEBUG_INFO, - "%a: MicrocodeBase =3D 0x%lx, MicrocodeSize =3D 0x%lx\n", - __func__, - *Address, - *RegionSize - )); - - return TRUE; } diff --git a/UefiCpuPkg/Library/MpInitLib/MpLib.c b/UefiCpuPkg/Library/MpIn= itLib/MpLib.c index 538095d3bb..2fd96bf0bc 100644 --- a/UefiCpuPkg/Library/MpInitLib/MpLib.c +++ b/UefiCpuPkg/Library/MpInitLib/MpLib.c @@ -2282,37 +2282,10 @@ MpInitLibInitialize ( } } =20 - // - // Dump the microcode revision for each core. - // - DEBUG_CODE_BEGIN (); - UINT32 ThreadId; - UINT32 ExpectedMicrocodeRevision; - - CpuInfoInHob =3D (CPU_INFO_IN_HOB *)(UINTN)CpuMpData->CpuInfoInHob; - for (Index =3D 0; Index < CpuMpData->CpuCount; Index++) { - GetProcessorLocationByApicId (CpuInfoInHob[Index].InitialApicId, NULL,= NULL, &ThreadId); - if (ThreadId =3D=3D 0) { - // - // MicrocodeDetect() loads microcode in first thread of each core, s= o, - // CpuMpData->CpuData[Index].MicrocodeEntryAddr is initialized only = for first thread of each core. - // - ExpectedMicrocodeRevision =3D 0; - if (CpuMpData->CpuData[Index].MicrocodeEntryAddr !=3D 0) { - ExpectedMicrocodeRevision =3D ((CPU_MICROCODE_HEADER *)(UINTN)CpuM= pData->CpuData[Index].MicrocodeEntryAddr)->UpdateRevision; - } - - DEBUG (( - DEBUG_INFO, - "CPU[%04d]: Microcode revision =3D %08x, expected =3D %08x\n", - Index, - CpuMpData->CpuData[Index].MicrocodeRevision, - ExpectedMicrocodeRevision - )); - } + if (MpHandOff =3D=3D NULL) { + DumpMicrocodeRevision (CpuMpData); } =20 - DEBUG_CODE_END (); // // Initialize global data for MP support // diff --git a/UefiCpuPkg/Library/MpInitLib/MpLib.h b/UefiCpuPkg/Library/MpIn= itLib/MpLib.h index 763db4963d..fd302e6845 100644 --- a/UefiCpuPkg/Library/MpInitLib/MpLib.h +++ b/UefiCpuPkg/Library/MpInitLib/MpLib.h @@ -735,34 +735,23 @@ MicrocodeDetect ( ); =20 /** - Shadow the required microcode patches data into memory. + Dump the microcode revision for each core. =20 - @param[in, out] CpuMpData The pointer to CPU MP Data structure. -**/ + @param[in] CpuMpData Pointer to CPU MP Data + **/ VOID -ShadowMicrocodeUpdatePatch ( - IN OUT CPU_MP_DATA *CpuMpData +DumpMicrocodeRevision ( + IN CPU_MP_DATA *CpuMpData ); =20 /** - Get the cached microcode patch base address and size from the microcode = patch - information cache HOB. - - @param[out] Address Base address of the microcode patches data. - It will be updated if the microcode patch - information cache HOB is found. - @param[out] RegionSize Size of the microcode patches data. - It will be updated if the microcode patch - information cache HOB is found. - - @retval TRUE The microcode patch information cache HOB is found. - @retval FALSE The microcode patch information cache HOB is not found. + Shadow the required microcode patches data into memory. =20 + @param[in, out] CpuMpData The pointer to CPU MP Data structure. **/ -BOOLEAN -GetMicrocodePatchInfoFromHob ( - UINT64 *Address, - UINT64 *RegionSize +VOID +ShadowMicrocodeUpdatePatch ( + IN OUT CPU_MP_DATA *CpuMpData ); =20 /** --=20 2.39.1.windows.1 -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#111597): https://edk2.groups.io/g/devel/message/111597 Mute This Topic: https://groups.io/mt/102744601/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-