Skip to content

Commit

Permalink
Some c-states exposed by the intel_idle driver are assigned
Browse files Browse the repository at this point in the history
the same line_level, which means that the most recent one
assigned can overwrite another c-state. For example, the
C1-SKL c-state is overwritten by the C1E-SKL c-state because
both have a "1" in the name and are assigned the same line
level. To fix this, check if a "sub c-state" (ex. C1E-SKL)
is being inserted. If so, check the vector of c-states if
a c-state with similar name (ex. C1-SKL) exists, and
increment the line level.

Signed-off-by: Gautam Paranjape <gautam.paranjape@intel.com>
  • Loading branch information
Gautam Paranjape authored and nswamina committed Jul 21, 2017
1 parent a64ce00 commit f3f350f
Showing 1 changed file with 11 additions and 0 deletions.
11 changes: 11 additions & 0 deletions src/cpu/abstract_cpu.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -218,6 +218,17 @@ void abstract_cpu::insert_cstate(const char *linux_name, const char *human_name,
}
if (*c >= '0' && *c <='9') {
state->line_level = strtoull(c, NULL, 10);
if(*(c+1) != '-'){
int greater_line_level = strtoull(c, NULL, 10);
for(unsigned int pos = 0; pos < cstates.size(); pos++){
if(*c == cstates[pos]->human_name[1]){
if(*(c+1) != cstates[pos]->human_name[2]){
greater_line_level = max(greater_line_level, cstates[pos]->line_level);
state->line_level = greater_line_level + 1;
}
}
}
}
break;
}
c++;
Expand Down

0 comments on commit f3f350f

Please sign in to comment.