From: srinivas pandruvada <srinivas.pandruvada@linux.intel.com>
To: Joe Walter <joe.walter@codesensesolutions.com>, rafael@kernel.org
Cc: viresh.kumar@linaro.org, lenb@kernel.org,
linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH] cpufreq: intel_pstate: Add DMI quirk for Dell Inspiron systems
Date: Sun, 08 Jun 2025 18:10:42 -0700 [thread overview]
Message-ID: <77216773e80b1d60f41e48a0f2071066d1e0d393.camel@linux.intel.com> (raw)
In-Reply-To: <20250606231530.3032-1-joe.walter@codesensesolutions.com>
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;
next prev parent reply other threads:[~2025-06-09 1:10 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
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 [this message]
2025-07-09 7:28 ` Rafael J. Wysocki
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=77216773e80b1d60f41e48a0f2071066d1e0d393.camel@linux.intel.com \
--to=srinivas.pandruvada@linux.intel.com \
--cc=joe.walter@codesensesolutions.com \
--cc=lenb@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pm@vger.kernel.org \
--cc=rafael@kernel.org \
--cc=viresh.kumar@linaro.org \
/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