cpufreq.c (944e9a0316e60bc5bc122e46c1fde36e5f6e9f56) | cpufreq.c (72a4ce340a7ebf39e1c6fdc8f5feb4f974d6c635) |
---|---|
1/* 2 * linux/drivers/cpufreq/cpufreq.c 3 * 4 * Copyright (C) 2001 Russell King 5 * (C) 2002 - 2003 Dominik Brodowski <linux@brodo.de> 6 * 7 * Oct 2005 - Ashok Raj <ashok.raj@intel.com> 8 * Added handling for CPU hotplug 9 * Feb 2006 - Jacob Shin <jacob.shin@amd.com> 10 * Fix handling for CPU hotplug -- affected CPUs 11 * 12 * This program is free software; you can redistribute it and/or modify 13 * it under the terms of the GNU General Public License version 2 as 14 * published by the Free Software Foundation. 15 * 16 */ 17 18#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt 19 | 1/* 2 * linux/drivers/cpufreq/cpufreq.c 3 * 4 * Copyright (C) 2001 Russell King 5 * (C) 2002 - 2003 Dominik Brodowski <linux@brodo.de> 6 * 7 * Oct 2005 - Ashok Raj <ashok.raj@intel.com> 8 * Added handling for CPU hotplug 9 * Feb 2006 - Jacob Shin <jacob.shin@amd.com> 10 * Fix handling for CPU hotplug -- affected CPUs 11 * 12 * This program is free software; you can redistribute it and/or modify 13 * it under the terms of the GNU General Public License version 2 as 14 * published by the Free Software Foundation. 15 * 16 */ 17 18#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt 19 |
20#include <asm/cputime.h> |
|
20#include <linux/kernel.h> | 21#include <linux/kernel.h> |
22#include <linux/kernel_stat.h> |
|
21#include <linux/module.h> 22#include <linux/init.h> 23#include <linux/notifier.h> 24#include <linux/cpufreq.h> 25#include <linux/delay.h> 26#include <linux/interrupt.h> 27#include <linux/spinlock.h> | 23#include <linux/module.h> 24#include <linux/init.h> 25#include <linux/notifier.h> 26#include <linux/cpufreq.h> 27#include <linux/delay.h> 28#include <linux/interrupt.h> 29#include <linux/spinlock.h> |
30#include <linux/tick.h> |
|
28#include <linux/device.h> 29#include <linux/slab.h> 30#include <linux/cpu.h> 31#include <linux/completion.h> 32#include <linux/mutex.h> 33#include <linux/syscore_ops.h> 34 35#include <trace/events/power.h> --- 102 unchanged lines hidden (view full) --- 138{ 139 if (have_governor_per_policy()) 140 return &policy->kobj; 141 else 142 return cpufreq_global_kobject; 143} 144EXPORT_SYMBOL_GPL(get_governor_parent_kobj); 145 | 31#include <linux/device.h> 32#include <linux/slab.h> 33#include <linux/cpu.h> 34#include <linux/completion.h> 35#include <linux/mutex.h> 36#include <linux/syscore_ops.h> 37 38#include <trace/events/power.h> --- 102 unchanged lines hidden (view full) --- 141{ 142 if (have_governor_per_policy()) 143 return &policy->kobj; 144 else 145 return cpufreq_global_kobject; 146} 147EXPORT_SYMBOL_GPL(get_governor_parent_kobj); 148 |
149static inline u64 get_cpu_idle_time_jiffy(unsigned int cpu, u64 *wall) 150{ 151 u64 idle_time; 152 u64 cur_wall_time; 153 u64 busy_time; 154 155 cur_wall_time = jiffies64_to_cputime64(get_jiffies_64()); 156 157 busy_time = kcpustat_cpu(cpu).cpustat[CPUTIME_USER]; 158 busy_time += kcpustat_cpu(cpu).cpustat[CPUTIME_SYSTEM]; 159 busy_time += kcpustat_cpu(cpu).cpustat[CPUTIME_IRQ]; 160 busy_time += kcpustat_cpu(cpu).cpustat[CPUTIME_SOFTIRQ]; 161 busy_time += kcpustat_cpu(cpu).cpustat[CPUTIME_STEAL]; 162 busy_time += kcpustat_cpu(cpu).cpustat[CPUTIME_NICE]; 163 164 idle_time = cur_wall_time - busy_time; 165 if (wall) 166 *wall = cputime_to_usecs(cur_wall_time); 167 168 return cputime_to_usecs(idle_time); 169} 170 171u64 get_cpu_idle_time(unsigned int cpu, u64 *wall, int io_busy) 172{ 173 u64 idle_time = get_cpu_idle_time_us(cpu, io_busy ? wall : NULL); 174 175 if (idle_time == -1ULL) 176 return get_cpu_idle_time_jiffy(cpu, wall); 177 else if (!io_busy) 178 idle_time += get_cpu_iowait_time_us(cpu, wall); 179 180 return idle_time; 181} 182EXPORT_SYMBOL_GPL(get_cpu_idle_time); 183 |
|
146static struct cpufreq_policy *__cpufreq_cpu_get(unsigned int cpu, bool sysfs) 147{ 148 struct cpufreq_policy *data; 149 unsigned long flags; 150 151 if (cpu >= nr_cpu_ids) 152 goto err_out; 153 --- 1838 unchanged lines hidden --- | 184static struct cpufreq_policy *__cpufreq_cpu_get(unsigned int cpu, bool sysfs) 185{ 186 struct cpufreq_policy *data; 187 unsigned long flags; 188 189 if (cpu >= nr_cpu_ids) 190 goto err_out; 191 --- 1838 unchanged lines hidden --- |