From nobody Mon May 6 08:01:57 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of groups.io designates 66.175.222.12 as permitted sender) client-ip=66.175.222.12; envelope-from=bounce+27952+44673+1787277+3901457@groups.io; helo=web01.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zoho.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+44673+1787277+3901457@groups.io; dmarc=fail(p=none dis=none) header.from=intel.com ARC-Seal: i=1; a=rsa-sha256; t=1564560065; cv=none; d=zoho.com; s=zohoarc; b=MGDBmvMb1deqXSY0RakQMsJB3qjS7AiDLIYhQEs8s3L4V5hXJJu1KS6/Dbfp8+1kAOftPXquKiVC4Dd4mX6sJ0z6XvdXKHVXLNROjTTKmnRq4061wUJz6rFS3iTClpJRYlKyNi0SIM6Y2ezAAl1GtV7ilFyL2lmoUCX7zZCPp6I= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1564560065; h=Content-Transfer-Encoding:Cc:Date:From:List-Id:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:Sender:Subject:To:ARC-Authentication-Results; bh=xpgC70grRRepW2lT90gadybjwp9mWbZacvcA49wkDd8=; b=hSrWe2tUIH2mmSYsTAaHyIyoFTskjtF+GnlVMhk5VhpklTp7rmfERYNmJCP8qjTS/zgncVK2Nn9K5VUCbSI8IkRafJnmx6nlfsNlorfhWNvd9C9MblWv4l8cR430qqa+G7XZeFUuWRKDfLz+QMuJ8DsYt0yqdl3+9wYgG/9iQfs= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=pass; spf=pass (zoho.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+44673+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 1564560065730173.02189643358633; Wed, 31 Jul 2019 01:01:05 -0700 (PDT) Return-Path: X-Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by groups.io with SMTP; Wed, 31 Jul 2019 01:01:04 -0700 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False X-Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by fmsmga101.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 31 Jul 2019 01:01:04 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.64,329,1559545200"; d="scan'208";a="191183002" X-Received: from ydong10-win10.ccr.corp.intel.com ([10.239.158.133]) by fmsmga001.fm.intel.com with ESMTP; 31 Jul 2019 01:01:03 -0700 From: "Dong, Eric" To: devel@edk2.groups.io Cc: Ray Ni , Laszlo Ersek Subject: [edk2-devel] [Patch] UefiCpuPkg/MpInitLib: Avoid copy twice. Date: Wed, 31 Jul 2019 16:01:02 +0800 Message-Id: <20190731080102.7292-1-eric.dong@intel.com> MIME-Version: 1.0 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,eric.dong@intel.com Content-Transfer-Encoding: quoted-printable DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1564560065; bh=ayLnwgzFwR80lQcVyXwE1faqIE1kiFr2Xvcvz8yX0HQ=; h=Cc:Date:From:Reply-To:Subject:To; b=gc99ln4g94ceOJGevxoxUXOPQU49uLnmEzpP+PxT+3+3gBPW94Tr8Bql7BEoHjA2NvL rjjCTb403qUd4ZISV4lHfQSCf6x4i643Txrdch7ZRpOkEZd/uYngRPX/se5KHyBAaNMQJ FEkqHKVE1JNTdc1SAPanqKY0n+tzFihwOGk= X-ZohoMail-DKIM: pass (identity @groups.io) Content-Type: text/plain; charset="utf-8" REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3D1982 MpInitLibInitialize in MpLib.c will be invoked on both PEI and DXE CPU code, MicrocodeDetect would be performed twice and copy Microcode from flash to memory twice as well, which consider as duplicate work to lead longer boot time. This patch just use microcode memory copied in PEI phase if exist. Signed-off-by: Eric Dong Cc: Ray Ni Cc: Laszlo Ersek Reviewed-by: Laszlo Ersek Reviewed-by: Ray Ni --- UefiCpuPkg/Library/MpInitLib/MpLib.c | 62 +++++++++++++++------------- 1 file changed, 33 insertions(+), 29 deletions(-) diff --git a/UefiCpuPkg/Library/MpInitLib/MpLib.c b/UefiCpuPkg/Library/MpIn= itLib/MpLib.c index 572495ec36..a1ad665564 100644 --- a/UefiCpuPkg/Library/MpInitLib/MpLib.c +++ b/UefiCpuPkg/Library/MpInitLib/MpLib.c @@ -1607,38 +1607,42 @@ MpInitLibInitialize ( CpuMpData->SwitchBspFlag =3D FALSE; CpuMpData->CpuData =3D (CPU_AP_DATA *) (CpuMpData + 1); CpuMpData->CpuInfoInHob =3D (UINT64) (UINTN) (CpuMpData->CpuData + M= axLogicalProcessorNumber); - CpuMpData->MicrocodePatchRegionSize =3D PcdGet64 (PcdCpuMicrocodePatchRe= gionSize); - // - // If platform has more than one CPU, relocate microcode to memory to re= duce - // loading microcode time. - // - MicrocodePatchInRam =3D NULL; - if (MaxLogicalProcessorNumber > 1) { - MicrocodePatchInRam =3D AllocatePages ( - EFI_SIZE_TO_PAGES ( - (UINTN)CpuMpData->MicrocodePatchRegionSize - ) - ); - } - if (MicrocodePatchInRam =3D=3D NULL) { - // - // there is only one processor, or no microcode patch is available, or - // memory allocation failed - // - CpuMpData->MicrocodePatchAddress =3D PcdGet64 (PcdCpuMicrocodePatchAdd= ress); - } else { + if (OldCpuMpData =3D=3D NULL) { + CpuMpData->MicrocodePatchRegionSize =3D PcdGet64 (PcdCpuMicrocodePatch= RegionSize); // - // there are multiple processors, and a microcode patch is available, = and - // memory allocation succeeded + // If platform has more than one CPU, relocate microcode to memory to = reduce + // loading microcode time. // - CopyMem ( - MicrocodePatchInRam, - (VOID *)(UINTN)PcdGet64 (PcdCpuMicrocodePatchAddress), - (UINTN)CpuMpData->MicrocodePatchRegionSize - ); - CpuMpData->MicrocodePatchAddress =3D (UINTN)MicrocodePatchInRam; + MicrocodePatchInRam =3D NULL; + if (MaxLogicalProcessorNumber > 1) { + MicrocodePatchInRam =3D AllocatePages ( + EFI_SIZE_TO_PAGES ( + (UINTN)CpuMpData->MicrocodePatchRegionSize + ) + ); + } + if (MicrocodePatchInRam =3D=3D NULL) { + // + // there is only one processor, or no microcode patch is available, = or + // memory allocation failed + // + CpuMpData->MicrocodePatchAddress =3D PcdGet64 (PcdCpuMicrocodePatchA= ddress); + } else { + // + // there are multiple processors, and a microcode patch is available= , and + // memory allocation succeeded + // + CopyMem ( + MicrocodePatchInRam, + (VOID *)(UINTN)PcdGet64 (PcdCpuMicrocodePatchAddress), + (UINTN)CpuMpData->MicrocodePatchRegionSize + ); + CpuMpData->MicrocodePatchAddress =3D (UINTN)MicrocodePatchInRam; + } + }else { + CpuMpData->MicrocodePatchRegionSize =3D OldCpuMpData->MicrocodePatchRe= gionSize; + CpuMpData->MicrocodePatchAddress =3D OldCpuMpData->MicrocodePatchAd= dress; } - InitializeSpinLock(&CpuMpData->MpLock); =20 // --=20 2.21.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 (#44673): https://edk2.groups.io/g/devel/message/44673 Mute This Topic: https://groups.io/mt/32664555/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-