diff options
-rw-r--r-- | drivers/cpuidle/cpuidle.c | 2 | ||||
-rw-r--r-- | drivers/cpuidle/sysfs.c | 10 | ||||
-rw-r--r-- | include/linux/cpuidle.h | 4 |
3 files changed, 11 insertions, 5 deletions
diff --git a/drivers/cpuidle/cpuidle.c b/drivers/cpuidle/cpuidle.c index d73663a52324..d42deb310ac7 100644 --- a/drivers/cpuidle/cpuidle.c +++ b/drivers/cpuidle/cpuidle.c | |||
@@ -67,7 +67,7 @@ static void cpuidle_idle_call(void) | |||
67 | /* enter the state and update stats */ | 67 | /* enter the state and update stats */ |
68 | dev->last_residency = target_state->enter(dev, target_state); | 68 | dev->last_residency = target_state->enter(dev, target_state); |
69 | dev->last_state = target_state; | 69 | dev->last_state = target_state; |
70 | target_state->time += dev->last_residency; | 70 | target_state->time += (unsigned long long)dev->last_residency; |
71 | target_state->usage++; | 71 | target_state->usage++; |
72 | 72 | ||
73 | /* give the governor an opportunity to reflect on the outcome */ | 73 | /* give the governor an opportunity to reflect on the outcome */ |
diff --git a/drivers/cpuidle/sysfs.c b/drivers/cpuidle/sysfs.c index 69102ca05685..e949618b9be0 100644 --- a/drivers/cpuidle/sysfs.c +++ b/drivers/cpuidle/sysfs.c | |||
@@ -218,6 +218,12 @@ static ssize_t show_state_##_name(struct cpuidle_state *state, char *buf) \ | |||
218 | return sprintf(buf, "%u\n", state->_name);\ | 218 | return sprintf(buf, "%u\n", state->_name);\ |
219 | } | 219 | } |
220 | 220 | ||
221 | #define define_show_state_ull_function(_name) \ | ||
222 | static ssize_t show_state_##_name(struct cpuidle_state *state, char *buf) \ | ||
223 | { \ | ||
224 | return sprintf(buf, "%llu\n", state->_name);\ | ||
225 | } | ||
226 | |||
221 | #define define_show_state_str_function(_name) \ | 227 | #define define_show_state_str_function(_name) \ |
222 | static ssize_t show_state_##_name(struct cpuidle_state *state, char *buf) \ | 228 | static ssize_t show_state_##_name(struct cpuidle_state *state, char *buf) \ |
223 | { \ | 229 | { \ |
@@ -228,8 +234,8 @@ static ssize_t show_state_##_name(struct cpuidle_state *state, char *buf) \ | |||
228 | 234 | ||
229 | define_show_state_function(exit_latency) | 235 | define_show_state_function(exit_latency) |
230 | define_show_state_function(power_usage) | 236 | define_show_state_function(power_usage) |
231 | define_show_state_function(usage) | 237 | define_show_state_ull_function(usage) |
232 | define_show_state_function(time) | 238 | define_show_state_ull_function(time) |
233 | define_show_state_str_function(name) | 239 | define_show_state_str_function(name) |
234 | define_show_state_str_function(desc) | 240 | define_show_state_str_function(desc) |
235 | 241 | ||
diff --git a/include/linux/cpuidle.h b/include/linux/cpuidle.h index 6b72a4584086..51e6b1e520e6 100644 --- a/include/linux/cpuidle.h +++ b/include/linux/cpuidle.h | |||
@@ -38,8 +38,8 @@ struct cpuidle_state { | |||
38 | unsigned int power_usage; /* in mW */ | 38 | unsigned int power_usage; /* in mW */ |
39 | unsigned int target_residency; /* in US */ | 39 | unsigned int target_residency; /* in US */ |
40 | 40 | ||
41 | unsigned int usage; | 41 | unsigned long long usage; |
42 | unsigned int time; /* in US */ | 42 | unsigned long long time; /* in US */ |
43 | 43 | ||
44 | int (*enter) (struct cpuidle_device *dev, | 44 | int (*enter) (struct cpuidle_device *dev, |
45 | struct cpuidle_state *state); | 45 | struct cpuidle_state *state); |