mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [PATCH][RFC] platform/x86: intel_speed_select: Use static_cpu_has for HWP check
@ 2026-02-28  3:51 lirongqing
  2026-02-28  6:57 ` 答复: " Li,Rongqing(ACG CCN)
  2026-02-28  7:01 ` srinivas pandruvada
  0 siblings, 2 replies; 5+ messages in thread
From: lirongqing @ 2026-02-28  3:51 UTC (permalink / raw)
  To: Srinivas Pandruvada, Hans de Goede, Ilpo Järvinen,
	platform-driver-x86, linux-kernel
  Cc: Li RongQing

From: Li RongQing <lirongqing@baidu.com>

The current implementation of disable_dynamic_sst_features() reads
MSR_PM_ENABLE to check if HWP is enabled. This can be optimized by
using static_cpu_has(X86_FEATURE_HWP), which is the standard way
in the kernel to check for HWP support without the overhead of
an MSR read.

Replace the MSR read with static_cpu_has().

Signed-off-by: Li RongQing <lirongqing@baidu.com>
---
 drivers/platform/x86/intel/speed_select_if/isst_tpmi_core.c | 5 +----
 1 file changed, 1 insertion(+), 4 deletions(-)

diff --git a/drivers/platform/x86/intel/speed_select_if/isst_tpmi_core.c b/drivers/platform/x86/intel/speed_select_if/isst_tpmi_core.c
index b8cdaa2..416620b 100644
--- a/drivers/platform/x86/intel/speed_select_if/isst_tpmi_core.c
+++ b/drivers/platform/x86/intel/speed_select_if/isst_tpmi_core.c
@@ -556,10 +556,7 @@ static struct tpmi_per_power_domain_info *get_instance(int pkg_id, int power_dom
 
 static bool disable_dynamic_sst_features(void)
 {
-	u64 value;
-
-	rdmsrq(MSR_PM_ENABLE, value);
-	return !(value & 0x1);
+	return !static_cpu_has(X86_FEATURE_HWP);
 }
 
 #define _read_cp_info(name_str, name, offset, start, width, mult_factor)\
-- 
2.9.4


^ permalink raw reply	[flat|nested] 5+ messages in thread

* 答复: [PATCH][RFC] platform/x86: intel_speed_select: Use static_cpu_has for HWP check
  2026-02-28  3:51 [PATCH][RFC] platform/x86: intel_speed_select: Use static_cpu_has for HWP check lirongqing
@ 2026-02-28  6:57 ` Li,Rongqing(ACG CCN)
  2026-02-28  7:02   ` srinivas pandruvada
  2026-02-28  7:01 ` srinivas pandruvada
  1 sibling, 1 reply; 5+ messages in thread
From: Li,Rongqing(ACG CCN) @ 2026-02-28  6:57 UTC (permalink / raw)
  To: Srinivas Pandruvada, Hans de Goede, Ilpo Järvinen,
	platform-driver-x86, linux-kernel

>  static bool disable_dynamic_sst_features(void)
>  {
> -	u64 value;
> -
> -	rdmsrq(MSR_PM_ENABLE, value);
> -	return !(value & 0x1);
> +	return !static_cpu_has(X86_FEATURE_HWP);
>  }
> 
>  #define _read_cp_info(name_str, name, offset, start, width, mult_factor)\
> --


static_cpu_has(X86_FEATURE_HWP) is different from value of MSR_PM_ENABLE, when intel_pstate=no_hwp is configured in kernel cmdline

Sorry for the noise, please drop this patch;

[Li,Rongqing] 


> 2.9.4


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH][RFC] platform/x86: intel_speed_select: Use static_cpu_has for HWP check
  2026-02-28  3:51 [PATCH][RFC] platform/x86: intel_speed_select: Use static_cpu_has for HWP check lirongqing
  2026-02-28  6:57 ` 答复: " Li,Rongqing(ACG CCN)
@ 2026-02-28  7:01 ` srinivas pandruvada
  2026-02-28  7:22   ` 答复: [外部邮件] " Li,Rongqing(ACG CCN)
  1 sibling, 1 reply; 5+ messages in thread
From: srinivas pandruvada @ 2026-02-28  7:01 UTC (permalink / raw)
  To: lirongqing, Hans de Goede, Ilpo Järvinen,
	platform-driver-x86, linux-kernel

On Fri, 2026-02-27 at 22:51 -0500, lirongqing wrote:
> From: Li RongQing <lirongqing@baidu.com>
> 
> The current implementation of disable_dynamic_sst_features() reads
> MSR_PM_ENABLE to check if HWP is enabled. This can be optimized by
> using static_cpu_has(X86_FEATURE_HWP), which is the standard way
> in the kernel to check for HWP support without the overhead of
> an MSR read.
> 
> Replace the MSR read with static_cpu_has().
> 
That is not same. Presence of HWP feature means that HWP can be enabled
on this SoC. But user can boot with option to not enable HWP by
intel_pstate driver.
If HWP is not enabled, then SST features can't be enabled.

Thanks,
Srinivas

> Signed-off-by: Li RongQing <lirongqing@baidu.com>
> ---
>  drivers/platform/x86/intel/speed_select_if/isst_tpmi_core.c | 5 +---
> -
>  1 file changed, 1 insertion(+), 4 deletions(-)
> 
> diff --git
> a/drivers/platform/x86/intel/speed_select_if/isst_tpmi_core.c
> b/drivers/platform/x86/intel/speed_select_if/isst_tpmi_core.c
> index b8cdaa2..416620b 100644
> --- a/drivers/platform/x86/intel/speed_select_if/isst_tpmi_core.c
> +++ b/drivers/platform/x86/intel/speed_select_if/isst_tpmi_core.c
> @@ -556,10 +556,7 @@ static struct tpmi_per_power_domain_info
> *get_instance(int pkg_id, int power_dom
>  
>  static bool disable_dynamic_sst_features(void)
>  {
> -	u64 value;
> -
> -	rdmsrq(MSR_PM_ENABLE, value);
> -	return !(value & 0x1);
> +	return !static_cpu_has(X86_FEATURE_HWP);
>  }
>  
>  #define _read_cp_info(name_str, name, offset, start, width,
> mult_factor)\

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: 答复: [PATCH][RFC] platform/x86: intel_speed_select: Use static_cpu_has for HWP check
  2026-02-28  6:57 ` 答复: " Li,Rongqing(ACG CCN)
@ 2026-02-28  7:02   ` srinivas pandruvada
  0 siblings, 0 replies; 5+ messages in thread
From: srinivas pandruvada @ 2026-02-28  7:02 UTC (permalink / raw)
  To: Li,Rongqing(ACG CCN),
	Hans de Goede, Ilpo Järvinen, platform-driver-x86,
	linux-kernel

On Sat, 2026-02-28 at 06:57 +0000, Li,Rongqing(ACG CCN) wrote:
> >  static bool disable_dynamic_sst_features(void)
> >  {
> > -	u64 value;
> > -
> > -	rdmsrq(MSR_PM_ENABLE, value);
> > -	return !(value & 0x1);
> > +	return !static_cpu_has(X86_FEATURE_HWP);
> >  }
> > 
> >  #define _read_cp_info(name_str, name, offset, start, width,
> > mult_factor)\
> > --
> 
> 
> static_cpu_has(X86_FEATURE_HWP) is different from value of
> MSR_PM_ENABLE, when intel_pstate=no_hwp is configured in kernel
> cmdline
> 
> Sorry for the noise, please drop this patch;
> 

No worries.

-Srinivas

> [Li,Rongqing] 
> 
> 
> > 2.9.4

^ permalink raw reply	[flat|nested] 5+ messages in thread

* 答复: [外部邮件] Re: [PATCH][RFC] platform/x86: intel_speed_select: Use static_cpu_has for HWP check
  2026-02-28  7:01 ` srinivas pandruvada
@ 2026-02-28  7:22   ` Li,Rongqing(ACG CCN)
  0 siblings, 0 replies; 5+ messages in thread
From: Li,Rongqing(ACG CCN) @ 2026-02-28  7:22 UTC (permalink / raw)
  To: srinivas pandruvada, Hans de Goede, Ilpo Järvinen,
	platform-driver-x86, linux-kernel



> That is not same. Presence of HWP feature means that HWP can be enabled on
> this SoC. But user can boot with option to not enable HWP by intel_pstate
> driver.

> If HWP is not enabled, then SST features can't be enabled.
> 

If HWP is not enabled, Can the PCT is enabled from BIOS? 

In my machine, HWP is disabled, but PCT is enabled; and can not disable PCT by " ./intel-speed-select core-power disable"


[root@tjzj-acg-tge2026-01-281zrfild.tjzj.baidu.com ~]# rdmsr 0x770
0
[root@tjzj-acg-tge2026-01-281zrfild.tjzj.baidu.com ~]# cpupower monitor
              | Nehalem                   || Mperf              || Idle_Stats
 PKG|CORE| CPU| C3   | C6   | PC3  | PC6   || C0   | Cx   | Freq  || POLL | C1
   0|   0|   0|  0.00|  0.00|  0.00|  0.00||  0.64| 99.36|  4598||  0.00| 99.50
   0|   0| 128|  0.00|  0.00|  0.00|  0.00||  1.98| 98.02|  4581||  0.00| 98.10
   0|   1|   1|  0.00|  0.00|  0.00|  0.00|| 99.38|  0.62|  2299||  0.00|  0.00
   0|   1| 129|  0.00|  0.00|  0.00|  0.00|| 99.18|  0.82|  2299||  0.00|  0.00
   0|   2|   2|  0.00|  0.00|  0.00|  0.00|| 99.38|  0.62|  2299||  0.00|  0.00
   0|   2| 130|  0.00|  0.00|  0.00|  0.00|| 99.18|  0.82|  2299||  0.00|  0.00
   0|   3|   3|  0.00|  0.00|  0.00|  0.00||  3.13| 96.87|  2300||  0.00| 96.90
   0|   3| 131|  0.00|  0.00|  0.00|  0.00||  0.01| 99.99|  2754||  0.00| 100.2
   0|   4|   4|  0.00|  0.00|  0.00|  0.00||  1.38| 98.62|  2301||  0.00| 98.81
   0|   4| 132|  0.00|  0.00|  0.00|  0.00||  0.18| 99.82|  2321||  0.00| 100.0
   0|   5|   5|  0.00|  0.00|  0.00|  0.00||  0.61| 99.39|  2305||  0.00| 100.1
   0|   5| 133|  0.00|  0.00|  0.00|  0.00||  5.13| 94.87|  2299||  0.02| 95.02
   0|   6|   6|  0.00|  0.00|  0.00|  0.00||  0.15| 99.85|  2321||  0.00| 100.5
   0|   6| 134|  0.00|  0.00|  0.00|  0.00||  2.28| 97.72|  2300||  0.00| 98.00
   0|   7|   7|  0.00|  0.00|  0.00|  0.00||  0.67| 99.33|  2305||  0.00| 99.76
   0|   7| 135|  0.00|  0.00|  0.00|  0.00||  0.20| 99.80|  2319||  0.00| 100.0
   0|   8|   8|  0.00|  0.00|  0.00|  0.00|| 10.16| 89.84|  2299||  0.02| 89.91
   0|   8| 136|  0.00|  0.00|  0.00|  0.00||  0.01| 99.99|  2786||  0.00| 100.2
   0|   9|   9|  0.00|  0.00|  0.00|  0.00||  0.04| 99.96|  2393||  0.00| 100.4
   0|   9| 137|  0.00|  0.00|  0.00|  0.00||  2.17| 97.83|  2300||  0.00| 97.84



[Li,Rongqing] 



> Thanks,
> Srinivas
> 
> > Signed-off-by: Li RongQing <lirongqing@baidu.com>
> > ---
> >  drivers/platform/x86/intel/speed_select_if/isst_tpmi_core.c | 5 +---
> > -
> >  1 file changed, 1 insertion(+), 4 deletions(-)
> >
> > diff --git
> > a/drivers/platform/x86/intel/speed_select_if/isst_tpmi_core.c
> > b/drivers/platform/x86/intel/speed_select_if/isst_tpmi_core.c
> > index b8cdaa2..416620b 100644
> > --- a/drivers/platform/x86/intel/speed_select_if/isst_tpmi_core.c
> > +++ b/drivers/platform/x86/intel/speed_select_if/isst_tpmi_core.c
> > @@ -556,10 +556,7 @@ static struct tpmi_per_power_domain_info
> > *get_instance(int pkg_id, int power_dom
> >
> >  static bool disable_dynamic_sst_features(void)
> >  {
> > -	u64 value;
> > -
> > -	rdmsrq(MSR_PM_ENABLE, value);
> > -	return !(value & 0x1);
> > +	return !static_cpu_has(X86_FEATURE_HWP);
> >  }
> >
> >  #define _read_cp_info(name_str, name, offset, start, width,
> > mult_factor)\

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2026-02-28  7:22 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-02-28  3:51 [PATCH][RFC] platform/x86: intel_speed_select: Use static_cpu_has for HWP check lirongqing
2026-02-28  6:57 ` 答复: " Li,Rongqing(ACG CCN)
2026-02-28  7:02   ` srinivas pandruvada
2026-02-28  7:01 ` srinivas pandruvada
2026-02-28  7:22   ` 答复: [外部邮件] " Li,Rongqing(ACG CCN)

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®