From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga17.intel.com (mga17.intel.com [192.55.52.151]) by mx.groups.io with SMTP id smtpd.web09.2479.1615956923320513560 for ; Tue, 16 Mar 2021 21:55:23 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@intel.onmicrosoft.com header.s=selector2-intel-onmicrosoft-com header.b=kQCxcyNj; spf=pass (domain: intel.com, ip: 192.55.52.151, mailfrom: eric.dong@intel.com) IronPort-SDR: X/g/9miPaYyd3s4A/fjePWck8arJRSdveNQptIa0/MEaSyRpMQqCdPGOs/1JDrH1MfK56gxJ9i ISwxFMRpcJFg== X-IronPort-AV: E=McAfee;i="6000,8403,9925"; a="169304799" X-IronPort-AV: E=Sophos;i="5.81,254,1610438400"; d="scan'208";a="169304799" Received: from orsmga006.jf.intel.com ([10.7.209.51]) by fmsmga107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 16 Mar 2021 21:55:21 -0700 IronPort-SDR: MNlhlN/av8BakD/ZjmM2NrgMjrrJHU/DTz+uKKHLFN3ZZONCPQ3AXc3i7I5ikE7XBUasVbuubm H6ZL2xXRxGmw== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.81,254,1610438400"; d="scan'208";a="374034253" Received: from orsmsx603.amr.corp.intel.com ([10.22.229.16]) by orsmga006.jf.intel.com with ESMTP; 16 Mar 2021 21:55:21 -0700 Received: from orsmsx610.amr.corp.intel.com (10.22.229.23) by ORSMSX603.amr.corp.intel.com (10.22.229.16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2106.2; Tue, 16 Mar 2021 21:55:21 -0700 Received: from orsmsx612.amr.corp.intel.com (10.22.229.25) by ORSMSX610.amr.corp.intel.com (10.22.229.23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2106.2; Tue, 16 Mar 2021 21:55:20 -0700 Received: from orsedg603.ED.cps.intel.com (10.7.248.4) by orsmsx612.amr.corp.intel.com (10.22.229.25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2106.2 via Frontend Transport; Tue, 16 Mar 2021 21:55:20 -0700 Received: from NAM11-BN8-obe.outbound.protection.outlook.com (104.47.58.174) by edgegateway.intel.com (134.134.137.100) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2106.2; Tue, 16 Mar 2021 21:55:19 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=MRQw3OenUuq0b0wpBCkdZGUcEXRNAl8HMPH0MVttedWgIgGzfRcO1Wt5eqlUhWugCX9jyyHM1XHWLLQJypLm5uoQoo0C37zA6nuTeRWm9aMNv/puh7oPBiuqirNRYawvYj+r/+wZ+gtvM2o4MZkT2AUjE3PHslMKnaSaFQrdYJm1zZHcNUcUjWrVZXnaD4YG/bPK/K3R9xoMPpqvZkD4ZKae+ma+nunSk5SQtGHgsEzRCnB3t9hDtnzVOV140FJFp1mP3wTb5D8LguCL9tv4MDZjTrki++2TR1Hg3saee309A+PwbtniLtF67Hd42Ah32Asa9Nhh0M6B4/31dKv4xg== 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=/Uo3Z0/TyxKVhEvoVE0zGgK4eO3YCEnt/J6Wz4aygCQ=; b=PslXkkrfTU02nfGhi1Tv+6/lf5HZxTdfnbUS2Ex85V+UUB3SIvY9vygpqh3jZ9TVQGJ8pzduTsHE4KUyWPPlJzyp7anp+LMIAyLfUu/VQnITzntpDkEyFZFm1BWffE2u9Dv/LlrBeLEj9fj5bQF0DjSZSjP1LvKrq3Gf/f29dfaXc19mZTZ+vSN4StUrhOyBe7blVbi9jq3LueIr9HyfpHWokEAoQRFSefOn0WFrTtXZvpZ/gYCX6fTIMoyW1sF1VtB3nn78xKUvh4qbvV7nOZaZZx34XHqHQ7Dvk1dkb62rESsa5D/6YW8uDi6AqMo9soW9j2QS6eN+HNLl7CwZ9Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=intel.onmicrosoft.com; s=selector2-intel-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=/Uo3Z0/TyxKVhEvoVE0zGgK4eO3YCEnt/J6Wz4aygCQ=; b=kQCxcyNjnE63sXmAZSzHiIIfEeRc5+8whTzHu7IOBk4TjCRIJJ1TJns0ooewaso59C2FVDX6ERRYVi7JDPeK81c5I1Q+/sXppBeFW4lPoiRzgniRe5X21yItAhDsCIPLAY0BNq3JsG/gj+lZO5qgTUn4p8oHSs6UPPQMZMmfOxM= Received: from CY4PR11MB1272.namprd11.prod.outlook.com (2603:10b6:903:29::9) by CY4PR11MB1480.namprd11.prod.outlook.com (2603:10b6:910:c::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3933.32; Wed, 17 Mar 2021 04:55:16 +0000 Received: from CY4PR11MB1272.namprd11.prod.outlook.com ([fe80::918c:7df3:f688:d5e9]) by CY4PR11MB1272.namprd11.prod.outlook.com ([fe80::918c:7df3:f688:d5e9%5]) with mapi id 15.20.3933.032; Wed, 17 Mar 2021 04:55:15 +0000 From: "Dong, Eric" To: "Ni, Ray" , "devel@edk2.groups.io" CC: Laszlo Ersek , "Kumar, Rahul1" Subject: Re: [PATCH v2] UefiCpuPkg/MpInitLib: avoid printing debug messages in AP Thread-Topic: [PATCH v2] UefiCpuPkg/MpInitLib: avoid printing debug messages in AP Thread-Index: AQHXGgcAUangDoaHjUaZVPOJAYTk8KqHn0Qw Date: Wed, 17 Mar 2021 04:55:15 +0000 Message-ID: References: <20210316015203.1507-1-ray.ni@intel.com> In-Reply-To: <20210316015203.1507-1-ray.ni@intel.com> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: intel.com; dkim=none (message not signed) header.d=none;intel.com; dmarc=none action=none header.from=intel.com; x-originating-ip: [192.55.46.54] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: be8a71f3-e6fe-4c00-47d7-08d8e900daf2 x-ms-traffictypediagnostic: CY4PR11MB1480: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:7219; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: 0yYJClNbnVPvyp8W7LKFZPs11dmY33iSGelePuNjW5OFO1Ka3EkIaVedinVeYOtcH4u/QAOPz7ruT+b8WieZzjYcbAsndU1Oqmzsr+JQYzNj5ZcuNHEB9NYyq8zAHXdK4+QhzC9mj/lYVeHBXwgR8hh/P3pJ/FDS8316ifVrMBJuk+DzxCIFpOJE5+UYvlaDiUD7xBp3J77caTojiWJ5z1gNcIbNyrEMNHOtjg/kkFp8uKd8sVWAw1PeoA7S+JU9hT5luAaI5LaZjsg4crJyJZn9Rv998gHByy20GvofU+fVFRjNjBwF1pqp5/HhIXevH+TCA18GMm5tPLB/4rHkxhAtCcyehKnTcsGinXYXvFIZje49Dbz4rR6oarUhrnDInJIcWE/O7mvsjBA61enFJOiXI8v8EFCLFjTUigcl2/eBsbioQc6Et5+OsoPMrKDoBve+k6QuK0j1fXVpSOgLICEQ7gSdtgMaK/ocmYrmH5CPw6mOhnvaKcQhTmduhmQhWRZ2010MAj2poXpfDEXw/NvAQsKyZUXoNOKdWFsNiTETT+tLOR+11ADC0ozokSam x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CY4PR11MB1272.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(6029001)(376002)(136003)(39860400002)(396003)(346002)(366004)(66476007)(76116006)(15650500001)(54906003)(8676002)(7696005)(8936002)(2906002)(86362001)(110136005)(478600001)(55016002)(107886003)(66946007)(71200400001)(53546011)(33656002)(9686003)(64756008)(66556008)(6506007)(52536014)(5660300002)(4326008)(26005)(66446008)(186003)(83380400001)(316002);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata: =?us-ascii?Q?F7BdZgAGCQdUniQJGDOU+j6cHEzYw2yNydQFvEZMd4ZSXEg1d6SZ4rudad2h?= =?us-ascii?Q?7NKJyUEVQ7TvEsrCKnxQZo/E9iS3jALoLmdMZEpc0CRVALmysBYa9ZqWudky?= =?us-ascii?Q?VSA5ZIdK8Ghjo7pRCPbukqnuKDtTfNftCOazUBt/acFHt/j97We0z0rYW8cZ?= =?us-ascii?Q?FdO68Q38/imH1i+MxljIMr+ocOSMZPb3U9ml7NHbyTaZFk4Z0AE9PMLSw2TM?= =?us-ascii?Q?J68XsOnYTPmpIR6Ez9Cf/A1lnlik9iqzhW42iIGBGSTEQP6kdFPuC34nU0QA?= =?us-ascii?Q?2p5a25Yuih60oZ3gSek0yfEvrr0+ebaOQMpi9GuYtCSPVSYGjKk2XN4g2Rvj?= =?us-ascii?Q?V61qorlbAS6kHA0+dHxkBVdMN5qnpCMPMQpC+QzNRCn20dMxBWqSpabhHJoD?= =?us-ascii?Q?SMW6afFuW2j1eHGkosl+uz9w7siRgHEf7Khb/WPRugyY0w205e4mpyygpeqP?= =?us-ascii?Q?w7FkyMxli185ckvnjOavA8NVN6A8q5jAFRGxZcjMdKY4HP6HC3MhiO4eaT6J?= =?us-ascii?Q?C4JWCLyf4KyxYF8Ogfh40Vn0fgPXqTFfIC2Z9uDRRKTdyLczNG5dr6SUDTod?= =?us-ascii?Q?dC0/0tkJU4RII8QA9QEjyvzz7PM7xTAAAdO/QC1Mw/lDqs8b3speFStR6uI1?= =?us-ascii?Q?+IRtAfEZ7lyij0ihzHRsKH2q+jPC9Td1zvslcxjrewB9MX3ekCkvUNlaX39Y?= =?us-ascii?Q?GIc4QIZtsSKDdwKMT0/s7UE1GZMezgtzTDxmmNwtnU2f9T35Gj4i6eNKcQNh?= =?us-ascii?Q?n8WHitQ9cS6nTrHhxSEvVqgPBp564VlKK9gy/V5Jq8dQ3UnC2tTbZxpjVE7P?= =?us-ascii?Q?mQdEpE55KwSbBXwy14rsCvBQyKShMZVJvOY7PEpMWSVdvz2kutRUUGm3W6PD?= =?us-ascii?Q?n795GeIpc+SrnwbH5CWYG7jOns+YTdN8D7Hvb+Lb2BD9i3kRYJO5VAyYPona?= =?us-ascii?Q?6drhezFL/aU9a4tEn3ze6Fsuu6vEDJCNjrN0kKwdWS17j8Y0qd8Bww2ilCX4?= =?us-ascii?Q?27/syKr2pdAdiDL6Rjw6ocIfzEb5NepSM0XAfpVT6cZnnckriCDRZI7nRcU6?= =?us-ascii?Q?YV0hRW+LNNKLpuwZb8ZVEoTlBSblp883DLNEQmAHOMi34yDyDNwh69XJBqJq?= =?us-ascii?Q?3+MoH7qSuakrOStgEV4rx6if4hUYpqWJz/PMWNaIVPo7W2TPPKe3M9WS8Md/?= =?us-ascii?Q?2HKnChNjJjGpLzu5Ztay07xvZHhLt88L8wpQQlvuC3af4bUN4HgyP5nrvZft?= =?us-ascii?Q?DwwTVt/KXDv7HkQ78pgQj4MfvHwbArj1wsmTTzWxIhweZYr0wKQpuMtkpNUi?= =?us-ascii?Q?5js=3D?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: CY4PR11MB1272.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: be8a71f3-e6fe-4c00-47d7-08d8e900daf2 X-MS-Exchange-CrossTenant-originalarrivaltime: 17 Mar 2021 04:55:15.3938 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: ZMINJgtBesin4yqDw57HOcSCCdDzH0d1CWDv5T3K5lQR1kXflm+3nK2DzkE8LSuIAjPxFWITO1mVHGB8g2Cqfw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY4PR11MB1480 Return-Path: eric.dong@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Reviewed-by: Eric Dong -----Original Message----- From: Ni, Ray =20 Sent: Tuesday, March 16, 2021 9:52 AM To: devel@edk2.groups.io Cc: Dong, Eric ; Laszlo Ersek ; Kum= ar, Rahul1 Subject: [PATCH v2] UefiCpuPkg/MpInitLib: avoid printing debug messages in = AP MpInitLib contains a function MicrocodeDetect() which is called by all threads as an AP procedure. Today this function contains below code: if (CurrentRevision !=3D LatestRevision) { AcquireSpinLock(&CpuMpData->MpLock); DEBUG (( EFI_D_ERROR, "Updated microcode signature [0x%08x] does not match \ loaded microcode signature [0x%08x]\n", CurrentRevision, LatestRevision )); ReleaseSpinLock(&CpuMpData->MpLock); } When the if-check is passed, the code may call into PEI services: 1. AcquireSpinLock When the PcdSpinTimeout is not 0, TimerLib GetPerformanceCounterProperties() is called. And some of the TimerLib implementations would get the information cached in HOB. But AP procedure cannot call PEI services to retrieve the HOB list. 2. DEBUG Certain DebugLib relies on ReportStatusCode services and the ReportStatusCode PPI is retrieved through the PEI services. DebugLibSerialPort should be used. But when SerialPortLib is implemented to depend on PEI services, even using DebugLibSerialPort can still cause AP calls PEI services resulting hang. It causes a lot of debugging effort on the platform side. There are 2 options to fix the problem: 1. make sure platform DSC chooses the proper DebugLib and set the PcdSpinTimeout to 0. So that AcquireSpinLock and DEBUG don't call PEI services. 2. remove the AcquireSpinLock and DEBUG call from the procedure. Option #2 is preferred because it's not practical to ask every platform DSC to be written properly. Following option #2, there are two sub-options: 2.A. Just remove the if-check. 2.B. Capture the CurrentRevision and ExpectedRevision in the memory for each AP and print them together from BSP. The patch follows option 2.B. Signed-off-by: Ray Ni Cc: Eric Dong Cc: Laszlo Ersek Cc: Rahul Kumar --- UefiCpuPkg/Library/MpInitLib/Microcode.c | 11 +---------- UefiCpuPkg/Library/MpInitLib/MpLib.c | 25 ++++++++++++++++++++++++ UefiCpuPkg/Library/MpInitLib/MpLib.h | 1 + 3 files changed, 27 insertions(+), 10 deletions(-) diff --git a/UefiCpuPkg/Library/MpInitLib/Microcode.c b/UefiCpuPkg/Library/= MpInitLib/Microcode.c index 15629591e2..297c2abcd1 100644 --- a/UefiCpuPkg/Library/MpInitLib/Microcode.c +++ b/UefiCpuPkg/Library/MpInitLib/Microcode.c @@ -315,17 +315,8 @@ Done: MSR_IA32_BIOS_UPDT_TRIG, (UINT64) (UINTN) MicrocodeData ); - // - // Get and check new microcode signature - // - CurrentRevision =3D GetCurrentMicrocodeSignature (); - if (CurrentRevision !=3D LatestRevision) { - AcquireSpinLock(&CpuMpData->MpLock); - DEBUG ((EFI_D_ERROR, "Updated microcode signature [0x%08x] does not = match \ - loaded microcode signature [0x%08x]\n", CurrentRevision, L= atestRevision)); - ReleaseSpinLock(&CpuMpData->MpLock); - } } + CpuMpData->CpuData[ProcessorNumber].MicrocodeRevision =3D GetCurrentMicr= ocodeSignature (); } =20 /** diff --git a/UefiCpuPkg/Library/MpInitLib/MpLib.c b/UefiCpuPkg/Library/MpIn= itLib/MpLib.c index 5040053dad..3d945972a0 100644 --- a/UefiCpuPkg/Library/MpInitLib/MpLib.c +++ b/UefiCpuPkg/Library/MpInitLib/MpLib.c @@ -2135,6 +2135,31 @@ MpInitLibInitialize ( } } =20 + // + // Dump the microcode revision for each core. + // + DEBUG_CODE ( + 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, NUL= L, NULL, &ThreadId); + if (ThreadId =3D=3D 0) { + // + // MicrocodeDetect() loads microcode in first thread of each core,= so, + // CpuMpData->CpuData[Index].MicrocodeEntryAddr is initialized onl= y for first thread of each core. + // + ExpectedMicrocodeRevision =3D 0; + if (CpuMpData->CpuData[Index].MicrocodeEntryAddr !=3D 0) { + ExpectedMicrocodeRevision =3D ((CPU_MICROCODE_HEADER *)(UINTN)Cp= uMpData->CpuData[Index].MicrocodeEntryAddr)->UpdateRevision; + } + DEBUG (( + DEBUG_INFO, "CPU[%04d]: Microcode revision =3D %08x, expected = =3D %08x\n", + Index, CpuMpData->CpuData[Index].MicrocodeRevision, ExpectedMicr= ocodeRevision + )); + } + } + ); // // Initialize global data for MP support // diff --git a/UefiCpuPkg/Library/MpInitLib/MpLib.h b/UefiCpuPkg/Library/MpIn= itLib/MpLib.h index 0bd60388b1..66f9eb2304 100644 --- a/UefiCpuPkg/Library/MpInitLib/MpLib.h +++ b/UefiCpuPkg/Library/MpInitLib/MpLib.h @@ -144,6 +144,7 @@ typedef struct { UINT32 ProcessorSignature; UINT8 PlatformId; UINT64 MicrocodeEntryAddr; + UINT32 MicrocodeRevision; } CPU_AP_DATA; =20 // --=20 2.27.0.windows.1