From nobody Tue Apr 30 06:35:21 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of groups.io designates 66.175.222.12 as permitted sender) client-ip=66.175.222.12; envelope-from=bounce+27952+53359+1787277+3901457@groups.io; helo=web01.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+53359+1787277+3901457@groups.io; dmarc=fail(p=none dis=none) header.from=intel.com ARC-Seal: i=1; a=rsa-sha256; t=1579260945; cv=none; d=zohomail.com; s=zohoarc; b=ML9W4jcYP6z38lazI6LFDskQAs+05wzHbM+BBUeh7Do8E/XXsQUTGNzhMVW4omtn66PRZfdvWWdLeRRbtQoBynNmINSGpfMyy3ppba9Ygniv/LyyiD6hVL0FIMiGzstrerXB1sDoE91Cka5knMAI8soS4y6EfFcsUn4GAlxddTg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1579260945; h=Cc:Date:From:List-Id:List-Unsubscribe:Message-ID:Reply-To:Sender:Subject:To; bh=vm/ZedC5goEZKXm9Ywu0USUySqvE1h3FV6E8FR1ngc0=; b=ckFtg4vMOw3NxyTSscQmoonHDiyIEsQvZttIqM4W/gEqTQzXi9JUzPtU5U7Wb8Caqx+XzbWTp3YH++BjIkX9dN3eY5MabSX9SUQt4AYFH0Usy28+NLBUZT5A+rXtcMrLnGZ0sq66esQqsA7nDOmqdre8Jwe7BWMfFWksmEz7yQw= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+53359+1787277+3901457@groups.io; dmarc=fail header.from= (p=none dis=none) header.from= Received: from web01.groups.io (web01.groups.io [66.175.222.12]) by mx.zohomail.com with SMTPS id 1579260945480556.0849555907807; Fri, 17 Jan 2020 03:35:45 -0800 (PST) Return-Path: X-Received: by 127.0.0.2 with SMTP id LaF3YY1788612xDdMbiCkgMS; Fri, 17 Jan 2020 03:35:44 -0800 X-Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by mx.groups.io with SMTP id smtpd.web10.5303.1579260943274980276 for ; Fri, 17 Jan 2020 03:35:43 -0800 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False X-Received: from fmsmga002.fm.intel.com ([10.253.24.26]) by fmsmga105.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 17 Jan 2020 03:35:42 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.70,330,1574150400"; d="scan'208";a="257771515" X-Received: from unknown (HELO SHWDEOPENPSI014.ccr.corp.intel.com) ([10.239.9.8]) by fmsmga002.fm.intel.com with ESMTP; 17 Jan 2020 03:35:41 -0800 From: "Wu, Hao A" To: devel@edk2.groups.io Cc: Hao A Wu , Eric Dong , Ray Ni , Laszlo Ersek , Michael D Kinney Subject: [edk2-devel] [PATCH v2] UefiCpuPkg/MpInitLib: Fix possible uninitialized 'InitFlag' field Date: Fri, 17 Jan 2020 19:35:25 +0800 Message-Id: <20200117113525.4768-1-hao.a.wu@intel.com> Precedence: Bulk List-Unsubscribe: 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,hao.a.wu@intel.com X-Gm-Message-State: obJOXooHfyQlSxxFC3TYJcIwx1787277AA= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1579260944; bh=Vii6WSc61R+rGzigpWoMj42uR6IiZhq/5n7SWqKPOHQ=; h=Cc:Date:From:Reply-To:Subject:To; b=YelHJt5WonEGImqPBJJCmoYCptjmBqISz3jYW/G5VpenqCPIq6fgQgbjikFSwYxKDCg wLwAXNPSU4hXvQsGRBmPhFecjX1HDJxaUFso5ChjaZkHldOxRfFvBPqycZ/yDCk7lYMDX 8LIt5iAYlAieN+BrweVnv9j1BNAinRn4QbA= X-ZohoMail-DKIM: pass (identity @groups.io) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" REF:https://bugzilla.tianocore.org/show_bug.cgi?id=3D2474 Previous commit d786a17232: UefiCpuPkg/MpInitLib: Reduce the size when loading microcode patches Removed the below assignments for the 'InitFlag' field of CPU_MP_DATA structure in function MpInitLibInitialize() when APs are waken up to do some initialize sync: CpuMpData->InitFlag =3D ApInitReconfig; ... CpuMpData->InitFlag =3D ApInitDone; The above commit mistakenly assumed the 'InitFlag' field will have a value of 'ApInitDone' when the APs have been successfully waken up before. And since there is no explicit comparision for the 'InitFlag' field with the 'ApInitReconfig' value. The commit removed those assignments. However, under some cases (e.g. when variable OldCpuMpData is not NULL, which means function CollectProcessorCount() will not be called), removing the above assignments will left the 'InitFlag' field being uninitialized with a value of 0, which is a invalid value for the type of 'InitFlag' (AP_INIT_STATE). It may potentially cause the WakeUpAP() function to run some unnecessary codes when the APs have been successfully waken up before: if (CpuMpData->WakeUpByInitSipiSipi || CpuMpData->InitFlag !=3D ApInitDone) { ResetVectorRequired =3D TRUE; AllocateResetVector (CpuMpData); FillExchangeInfoData (CpuMpData); SaveLocalApicTimerSetting (CpuMpData); } This commit will address the above-mentioned issue. Test done: * OS boot on a real platform with multi processors Cc: Eric Dong Cc: Ray Ni Cc: Laszlo Ersek Cc: Michael D Kinney Signed-off-by: Hao A Wu Reviewed-by: Ray Ni Acked-by: Laszlo Ersek --- UefiCpuPkg/Library/MpInitLib/MpLib.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/UefiCpuPkg/Library/MpInitLib/MpLib.c b/UefiCpuPkg/Library/MpIn= itLib/MpLib.c index 6ec9b172b8..855d37ba3e 100644 --- a/UefiCpuPkg/Library/MpInitLib/MpLib.c +++ b/UefiCpuPkg/Library/MpInitLib/MpLib.c @@ -1775,11 +1775,15 @@ MpInitLibInitialize ( // Wakeup APs to do some AP initialize sync (Microcode & MTRR) // if (CpuMpData->CpuCount > 1) { + CpuMpData->InitFlag =3D ApInitReconfig; WakeUpAP (CpuMpData, TRUE, 0, ApInitializeSync, CpuMpData, TRUE); + // + // Wait for all APs finished initialization + // while (CpuMpData->FinishedCount < (CpuMpData->CpuCount - 1)) { CpuPause (); } - + CpuMpData->InitFlag =3D ApInitDone; for (Index =3D 0; Index < CpuMpData->CpuCount; Index++) { SetApState (&CpuMpData->CpuData[Index], CpuStateIdle); } --=20 2.12.0.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 (#53359): https://edk2.groups.io/g/devel/message/53359 Mute This Topic: https://groups.io/mt/69841061/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-