mirror of
https://github.com/torvalds/linux.git
synced 2026-03-08 01:04:41 +01:00
cpufreq: ondemand: Simplify idle cputime granularity test
cpufreq calls get_cpu_idle_time_us() just to know if idle cputime accounting has a nanoseconds granularity. Use the appropriate indicator instead to make that deduction. Signed-off-by: Frederic Weisbecker <frederic@kernel.org> Link: https://patch.msgid.link/aXozx0PXutnm8ECX@localhost.localdomain Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
This commit is contained in:
parent
cc764d3bbd
commit
a554a25e66
6 changed files with 12 additions and 11 deletions
|
|
@ -334,17 +334,12 @@ static void od_free(struct policy_dbs_info *policy_dbs)
|
|||
static int od_init(struct dbs_data *dbs_data)
|
||||
{
|
||||
struct od_dbs_tuners *tuners;
|
||||
u64 idle_time;
|
||||
int cpu;
|
||||
|
||||
tuners = kzalloc(sizeof(*tuners), GFP_KERNEL);
|
||||
if (!tuners)
|
||||
return -ENOMEM;
|
||||
|
||||
cpu = get_cpu();
|
||||
idle_time = get_cpu_idle_time_us(cpu, NULL);
|
||||
put_cpu();
|
||||
if (idle_time != -1ULL) {
|
||||
if (tick_nohz_is_active()) {
|
||||
/* Idle micro accounting is supported. Use finer thresholds */
|
||||
dbs_data->up_threshold = MICRO_FREQUENCY_UP_THRESHOLD;
|
||||
} else {
|
||||
|
|
|
|||
|
|
@ -126,6 +126,7 @@ enum tick_dep_bits {
|
|||
|
||||
#ifdef CONFIG_NO_HZ_COMMON
|
||||
extern bool tick_nohz_enabled;
|
||||
extern bool tick_nohz_is_active(void);
|
||||
extern bool tick_nohz_tick_stopped(void);
|
||||
extern bool tick_nohz_tick_stopped_cpu(int cpu);
|
||||
extern void tick_nohz_idle_stop_tick(void);
|
||||
|
|
@ -142,6 +143,7 @@ extern u64 get_cpu_idle_time_us(int cpu, u64 *last_update_time);
|
|||
extern u64 get_cpu_iowait_time_us(int cpu, u64 *last_update_time);
|
||||
#else /* !CONFIG_NO_HZ_COMMON */
|
||||
#define tick_nohz_enabled (0)
|
||||
static inline bool tick_nohz_is_active(void) { return false; }
|
||||
static inline int tick_nohz_tick_stopped(void) { return 0; }
|
||||
static inline int tick_nohz_tick_stopped_cpu(int cpu) { return 0; }
|
||||
static inline void tick_nohz_idle_stop_tick(void) { }
|
||||
|
|
|
|||
|
|
@ -943,7 +943,7 @@ void clock_was_set(unsigned int bases)
|
|||
cpumask_var_t mask;
|
||||
int cpu;
|
||||
|
||||
if (!hrtimer_hres_active(cpu_base) && !tick_nohz_active)
|
||||
if (!hrtimer_hres_active(cpu_base) && !tick_nohz_is_active())
|
||||
goto out_timerfd;
|
||||
|
||||
if (!zalloc_cpumask_var(&mask, GFP_KERNEL)) {
|
||||
|
|
|
|||
|
|
@ -156,7 +156,6 @@ static inline void tick_nohz_init(void) { }
|
|||
#endif
|
||||
|
||||
#ifdef CONFIG_NO_HZ_COMMON
|
||||
extern unsigned long tick_nohz_active;
|
||||
extern void timers_update_nohz(void);
|
||||
extern u64 get_jiffies_update(unsigned long *basej);
|
||||
# ifdef CONFIG_SMP
|
||||
|
|
@ -171,7 +170,6 @@ extern void timer_expire_remote(unsigned int cpu);
|
|||
# endif
|
||||
#else /* CONFIG_NO_HZ_COMMON */
|
||||
static inline void timers_update_nohz(void) { }
|
||||
#define tick_nohz_active (0)
|
||||
#endif
|
||||
|
||||
DECLARE_PER_CPU(struct hrtimer_cpu_base, hrtimer_bases);
|
||||
|
|
|
|||
|
|
@ -693,7 +693,7 @@ void __init tick_nohz_init(void)
|
|||
* NO HZ enabled ?
|
||||
*/
|
||||
bool tick_nohz_enabled __read_mostly = true;
|
||||
unsigned long tick_nohz_active __read_mostly;
|
||||
static unsigned long tick_nohz_active __read_mostly;
|
||||
/*
|
||||
* Enable / Disable tickless mode
|
||||
*/
|
||||
|
|
@ -704,6 +704,12 @@ static int __init setup_tick_nohz(char *str)
|
|||
|
||||
__setup("nohz=", setup_tick_nohz);
|
||||
|
||||
bool tick_nohz_is_active(void)
|
||||
{
|
||||
return tick_nohz_active;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(tick_nohz_is_active);
|
||||
|
||||
bool tick_nohz_tick_stopped(void)
|
||||
{
|
||||
struct tick_sched *ts = this_cpu_ptr(&tick_cpu_sched);
|
||||
|
|
|
|||
|
|
@ -281,7 +281,7 @@ DEFINE_STATIC_KEY_FALSE(timers_migration_enabled);
|
|||
|
||||
static void timers_update_migration(void)
|
||||
{
|
||||
if (sysctl_timer_migration && tick_nohz_active)
|
||||
if (sysctl_timer_migration && tick_nohz_is_active())
|
||||
static_branch_enable(&timers_migration_enabled);
|
||||
else
|
||||
static_branch_disable(&timers_migration_enabled);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue