From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by mx.groups.io with SMTP id smtpd.web10.7304.1686636811551339614 for ; Mon, 12 Jun 2023 23:13:47 -0700 Authentication-Results: mx.groups.io; dkim=fail reason="unable to parse pub key" header.i=@intel.com header.s=intel header.b=e1s+ikHI; spf=pass (domain: intel.com, ip: 192.55.52.115, mailfrom: ray.ni@intel.com) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1686636827; x=1718172827; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=vu2nbWw+HfAarBe4yw7+5A0+kInBs2DumvyWD1+g6hQ=; b=e1s+ikHIjy2jQkfX9U7Kkq3SFcg+pqRYL9c29PndfEvKtfo/Cg10bcl5 1yCxMgkY3qg4EJzAyyCzcaSBdi0IkGx/KiKAZMAxgSJh7gGFaJH4O7zpM ZlSl5xZnJt0JgM9wP4jkOvSAEYfG080KAZ1/8oKHwYTw6CEydAU1FEWhw noH2hn79X1HVFiS8vWXoPlrgsD0hQTR66ThUyV3OfUb3baVsr3dorDfsZ 3We+UAlFHN7cEByekOviozahWIpDGkW+XryETS34Kc0IZOazz7tktpG32 IOXRxsCTx+drDtlIKziJe7F31Jl/zWlBEOlwkVCBhq3Pd8lUwYo8qmV80 w==; X-IronPort-AV: E=McAfee;i="6600,9927,10739"; a="358238310" X-IronPort-AV: E=Sophos;i="6.00,238,1681196400"; d="scan'208";a="358238310" Received: from orsmga008.jf.intel.com ([10.7.209.65]) by fmsmga103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 12 Jun 2023 23:13:47 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10739"; a="741306394" X-IronPort-AV: E=Sophos;i="6.00,238,1681196400"; d="scan'208";a="741306394" Received: from shwdeopenlab706.ccr.corp.intel.com ([10.239.55.95]) by orsmga008.jf.intel.com with ESMTP; 12 Jun 2023 23:13:45 -0700 From: "Ni, Ray" To: devel@edk2.groups.io Cc: Eric Dong , Rahul Kumar , Gerd Hoffmann , Jiaxin Wu Subject: [PATCH V3 7/8] UefiCpuPkg/SmmCpu: Add PcdSmmApPerfLogEnable control AP perf-logging Date: Tue, 13 Jun 2023 14:13:24 +0800 Message-Id: <20230613061325.1664-8-ray.ni@intel.com> X-Mailer: git-send-email 2.39.1.windows.1 In-Reply-To: <20230613061325.1664-1-ray.ni@intel.com> References: <20230613061325.1664-1-ray.ni@intel.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable When a platform has lots of CPU cores/threads, perf-logging on every AP produces lots of records. When this multiplies with number of SMIs during post, the records are even more. So, this patch adds a new PCD PcdSmmApPerfLogEnable (default TRUE) to allow platform to turn off perf-logging on APs. Cc: Eric Dong Cc: Rahul Kumar Cc: Gerd Hoffmann Reviewed-by: Jiaxin Wu Reviewed-by: Eric Dong --- UefiCpuPkg/PiSmmCpuDxeSmm/MpService.c | 2 +- UefiCpuPkg/PiSmmCpuDxeSmm/PiSmmCpuDxeSmm.inf | 1 + UefiCpuPkg/PiSmmCpuDxeSmm/SmmMpPerf.c | 11 ++++++++++- UefiCpuPkg/PiSmmCpuDxeSmm/SmmMpPerf.h | 4 +++- UefiCpuPkg/UefiCpuPkg.dec | 6 ++++++ 5 files changed, 21 insertions(+), 3 deletions(-) diff --git a/UefiCpuPkg/PiSmmCpuDxeSmm/MpService.c b/UefiCpuPkg/PiSmmCpuDxe= Smm/MpService.c index bcd90f0671..8364b73242 100644 --- a/UefiCpuPkg/PiSmmCpuDxeSmm/MpService.c +++ b/UefiCpuPkg/PiSmmCpuDxeSmm/MpService.c @@ -784,7 +784,7 @@ BSPHandler ( // Any SMM MP performance logging after this point will be migrated in n= ext SMI.=0D //=0D PERF_CODE (=0D - MigrateMpPerf (gSmmCpuPrivate->SmmCoreEntryContext.NumberOfCpus);=0D + MigrateMpPerf (gSmmCpuPrivate->SmmCoreEntryContext.NumberOfCpus, CpuIn= dex);=0D );=0D =0D //=0D diff --git a/UefiCpuPkg/PiSmmCpuDxeSmm/PiSmmCpuDxeSmm.inf b/UefiCpuPkg/PiSm= mCpuDxeSmm/PiSmmCpuDxeSmm.inf index 4864532c35..d864ae9101 100644 --- a/UefiCpuPkg/PiSmmCpuDxeSmm/PiSmmCpuDxeSmm.inf +++ b/UefiCpuPkg/PiSmmCpuDxeSmm/PiSmmCpuDxeSmm.inf @@ -128,6 +128,7 @@ gUefiCpuPkgTokenSpaceGuid.PcdCpuSmmProfileRingBuffer ## CONS= UMES=0D gUefiCpuPkgTokenSpaceGuid.PcdCpuSmmFeatureControlMsrLock ## CONS= UMES=0D gEfiMdeModulePkgTokenSpaceGuid.PcdDxeIplSwitchToLongMode ## CONS= UMES=0D + gUefiCpuPkgTokenSpaceGuid.PcdSmmApPerfLogEnable ## CONS= UMES=0D =0D [Pcd]=0D gUefiCpuPkgTokenSpaceGuid.PcdCpuMaxLogicalProcessorNumber ## SOME= TIMES_CONSUMES=0D diff --git a/UefiCpuPkg/PiSmmCpuDxeSmm/SmmMpPerf.c b/UefiCpuPkg/PiSmmCpuDxe= Smm/SmmMpPerf.c index c13556af46..92c67f31bf 100644 --- a/UefiCpuPkg/PiSmmCpuDxeSmm/SmmMpPerf.c +++ b/UefiCpuPkg/PiSmmCpuDxeSmm/SmmMpPerf.c @@ -39,16 +39,25 @@ InitializeMpPerf ( Migrate MP performance data to standardized performance database.=0D =0D @param NumberofCpus Number of processors in the platform.=0D + @param BspIndex The index of the BSP.=0D **/=0D VOID=0D MigrateMpPerf (=0D - UINTN NumberofCpus=0D + UINTN NumberofCpus,=0D + UINTN BspIndex=0D )=0D {=0D UINTN CpuIndex;=0D UINTN MpProcecureId;=0D =0D for (CpuIndex =3D 0; CpuIndex < NumberofCpus; CpuIndex++) {=0D + if ((CpuIndex !=3D BspIndex) && !FeaturePcdGet (PcdSmmApPerfLogEnable)= ) {=0D + //=0D + // Skip migrating AP performance data if AP perf-logging is disabled= .=0D + //=0D + continue;=0D + }=0D +=0D for (MpProcecureId =3D 0; MpProcecureId < SMM_MP_PERF_PROCEDURE_ID (Sm= mMpProcedureMax); MpProcecureId++) {=0D if (mSmmMpProcedurePerformance[CpuIndex].Begin[MpProcecureId] !=3D 0= ) {=0D PERF_START (NULL, gSmmMpPerfProcedureName[MpProcecureId], NULL, mS= mmMpProcedurePerformance[CpuIndex].Begin[MpProcecureId]);=0D diff --git a/UefiCpuPkg/PiSmmCpuDxeSmm/SmmMpPerf.h b/UefiCpuPkg/PiSmmCpuDxe= Smm/SmmMpPerf.h index eeafb242f9..3bd594c36f 100644 --- a/UefiCpuPkg/PiSmmCpuDxeSmm/SmmMpPerf.h +++ b/UefiCpuPkg/PiSmmCpuDxeSmm/SmmMpPerf.h @@ -48,10 +48,12 @@ InitializeMpPerf ( Migrate MP performance data to standardized performance database.=0D =0D @param NumberofCpus Number of processors in the platform.=0D + @param BspIndex The index of the BSP.=0D **/=0D VOID=0D MigrateMpPerf (=0D - UINTN NumberofCpus=0D + UINTN NumberofCpus,=0D + UINTN BspIndex=0D );=0D =0D /**=0D diff --git a/UefiCpuPkg/UefiCpuPkg.dec b/UefiCpuPkg/UefiCpuPkg.dec index d31c3b127c..5b0ac64e33 100644 --- a/UefiCpuPkg/UefiCpuPkg.dec +++ b/UefiCpuPkg/UefiCpuPkg.dec @@ -175,6 +175,12 @@ # @Prompt Support SmmFeatureControl.=0D gUefiCpuPkgTokenSpaceGuid.PcdSmmFeatureControlEnable|TRUE|BOOLEAN|0x3213= 2110=0D =0D + ## Indicates if SMM perf logging in APs will be enabled.

=0D + # TRUE - SMM perf logging in APs will be enabled.
=0D + # FALSE - SMM perf logging in APs will not be enabled.
=0D + # @Prompt Enable SMM perf logging in APs.=0D + gUefiCpuPkgTokenSpaceGuid.PcdSmmApPerfLogEnable|TRUE|BOOLEAN|0x32132114= =0D +=0D [PcdsFixedAtBuild]=0D ## List of exception vectors which need switching stack.=0D # This PCD will only take into effect if PcdCpuStackGuard is enabled.=0D --=20 2.39.1.windows.1