From nobody Mon Feb 9 08:56:40 2026 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+103511+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+103511+1787277+3901457@groups.io; dmarc=fail(p=none dis=none) header.from=intel.com ARC-Seal: i=1; a=rsa-sha256; t=1682401683; cv=none; d=zohomail.com; s=zohoarc; b=oIj2apIGanWSqnKnY+cUw/YNHpBF5ArW82vJTC+dllL5k/JR7vULaV24BkZ921ljk1t9w9RKMPyndwf0d7w3newl9F2vycQdVACbr/qsOxtOVdgteFbiNkYLS8avlL2yYnRkPbXHfiIKv5eI8TjeZOECks7raCOGjmTKd2YVCVo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1682401683; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:References:Sender:Subject:To; bh=uA+TEC4+tSFDBp8lOeZ+NBmxzD5VGYEtfD5PM3yX62k=; b=diKzGoIUM1+LUuTeDBshQfm36L4eq+vAFjjMGOqdHZNoa2gYJb7XSvBM9V9c6BTjYb16w/tSJOQZuFX86aGPGWb4I6UrxOebPxqzckDoOtipiahLxl2Brtyoix8pgBSm+a2Q8lHIX5MwAAuDdeSbGRA/vRFKlKxdaIz6i8qU7TU= 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+103511+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 1682401683607334.6326573660333; Mon, 24 Apr 2023 22:48:03 -0700 (PDT) Return-Path: X-Received: by 127.0.0.2 with SMTP id BddCYY1788612xq0eV1EgAKK; Mon, 24 Apr 2023 22:48:03 -0700 X-Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by mx.groups.io with SMTP id smtpd.web11.72550.1682401675815309799 for ; Mon, 24 Apr 2023 22:48:02 -0700 X-IronPort-AV: E=McAfee;i="6600,9927,10690"; a="335560789" X-IronPort-AV: E=Sophos;i="5.99,224,1677571200"; d="scan'208";a="335560789" X-Received: from fmsmga008.fm.intel.com ([10.253.24.58]) by orsmga101.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 24 Apr 2023 22:48:02 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10690"; a="757978768" X-IronPort-AV: E=Sophos;i="5.99,224,1677571200"; d="scan'208";a="757978768" X-Received: from shwdeopenlab702.ccr.corp.intel.com ([10.239.55.92]) by fmsmga008-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 24 Apr 2023 22:47:59 -0700 From: "duntan" To: devel@edk2.groups.io Cc: Eric Dong , Ray Ni , Rahul Kumar , Gerd Hoffmann , Xiao X Chen Subject: [edk2-devel] [PATCH 2/3] UefiCpuPkg: Update PT code to support enable collect performance Date: Tue, 25 Apr 2023 13:47:37 +0800 Message-Id: <20230425054738.2937-3-dun.tan@intel.com> In-Reply-To: <20230425054738.2937-1-dun.tan@intel.com> References: <20230425054738.2937-1-dun.tan@intel.com> MIME-Version: 1.0 Precedence: Bulk List-Unsubscribe: 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,dun.tan@intel.com X-Gm-Message-State: iwXRmlTl4GlSi2tjoa28YQiux1787277AA= Content-Transfer-Encoding: quoted-printable DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1682401683; bh=SCB6qR7BzEWiBu+CiFbeKpWIGR5jX5TIWfyprXD70Xo=; h=Cc:Date:From:Reply-To:Subject:To; b=lWM8emKF+AQiyulWtytel9z5p7TsZKTU6kTn3oR2jqP7su5bvntUga7R2jeVyLomUXy 8kU4ZGbpd103Ms5/YrKm8yUI0XJVPGtm+Q07Wl9e88nUnvwzIJcv0y3wXDqvV+0Als5ly WBbUzU1NhSmS9IpNXdE5UpCRZPgpkjeVjEo= X-ZohoMail-DKIM: pass (identity @groups.io) X-ZM-MESSAGEID: 1682401684512100005 Content-Type: text/plain; charset="utf-8" Update ProcTrace feature code to support enable collect performance data by generating CYC and TSC packets. Add a new dynamic PCD to indicate if enable performance collecting. In ProcTrace.c code, if this new PCD is true, CYC and TSC packets will be generated by setting the corresponding MSR bits feilds. Bugzila: https://bugzilla.tianocore.org/show_bug.cgi?id=3D4423 Signed-off-by: Dun Tan Cc: Eric Dong Cc: Ray Ni Cc: Rahul Kumar Cc: Gerd Hoffmann Cc: Xiao X Chen --- UefiCpuPkg/Library/CpuCommonFeaturesLib/CpuCommonFeaturesLib.inf | 1 + UefiCpuPkg/Library/CpuCommonFeaturesLib/ProcTrace.c | 66 ++++= +++++++++++++++++++++++++++++++++++++++++++------------------- UefiCpuPkg/UefiCpuPkg.dec | 8 ++++= ++++ 3 files changed, 56 insertions(+), 19 deletions(-) diff --git a/UefiCpuPkg/Library/CpuCommonFeaturesLib/CpuCommonFeaturesLib.i= nf b/UefiCpuPkg/Library/CpuCommonFeaturesLib/CpuCommonFeaturesLib.inf index 319c8b4842..e31c1e7317 100644 --- a/UefiCpuPkg/Library/CpuCommonFeaturesLib/CpuCommonFeaturesLib.inf +++ b/UefiCpuPkg/Library/CpuCommonFeaturesLib/CpuCommonFeaturesLib.inf @@ -63,3 +63,4 @@ gUefiCpuPkgTokenSpaceGuid.PcdCpuProcTraceOutputScheme ## SOMETI= MES_CONSUMES gUefiCpuPkgTokenSpaceGuid.PcdCpuProcTraceMemSize ## SOMETI= MES_CONSUMES gUefiCpuPkgTokenSpaceGuid.PcdEnableProcessorTraceOnBspOnly ## SOMETI= MES_CONSUMES + gUefiCpuPkgTokenSpaceGuid.ProcTraceEnablePerformanceCollecting ## SOMETI= MES_CONSUMES diff --git a/UefiCpuPkg/Library/CpuCommonFeaturesLib/ProcTrace.c b/UefiCpuP= kg/Library/CpuCommonFeaturesLib/ProcTrace.c index f57544bf7d..1a101b7288 100644 --- a/UefiCpuPkg/Library/CpuCommonFeaturesLib/ProcTrace.c +++ b/UefiCpuPkg/Library/CpuCommonFeaturesLib/ProcTrace.c @@ -171,25 +171,26 @@ ProcTraceInitialize ( IN BOOLEAN State ) { - UINT32 MemRegionSize; - UINTN Pages; - UINTN Alignment; - UINTN MemRegionBaseAddr; - UINTN *ThreadMemRegionTable; - UINTN Index; - UINTN TopaTableBaseAddr; - UINTN AlignedAddress; - UINTN *TopaMemArray; - PROC_TRACE_TOPA_TABLE *TopaTable; - PROC_TRACE_DATA *ProcTraceData; - BOOLEAN FirstIn; - MSR_IA32_RTIT_CTL_REGISTER CtrlReg; - MSR_IA32_RTIT_STATUS_REGISTER StatusReg; - MSR_IA32_RTIT_OUTPUT_BASE_REGISTER OutputBaseReg; - MSR_IA32_RTIT_OUTPUT_MASK_PTRS_REGISTER OutputMaskPtrsReg; - RTIT_TOPA_TABLE_ENTRY *TopaEntryPtr; - BOOLEAN IsBsp; - BOOLEAN EnableOnBspOnly; + UINT32 MemRegionSize; + UINTN Pages; + UINTN Alignment; + UINTN MemRegionBaseAddr; + UINTN *ThreadMemRegionTable; + UINTN Index; + UINTN TopaTableBaseAddr; + UINTN AlignedAddress; + UINTN *TopaMemArray; + PROC_TRACE_TOPA_TABLE *TopaTable; + PROC_TRACE_DATA *ProcTraceData; + BOOLEAN FirstIn; + MSR_IA32_RTIT_CTL_REGISTER CtrlReg; + MSR_IA32_RTIT_STATUS_REGISTER StatusReg; + MSR_IA32_RTIT_OUTPUT_BASE_REGISTER OutputBaseReg; + MSR_IA32_RTIT_OUTPUT_MASK_PTRS_REGISTER OutputMaskPtrsReg; + RTIT_TOPA_TABLE_ENTRY *TopaEntryPtr; + BOOLEAN IsBsp; + BOOLEAN EnableOnBspOnly; + CPUID_INTEL_PROCESSOR_TRACE_MAIN_LEAF_EBX Ebx; =20 // // The scope of the MSR_IA32_RTIT_* is core for below processor type, on= ly program @@ -510,6 +511,33 @@ ProcTraceInitialize ( CtrlReg.Bits.User =3D 1; CtrlReg.Bits.BranchEn =3D 1; CtrlReg.Bits.TraceEn =3D 1; + + AsmCpuidEx (CPUID_INTEL_PROCESSOR_TRACE, CPUID_INTEL_PROCESSOR_TRACE_MAI= N_LEAF, NULL, &Ebx.Uint32, NULL, NULL); + + // + // Generate CYC/TSC timing packets to to collect performance data. + // + if (PcdGetBool (ProcTraceEnablePerformanceCollecting)) { + if (Ebx.Bits.ConfigurablePsb =3D=3D 1) { + CtrlReg.Bits.CYCEn =3D 1; + CtrlReg.Bits.CYCThresh =3D 5; + + // + // Write to TSCEn is always supported + // + CtrlReg.Bits.TSCEn =3D 1; + } else { + DEBUG ((DEBUG_INFO, "ProcTrace: CYC packet is not supported. Failed = to enable Performance Collecting \n")); + } + } else { + if (Ebx.Bits.ConfigurablePsb =3D=3D 1) { + CtrlReg.Bits.CYCEn =3D 0; + CtrlReg.Bits.CYCThresh =3D 0; + } + + CtrlReg.Bits.TSCEn =3D 0; + } + CPU_REGISTER_TABLE_WRITE64 ( ProcessorNumber, Msr, diff --git a/UefiCpuPkg/UefiCpuPkg.dec b/UefiCpuPkg/UefiCpuPkg.dec index 1a4b9333ab..2b0de6d5c3 100644 --- a/UefiCpuPkg/UefiCpuPkg.dec +++ b/UefiCpuPkg/UefiCpuPkg.dec @@ -429,5 +429,13 @@ # @Prompt Enable CPU processor trace only on BSP. gUefiCpuPkgTokenSpaceGuid.PcdEnableProcessorTraceOnBspOnly|FALSE|BOOLEAN= |0x60000019 =20 + ## This PCD indicates if enable performance collecting when CPU processo= r trace is enabled.

+ # CYC/TSC timing packets will be generated to collect performance data = if this PCD is TRUE. + # This PCD is ignored if CPU processor trace is disabled.

+ # TRUE - Performance collecting will be enabled in processor trace.
+ # FASLE - Performance collecting will be disabled in processor trace. + # @Prompt Enable performance collecting when processor trace is enabled. + gUefiCpuPkgTokenSpaceGuid.ProcTraceEnablePerformanceCollecting|FALSE|BOO= LEAN|0x60000020 + [UserExtensions.TianoCore."ExtraFiles"] UefiCpuPkgExtra.uni --=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 (#103511): https://edk2.groups.io/g/devel/message/103511 Mute This Topic: https://groups.io/mt/98487618/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-