Commit a554a25e authored by Frederic Weisbecker's avatar Frederic Weisbecker Committed by Rafael J. Wysocki
Browse files

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: default avatarFrederic Weisbecker <frederic@kernel.org>
Link: https://patch.msgid.link/aXozx0PXutnm8ECX@localhost.localdomain


Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
parent cc764d3b
Loading
Loading
Loading
Loading
+1 −6
Original line number Diff line number Diff line
@@ -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 {
+2 −0
Original line number Diff line number Diff line
@@ -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) { }
+1 −1
Original line number Diff line number Diff line
@@ -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)) {
+0 −2
Original line number Diff line number Diff line
@@ -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);
+7 −1
Original line number Diff line number Diff line
@@ -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);
Loading