Linux Power Management development
 help / color / mirror / Atom feed
From: Kin Cho <kin.cho@oracle.com>
To: Artem Bityutskiy <artem.bityutskiy@linux.intel.com>,
	Len Brown <lenb@kernel.org>
Cc: Artem Bityutskiy <dedekind1@gmail.com>,
	Yu Chen <yu.c.chen@intel.com>,
	Linux PM Mailing List <linux-pm@vger.kernel.org>
Subject: Re: [PATCH] tools/power/turbostat: Remove Package C6 Retention on Ice Lake Server
Date: Fri, 4 Mar 2022 13:35:17 -0800	[thread overview]
Message-ID: <01dd04dd-a2ad-6ee2-4a8f-f801908e4299@oracle.com> (raw)
In-Reply-To: <20210504145234.4103405-1-artem.bityutskiy@linux.intel.com>

Hi,

This patch (25368d7cefcd87a94ccabcc6f9f31796607bbe4e) has affected 
Sapphire Rapids support.
Specifically Pkg%pc2 and Pkg%pc6 are now missing on Sapphire Rapids 
(with package C6 retention).
See below for a diff of turbostat --list output with and without 25368d7.

-kin

--- turbostat-0304_115100-v5.12-10-g25368d7cefcd    2022-03-04 
11:51:00.184727582 -0800
+++ turbostat-0304_124741-v5.12-10-g25368d7cefcd--25368d7 2022-03-04 
12:47:41.543801798 -0800
@@ -1,2 +1,2 @@
  turbostat version 21.03.12 - Len Brown <lenb@kernel.org>
-usec,Time_Of_Day_Seconds,Package,Core,CPU,APIC,X2APIC,Avg_MHz,Busy%,Bzy_MHz,TSC_MHz,IPC,IRQ,SMI,POLL,C1ACPI,C2ACPI,POLL%,C1ACPI%,C2ACPI%,CPU%c1,CPU%c6,CoreTmp,PkgTmp,PkgWatt,RAMWatt,PKG_%,RAM_%
+usec,Time_Of_Day_Seconds,Package,Core,CPU,APIC,X2APIC,Avg_MHz,Busy%,Bzy_MHz,TSC_MHz,IPC,IRQ,SMI,POLL,C1ACPI,C2ACPI,POLL%,C1ACPI%,C2ACPI%,CPU%c1,CPU%c6,CoreTmp,PkgTmp,Pkg%pc2,Pkg%pc6,PkgWatt,RAMWatt,PKG_%,RAM_%


On 5/4/21 7:52 AM, Artem Bityutskiy wrote:
> From: Chen Yu <yu.c.chen@intel.com>
>
> Currently the turbostat treats ICX the same way as SKX and shares the
> code among them. But one difference is that ICX does not support Package
> C6 Retention, unlike SKX and CLX.
>
> So this patch:
>
> 1. Splitting SKX and ICX in turbostat.
> 2. Removing Package C6 Rentention for ICX.
>
> And after this split, it would be easier to cutomize Ice Lake Server
> in turbostat in the future.
>
> Suggested-by: Artem Bityutskiy <artem.bityutskiy@linux.intel.com>
> Signed-off-by: Chen Yu <yu.c.chen@intel.com>
> Reviewed-by: Artem Bityutskiy <artem.bityutskiy@linux.intel.com>
> Tested-by: Artem Bityutskiy <artem.bityutskiy@linux.intel.com>
> ---
>   tools/power/x86/turbostat/turbostat.c | 36 ++++++++++++++++++++++-----
>   1 file changed, 30 insertions(+), 6 deletions(-)
>
> diff --git a/tools/power/x86/turbostat/turbostat.c b/tools/power/x86/turbostat/turbostat.c
> index ace100dd5a83..81afaff81f43 100644
> --- a/tools/power/x86/turbostat/turbostat.c
> +++ b/tools/power/x86/turbostat/turbostat.c
> @@ -2259,7 +2259,7 @@ int amt_pkg_cstate_limits[16] = {PCLUNL, PCL__1, PCL__2, PCLRSV, PCLRSV, PCLRSV,
>   int phi_pkg_cstate_limits[16] = {PCL__0, PCL__2, PCL_6N, PCL_6R, PCLRSV, PCLRSV, PCLRSV, PCLUNL, PCLRSV, PCLRSV, PCLRSV, PCLRSV, PCLRSV, PCLRSV, PCLRSV, PCLRSV};
>   int glm_pkg_cstate_limits[16] = {PCLUNL, PCL__1, PCL__3, PCL__6, PCL__7, PCL_7S, PCL__8, PCL__9, PCL_10, PCLRSV, PCLRSV, PCLRSV, PCLRSV, PCLRSV, PCLRSV, PCLRSV};
>   int skx_pkg_cstate_limits[16] = {PCL__0, PCL__2, PCL_6N, PCL_6R, PCLRSV, PCLRSV, PCLRSV, PCLUNL, PCLRSV, PCLRSV, PCLRSV, PCLRSV, PCLRSV, PCLRSV, PCLRSV, PCLRSV};
> -
> +int icx_pkg_cstate_limits[16] = {PCL__0, PCL__2, PCL__6, PCLRSV, PCLRSV, PCLRSV, PCLRSV, PCLUNL, PCLRSV, PCLRSV, PCLRSV, PCLRSV, PCLRSV, PCLRSV, PCLRSV, PCLRSV};
>   
>   static void
>   calculate_tsc_tweak()
> @@ -2374,6 +2374,7 @@ int has_turbo_ratio_group_limits(int family, int model)
>   	switch (model) {
>   	case INTEL_FAM6_ATOM_GOLDMONT:
>   	case INTEL_FAM6_SKYLAKE_X:
> +	case INTEL_FAM6_ICELAKE_X:
>   	case INTEL_FAM6_ATOM_GOLDMONT_D:
>   	case INTEL_FAM6_ATOM_TREMONT_D:
>   		return 1;
> @@ -3613,6 +3614,10 @@ int probe_nhm_msrs(unsigned int family, unsigned int model)
>   		pkg_cstate_limits = skx_pkg_cstate_limits;
>   		has_misc_feature_control = 1;
>   		break;
> +	case INTEL_FAM6_ICELAKE_X:	/* ICX */
> +		pkg_cstate_limits = icx_pkg_cstate_limits;
> +		has_misc_feature_control = 1;
> +		break;
>   	case INTEL_FAM6_ATOM_SILVERMONT:	/* BYT */
>   		no_MSR_MISC_PWR_MGMT = 1;
>   	case INTEL_FAM6_ATOM_SILVERMONT_D:	/* AVN */
> @@ -3701,6 +3706,20 @@ int is_skx(unsigned int family, unsigned int model)
>   	}
>   	return 0;
>   }
> +
> +int is_icx(unsigned int family, unsigned int model)
> +{
> +
> +	if (!genuine_intel)
> +		return 0;
> +
> +	switch (model) {
> +	case INTEL_FAM6_ICELAKE_X:
> +		return 1;
> +	}
> +	return 0;
> +}
> +
>   int is_ehl(unsigned int family, unsigned int model)
>   {
>   	if (!genuine_intel)
> @@ -3803,6 +3822,7 @@ int has_glm_turbo_ratio_limit(unsigned int family, unsigned int model)
>   	switch (model) {
>   	case INTEL_FAM6_ATOM_GOLDMONT:
>   	case INTEL_FAM6_SKYLAKE_X:
> +	case INTEL_FAM6_ICELAKE_X:
>   		return 1;
>   	default:
>   		return 0;
> @@ -3828,6 +3848,7 @@ int has_config_tdp(unsigned int family, unsigned int model)
>   	case INTEL_FAM6_SKYLAKE_L:	/* SKL */
>   	case INTEL_FAM6_CANNONLAKE_L:	/* CNL */
>   	case INTEL_FAM6_SKYLAKE_X:	/* SKX */
> +	case INTEL_FAM6_ICELAKE_X:	/* ICX */
>   
>   	case INTEL_FAM6_XEON_PHI_KNL:	/* Knights Landing */
>   		return 1;
> @@ -4358,6 +4379,7 @@ void rapl_probe_intel(unsigned int family, unsigned int model)
>   	case INTEL_FAM6_HASWELL_X:	/* HSX */
>   	case INTEL_FAM6_BROADWELL_X:	/* BDX */
>   	case INTEL_FAM6_SKYLAKE_X:	/* SKX */
> +	case INTEL_FAM6_ICELAKE_X:	/* ICX */
>   	case INTEL_FAM6_XEON_PHI_KNL:	/* KNL */
>   		do_rapl = RAPL_PKG | RAPL_DRAM | RAPL_DRAM_POWER_INFO | RAPL_DRAM_PERF_STATUS | RAPL_PKG_PERF_STATUS | RAPL_PKG_POWER_INFO;
>   		BIC_PRESENT(BIC_PKG__);
> @@ -4514,7 +4536,8 @@ void perf_limit_reasons_probe(unsigned int family, unsigned int model)
>   
>   void automatic_cstate_conversion_probe(unsigned int family, unsigned int model)
>   {
> -	if (is_skx(family, model) || is_bdx(family, model))
> +	if (is_skx(family, model) || is_bdx(family, model) ||
> +	    is_icx(family, model))
>   		has_automatic_cstate_conversion = 1;
>   }
>   
> @@ -4729,6 +4752,7 @@ int has_snb_msrs(unsigned int family, unsigned int model)
>   	case INTEL_FAM6_SKYLAKE_L:		/* SKL */
>   	case INTEL_FAM6_CANNONLAKE_L:		/* CNL */
>   	case INTEL_FAM6_SKYLAKE_X:		/* SKX */
> +	case INTEL_FAM6_ICELAKE_X:		/* ICX */
>   	case INTEL_FAM6_ATOM_GOLDMONT:		/* BXT */
>   	case INTEL_FAM6_ATOM_GOLDMONT_PLUS:
>   	case INTEL_FAM6_ATOM_GOLDMONT_D:	/* DNV */
> @@ -5067,10 +5091,9 @@ unsigned int intel_model_duplicates(unsigned int model)
>   	case INTEL_FAM6_ATOM_TREMONT_L:
>   		return INTEL_FAM6_ATOM_TREMONT;
>   
> -	case INTEL_FAM6_ICELAKE_X:
>   	case INTEL_FAM6_ICELAKE_D:
>   	case INTEL_FAM6_SAPPHIRERAPIDS_X:
> -		return INTEL_FAM6_SKYLAKE_X;
> +		return INTEL_FAM6_ICELAKE_X;
>   	}
>   	return model;
>   }
> @@ -5180,8 +5203,9 @@ void process_cpuid()
>   			edx_flags & (1 << 28) ? "HT" : "-",
>   			edx_flags & (1 << 29) ? "TM" : "-");
>   	}
> -	if (genuine_intel)
> +	if (genuine_intel) {
>   		model = intel_model_duplicates(model);
> +	}
>   
>   	if (!(edx_flags & (1 << 5)))
>   		errx(1, "CPUID: no MSR");
> @@ -5359,7 +5383,7 @@ void process_cpuid()
>   		BIC_NOT_PRESENT(BIC_Pkgpc7);
>   		use_c1_residency_msr = 1;
>   	}
> -	if (is_skx(family, model)) {
> +	if (is_skx(family, model) || is_icx(family, model)) {
>   		BIC_NOT_PRESENT(BIC_CPU_c3);
>   		BIC_NOT_PRESENT(BIC_Pkgpc3);
>   		BIC_NOT_PRESENT(BIC_CPU_c7);


  reply	other threads:[~2022-03-04 21:35 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-05-04 14:52 [PATCH] tools/power/turbostat: Remove Package C6 Retention on Ice Lake Server Artem Bityutskiy
2022-03-04 21:35 ` Kin Cho [this message]
2022-03-05  9:20   ` Chen Yu
     [not found]     ` <61b2d82dd53f5cc3609f095b60ad8afe8c085f39.camel@linux.intel.com>
2022-03-07 20:31       ` [External] : " Kin Cho

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=01dd04dd-a2ad-6ee2-4a8f-f801908e4299@oracle.com \
    --to=kin.cho@oracle.com \
    --cc=artem.bityutskiy@linux.intel.com \
    --cc=dedekind1@gmail.com \
    --cc=lenb@kernel.org \
    --cc=linux-pm@vger.kernel.org \
    --cc=yu.c.chen@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox