Re: [PATCH v2 06/17] cpufreq: Fix the efficient idle check for Intel extended Families
From: Zhang, Rui
Date: Wed Feb 12 2025 - 00:35:21 EST
On Tue, 2025-02-11 at 19:43 +0000, Sohil Mehta wrote:
> IO time is considered as busy by default for modern Intel processors.
> However the check doesn't include the upcoming Family 18 and 19
> processors. Also, Arjan van de Ven says the current nature of the
> check
> was mainly due to lack of testing on old systems. He suggests
> considering all Intel processors as having efficient idle.
>
> Extend the IO busy classification to all Intel processors starting
> with
> Family 6.
>
> Signed-off-by: Sohil Mehta <sohil.mehta@xxxxxxxxx>
>
> ---
>
> v2: Improve commit message and code comments.
>
> ---
> drivers/cpufreq/cpufreq_ondemand.c | 15 +++++++++------
> 1 file changed, 9 insertions(+), 6 deletions(-)
>
> diff --git a/drivers/cpufreq/cpufreq_ondemand.c
> b/drivers/cpufreq/cpufreq_ondemand.c
> index a7c38b8b3e78..b13f197707f4 100644
> --- a/drivers/cpufreq/cpufreq_ondemand.c
> +++ b/drivers/cpufreq/cpufreq_ondemand.c
> @@ -15,6 +15,10 @@
> #include <linux/tick.h>
> #include <linux/sched/cpufreq.h>
>
> +#ifdef CONFIG_X86
> +#include <asm/cpu_device_id.h>
> +#endif
> +
> #include "cpufreq_ondemand.h"
>
> /* On-demand governor macros */
> @@ -32,21 +36,20 @@ static unsigned int default_powersave_bias;
> /*
> * Not all CPUs want IO time to be accounted as busy; this depends
> on how
> * efficient idling at a higher frequency/voltage is.
> - * Pavel Machek says this is not so for various generations of AMD
> and old
> - * Intel systems.
> + * Pavel Machek says this is not so for various generations of AMD.
> * Mike Chan (android.com) claims this is also not true for ARM.
> - * Because of this, whitelist specific known (series) of CPUs by
> default, and
> + * Because of this, select known series of CPUs by default, and
> * leave all others up to the user.
> */
> static int should_io_be_busy(void)
> {
> #if defined(CONFIG_X86)
> /*
> - * For Intel, Core 2 (model 15) and later have an efficient
> idle.
> + * Starting with Family 6 consider all Intel CPUs to have an
> + * efficient idle.
> */
> if (boot_cpu_data.x86_vendor == X86_VENDOR_INTEL &&
> - boot_cpu_data.x86 == 6 &&
> - boot_cpu_data.x86_model >= 15)
> + boot_cpu_data.x86_vfm >= INTEL_PENTIUM_PRO)
This is "Starting from P4" rather than "Starting from Family 6", right?
thanks,
rui
> return 1;
> #endif
> return 0;