mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-12-27 10:01:39 -05:00
IO time is considered busy by default for modern Intel processors. The current check covers recent Family 6 models but excludes the brand new Families 18 and 19. According to Arjan van de Ven, the model check was mainly due to a lack of testing on systems before INTEL_CORE2_MEROM. He suggests considering all Intel processors as having an efficient idle. Extend the IO busy classification to all Intel processors starting with Family 6, including Family 15 (Pentium 4s) and upcoming Families 18/19. Use an x86 VFM check and move the function to the header file to avoid using arch-specific #ifdefs in the C file. Signed-off-by: Sohil Mehta <sohil.mehta@intel.com> Link: https://patch.msgid.link/20250908230655.2562440-1-sohil.mehta@intel.com [ rjw: Added empty line after #include ] Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
50 lines
1.3 KiB
C
50 lines
1.3 KiB
C
/* SPDX-License-Identifier: GPL-2.0-only */
|
|
/*
|
|
* Header file for CPUFreq ondemand governor and related code.
|
|
*
|
|
* Copyright (C) 2016, Intel Corporation
|
|
* Author: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
|
|
*/
|
|
|
|
#include "cpufreq_governor.h"
|
|
|
|
struct od_policy_dbs_info {
|
|
struct policy_dbs_info policy_dbs;
|
|
unsigned int freq_lo;
|
|
unsigned int freq_lo_delay_us;
|
|
unsigned int freq_hi_delay_us;
|
|
unsigned int sample_type:1;
|
|
};
|
|
|
|
static inline struct od_policy_dbs_info *to_dbs_info(struct policy_dbs_info *policy_dbs)
|
|
{
|
|
return container_of(policy_dbs, struct od_policy_dbs_info, policy_dbs);
|
|
}
|
|
|
|
struct od_dbs_tuners {
|
|
unsigned int powersave_bias;
|
|
};
|
|
|
|
#ifdef CONFIG_X86
|
|
#include <asm/cpu_device_id.h>
|
|
|
|
/*
|
|
* 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. Mike Chan (android.com) claims this is also not
|
|
* true for ARM.
|
|
*
|
|
* Because of this, select a known series of Intel CPUs (Family 6 and
|
|
* later) by default, and leave all others up to the user.
|
|
*/
|
|
static inline bool od_should_io_be_busy(void)
|
|
{
|
|
return (boot_cpu_data.x86_vendor == X86_VENDOR_INTEL &&
|
|
boot_cpu_data.x86_vfm >= INTEL_PENTIUM_PRO);
|
|
}
|
|
#else
|
|
static inline bool od_should_io_be_busy(void) { return false; }
|
|
#endif
|