* [PATCH] cpufreq: intel_pstate: Add DMI quirk for Dell Inspiron systems
@ 2025-06-06 23:15 Joe Walter
2025-06-09 1:10 ` srinivas pandruvada
2025-07-09 7:28 ` Rafael J. Wysocki
0 siblings, 2 replies; 3+ messages in thread
From: Joe Walter @ 2025-06-06 23:15 UTC (permalink / raw)
To: srinivas.pandruvada, rafael
Cc: viresh.kumar, lenb, linux-pm, linux-kernel, Joe Walter
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.
Affected models:
- Dell Inspiron 15 7000 Gaming
- Dell Inspiron 7567
- Dell Inspiron 7559
Tested-by: Joe Walter <joe.walter@codesensesolutions.com>
Signed-off-by: Joe Walter <joe.walter@codesensesolutions.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;
--
2.48.1
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH] cpufreq: intel_pstate: Add DMI quirk for Dell Inspiron systems
2025-06-06 23:15 [PATCH] cpufreq: intel_pstate: Add DMI quirk for Dell Inspiron systems Joe Walter
@ 2025-06-09 1:10 ` srinivas pandruvada
2025-07-09 7:28 ` Rafael J. Wysocki
1 sibling, 0 replies; 3+ messages in thread
From: srinivas pandruvada @ 2025-06-09 1:10 UTC (permalink / raw)
To: Joe Walter, rafael; +Cc: viresh.kumar, lenb, linux-pm, linux-kernel
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@codesensesolutions.com>
> Signed-off-by: Joe Walter <joe.walter@codesensesolutions.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;
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH] cpufreq: intel_pstate: Add DMI quirk for Dell Inspiron systems
2025-06-06 23:15 [PATCH] cpufreq: intel_pstate: Add DMI quirk for Dell Inspiron systems Joe Walter
2025-06-09 1:10 ` srinivas pandruvada
@ 2025-07-09 7:28 ` Rafael J. Wysocki
1 sibling, 0 replies; 3+ messages in thread
From: Rafael J. Wysocki @ 2025-07-09 7:28 UTC (permalink / raw)
To: joe.walter
Cc: srinivas.pandruvada, rafael, viresh.kumar, lenb, linux-pm,
linux-kernel
On Sat, Jun 7, 2025 at 1:42 AM Joe Walter
<joe.walter@codesensesolutions.com> 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.
>
> Affected models:
> - Dell Inspiron 15 7000 Gaming
> - Dell Inspiron 7567
> - Dell Inspiron 7559
>
> Tested-by: Joe Walter <joe.walter@codesensesolutions.com>
> Signed-off-by: Joe Walter <joe.walter@codesensesolutions.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"),
> - },
> - },
> - { }
> -};
This isn't a patch against mainline intel_pstate because there are no
DMI checks in there.
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2025-07-09 7:28 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-06-06 23:15 [PATCH] cpufreq: intel_pstate: Add DMI quirk for Dell Inspiron systems Joe Walter
2025-06-09 1:10 ` srinivas pandruvada
2025-07-09 7:28 ` Rafael J. Wysocki
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).