lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <77216773e80b1d60f41e48a0f2071066d1e0d393.camel@linux.intel.com>
Date: Sun, 08 Jun 2025 18:10:42 -0700
From: srinivas pandruvada <srinivas.pandruvada@...ux.intel.com>
To: Joe Walter <joe.walter@...esensesolutions.com>, rafael@...nel.org
Cc: viresh.kumar@...aro.org, lenb@...nel.org, linux-pm@...r.kernel.org, 
	linux-kernel@...r.kernel.org
Subject: Re: [PATCH] cpufreq: intel_pstate: Add DMI quirk for Dell Inspiron
 systems

On Fri, 2025-06-06 at 16:15 -0700, Joe Walter wrote:
> Some Dell Inspiron systems experience frequency scaling issues with
> intel_pstate driver where the CPU gets locked at 900MHz after load.
> 
> Add DMI quirk table to detect affected Dell Inspiron models and
> prevent
> intel_pstate from loading, allowing acpi-cpufreq to handle frequency
> scaling instead.

This is the first time in 10+ years a quirk using DMI..

> 
> Affected models:
> - Dell Inspiron 15 7000 Gaming
> - Dell Inspiron 7567
> - Dell Inspiron 7559

I think these all are using KabyLake CPU models around 2017.

Do you have turbostat logs to see why it is dropping to 900 MHz? If not
please attach. Most of such drops usually triggered by power/thermal
limits. We have to check the power limit settings.



Try with a different EPP settings instead of default by using
/sys/devices/system/cpu/cpu*/cpufreq/energy_performance_preference


Also try:
echo passive > /sys/devices/system/cpu/intel_pstate/status

Thanks,
Srinivas

> 
> Tested-by: Joe Walter <joe.walter@...esensesolutions.com>
> Signed-off-by: Joe Walter <joe.walter@...esensesolutions.com>
> ---
>  drivers/cpufreq/intel_pstate.c | 65 ++++++++++++++++++++++----------
> --
>  1 file changed, 42 insertions(+), 23 deletions(-)
> 
> diff --git a/drivers/cpufreq/intel_pstate.c
> b/drivers/cpufreq/intel_pstate.c
> index 1b1f62ccec92..3aeb04755afa 100644
> --- a/drivers/cpufreq/intel_pstate.c
> +++ b/drivers/cpufreq/intel_pstate.c
> @@ -28,7 +28,6 @@
>  #include <linux/pm_qos.h>
>  #include <linux/bitfield.h>
>  #include <trace/events/power.h>
> -#include <linux/dmi.h>
>  #include <linux/units.h>
>  
>  #include <asm/cpu.h>
> @@ -48,6 +47,7 @@
>  #ifdef CONFIG_ACPI
>  #include <acpi/processor.h>
>  #include <acpi/cppc_acpi.h>
> +#include <linux/dmi.h>
>  #endif
>  
>  #define FRAC_BITS 8
> @@ -299,25 +299,6 @@ struct pstate_funcs {
>  
>  static struct pstate_funcs pstate_funcs __read_mostly;
>  
> -/* DMI quirk table for systems that should prefer acpi-cpufreq over
> intel_pstate */
> -static int intel_pstate_prefer_acpi_cpufreq(const struct
> dmi_system_id *id)
> -{
> -	pr_info("Preferring acpi-cpufreq for %s due to performance
> issues with intel_pstate\n",
> -		id->ident);
> -	return 1;
> -}
> -
> -static const struct dmi_system_id intel_pstate_acpi_cpufreq_prefer[]
> = {
> -	{
> -		.callback = intel_pstate_prefer_acpi_cpufreq,
> -		.ident = "Dell Inspiron 15 7000 Gaming",
> -		.matches = {
> -			DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
> -			DMI_MATCH(DMI_PRODUCT_NAME, "Inspiron 15
> 7000 Gaming"),
> -		},
> -	},
> -	{ }
> -};
>  static bool hwp_active __ro_after_init;
>  static int hwp_mode_bdw __ro_after_init;
>  static bool per_cpu_limits __ro_after_init;
> @@ -2799,6 +2780,41 @@ static const struct x86_cpu_id
> intel_pstate_cpu_ids[] = {
>  };
>  MODULE_DEVICE_TABLE(x86cpu, intel_pstate_cpu_ids);
>  
> +/* DMI quirk table for systems that should prefer acpi-cpufreq over
> intel_pstate */
> +static int intel_pstate_prefer_acpi_cpufreq(const struct
> dmi_system_id *id)
> +{
> +	pr_info("Detected %s, preferring acpi-cpufreq\n", id-
> >ident);
> +	return 0;
> +}
> +
> +static const struct dmi_system_id intel_pstate_acpi_cpufreq_prefer[]
> = {
> +	{
> +		.ident = "Dell Inspiron 15 7000 Gaming",
> +		.matches = {
> +			DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
> +			DMI_MATCH(DMI_PRODUCT_NAME, "Inspiron 15
> 7000 Gaming"),
> +		},
> +		.callback = intel_pstate_prefer_acpi_cpufreq,
> +	},
> +	{
> +		.ident = "Dell Inspiron 7567",
> +		.matches = {
> +			DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
> +			DMI_MATCH(DMI_PRODUCT_NAME, "Inspiron
> 7567"),
> +		},
> +		.callback = intel_pstate_prefer_acpi_cpufreq,
> +	},
> +	{
> +		.ident = "Dell Inspiron 7559",
> +		.matches = {
> +			DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
> +			DMI_MATCH(DMI_PRODUCT_NAME, "Inspiron
> 7559"),
> +		},
> +		.callback = intel_pstate_prefer_acpi_cpufreq,
> +	},
> +	{}
> +};
> +
>  #ifdef CONFIG_ACPI
>  static const struct x86_cpu_id intel_pstate_cpu_oob_ids[]
> __initconst = {
>  	X86_MATCH(INTEL_BROADWELL_D,		core_funcs),
> @@ -3825,6 +3841,12 @@ static int __init intel_pstate_init(void)
>  	const struct x86_cpu_id *id;
>  	int rc;
>  
> +
> +	/* Early DMI check - prevent intel_pstate on problematic
> systems */
> +	if (dmi_check_system(intel_pstate_acpi_cpufreq_prefer)) {
> +		pr_info("intel_pstate: system prefers acpi-cpufreq,
> not loading\n");
> +		return -ENODEV;
> +	}
>  	if (boot_cpu_data.x86_vendor != X86_VENDOR_INTEL)
>  		return -ENODEV;
>  
> @@ -3887,9 +3909,6 @@ static int __init intel_pstate_init(void)
>  		pr_info("Invalid MSRs\n");
>  		return -ENODEV;
>  	}
> -/* Check for systems that should prefer acpi-cpufreq */
> -	if (!default_driver &&
> dmi_check_system(intel_pstate_acpi_cpufreq_prefer))
> -		default_driver = &intel_cpufreq;
>  	/* Without HWP start in the passive mode. */
>  	if (!default_driver)
>  		default_driver = &intel_cpufreq;

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ