Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 125377
b: refs/heads/master
c: afb8a9b
h: refs/heads/master
i:
  125375: ba54daf
v: v3
  • Loading branch information
Gautham R Shenoy authored and Ingo Molnar committed Dec 19, 2008
1 parent 7a4eaa9 commit 5167f85
Show file tree
Hide file tree
Showing 3 changed files with 26 additions and 4 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 716707b29906e1d8d190defe3d646610b097a861
refs/heads/master: afb8a9b70b86866a60e08b2956ae4e1406390336
11 changes: 11 additions & 0 deletions trunk/include/linux/sched.h
Original file line number Diff line number Diff line change
Expand Up @@ -763,6 +763,17 @@ enum cpu_idle_type {
#define SD_SERIALIZE 1024 /* Only a single load balancing instance */
#define SD_WAKE_IDLE_FAR 2048 /* Gain latency sacrificing cache hit */

enum powersavings_balance_level {
POWERSAVINGS_BALANCE_NONE = 0, /* No power saving load balance */
POWERSAVINGS_BALANCE_BASIC, /* Fill one thread/core/package
* first for long running threads
*/
POWERSAVINGS_BALANCE_WAKEUP, /* Also bias task wakeups to semi-idle
* cpu package for power savings
*/
MAX_POWERSAVINGS_BALANCE_LEVELS
};

extern int sched_mc_power_savings, sched_smt_power_savings;

static inline int sd_balance_for_mc_power(void)
Expand Down
17 changes: 14 additions & 3 deletions trunk/kernel/sched.c
Original file line number Diff line number Diff line change
Expand Up @@ -7906,14 +7906,25 @@ int arch_reinit_sched_domains(void)
static ssize_t sched_power_savings_store(const char *buf, size_t count, int smt)
{
int ret;
unsigned int level = 0;

if (buf[0] != '0' && buf[0] != '1')
if (sscanf(buf, "%u", &level) != 1)
return -EINVAL;

/*
* level is always be positive so don't check for
* level < POWERSAVINGS_BALANCE_NONE which is 0
* What happens on 0 or 1 byte write,
* need to check for count as well?
*/

if (level >= MAX_POWERSAVINGS_BALANCE_LEVELS)
return -EINVAL;

if (smt)
sched_smt_power_savings = (buf[0] == '1');
sched_smt_power_savings = level;
else
sched_mc_power_savings = (buf[0] == '1');
sched_mc_power_savings = level;

ret = arch_reinit_sched_domains();

Expand Down

0 comments on commit 5167f85

Please sign in to comment.