Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 39637
b: refs/heads/master
c: 95dd722
h: refs/heads/master
i:
  39635: 157726b
v: v3
  • Loading branch information
Dave Jones committed Oct 18, 2006
1 parent 25f0603 commit 26a23a1
Show file tree
Hide file tree
Showing 2 changed files with 35 additions and 42 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: 0a1230acb549593949397d331f1ecf07889dde20
refs/heads/master: 95dd722700dc9bbb000d51cab07dde48720e9178
75 changes: 34 additions & 41 deletions trunk/arch/i386/kernel/cpu/cpufreq/acpi-cpufreq.c
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,7 @@ static unsigned extract_io(u32 value, struct acpi_cpufreq_data *data)

perf = data->acpi_data;

for (i = 0; i < perf->state_count; i++) {
for (i=0; i<perf->state_count; i++) {
if (value == perf->states[i].status)
return data->freq_table[i].frequency;
}
Expand All @@ -107,7 +107,7 @@ static unsigned extract_msr(u32 msr, struct acpi_cpufreq_data *data)
msr &= INTEL_MSR_RANGE;
perf = data->acpi_data;

for (i = 0; data->freq_table[i].frequency != CPUFREQ_TABLE_END; i++) {
for (i=0; data->freq_table[i].frequency != CPUFREQ_TABLE_END; i++) {
if (msr == perf->states[data->freq_table[i].index].status)
return data->freq_table[i].frequency;
}
Expand All @@ -128,25 +128,23 @@ static unsigned extract_freq(u32 val, struct acpi_cpufreq_data *data)

static void wrport(u16 port, u8 bit_width, u32 value)
{
if (bit_width <= 8) {
if (bit_width <= 8)
outb(value, port);
} else if (bit_width <= 16) {
else if (bit_width <= 16)
outw(value, port);
} else if (bit_width <= 32) {
else if (bit_width <= 32)
outl(value, port);
}
}

static void rdport(u16 port, u8 bit_width, u32 * ret)
{
*ret = 0;
if (bit_width <= 8) {
if (bit_width <= 8)
*ret = inb(port);
} else if (bit_width <= 16) {
else if (bit_width <= 16)
*ret = inw(port);
} else if (bit_width <= 32) {
else if (bit_width <= 32)
*ret = inl(port);
}
}

struct msr_addr {
Expand Down Expand Up @@ -202,15 +200,14 @@ static void do_drv_write(struct drv_cmd *cmd)
}
}

static inline void drv_read(struct drv_cmd *cmd)
static void drv_read(struct drv_cmd *cmd)
{
cpumask_t saved_mask = current->cpus_allowed;
cmd->val = 0;

set_cpus_allowed(current, cmd->mask);
do_drv_read(cmd);
set_cpus_allowed(current, saved_mask);

}

static void drv_write(struct drv_cmd *cmd)
Expand Down Expand Up @@ -323,11 +320,10 @@ static unsigned int get_measured_perf(unsigned int cpu)
mperf_cur.split.lo >>= shift_count;
}

if (aperf_cur.split.lo && mperf_cur.split.lo) {
if (aperf_cur.split.lo && mperf_cur.split.lo)
perf_percent = (aperf_cur.split.lo * 100) / mperf_cur.split.lo;
} else {
else
perf_percent = 0;
}

#else
if (unlikely(((unsigned long)(-1) / 100) < aperf_cur.whole)) {
Expand All @@ -336,11 +332,10 @@ static unsigned int get_measured_perf(unsigned int cpu)
mperf_cur.whole >>= shift_count;
}

if (aperf_cur.whole && mperf_cur.whole) {
if (aperf_cur.whole && mperf_cur.whole)
perf_percent = (aperf_cur.whole * 100) / mperf_cur.whole;
} else {
else
perf_percent = 0;
}

#endif

Expand Down Expand Up @@ -377,7 +372,7 @@ static unsigned int check_freqs(cpumask_t mask, unsigned int freq,
unsigned int cur_freq;
unsigned int i;

for (i = 0; i < 100; i++) {
for (i=0; i<100; i++) {
cur_freq = extract_freq(get_cur_val(mask), data);
if (cur_freq == freq)
return 1;
Expand All @@ -403,7 +398,7 @@ static int acpi_cpufreq_target(struct cpufreq_policy *policy,
dprintk("acpi_cpufreq_target %d (%d)\n", target_freq, policy->cpu);

if (unlikely(data == NULL ||
data->acpi_data == NULL || data->freq_table == NULL)) {
data->acpi_data == NULL || data->freq_table == NULL)) {
return -ENODEV;
}

Expand Down Expand Up @@ -507,15 +502,15 @@ acpi_cpufreq_guess_freq(struct acpi_cpufreq_data *data, unsigned int cpu)
unsigned long freq;
unsigned long freqn = perf->states[0].core_frequency * 1000;

for (i = 0; i < (perf->state_count - 1); i++) {
for (i=0; i<(perf->state_count-1); i++) {
freq = freqn;
freqn = perf->states[i + 1].core_frequency * 1000;
freqn = perf->states[i+1].core_frequency * 1000;
if ((2 * cpu_khz) > (freqn + freq)) {
perf->state = i;
return freq;
}
}
perf->state = perf->state_count - 1;
perf->state = perf->state_count-1;
return freqn;
} else {
/* assume CPU is at P0... */
Expand Down Expand Up @@ -608,18 +603,18 @@ static int acpi_cpufreq_cpu_init(struct cpufreq_policy *policy)
data->acpi_data = acpi_perf_data[cpu];
drv_data[cpu] = data;

if (cpu_has(c, X86_FEATURE_CONSTANT_TSC)) {
if (cpu_has(c, X86_FEATURE_CONSTANT_TSC))
acpi_cpufreq_driver.flags |= CPUFREQ_CONST_LOOPS;
}

result = acpi_processor_register_performance(data->acpi_data, cpu);
if (result)
goto err_free;

perf = data->acpi_data;
policy->shared_type = perf->shared_type;

/*
* Will let policy->cpus know about dependency only when software
* Will let policy->cpus know about dependency only when software
* coordination is required.
*/
if (policy->shared_type == CPUFREQ_SHARED_TYPE_ALL ||
Expand Down Expand Up @@ -667,17 +662,16 @@ static int acpi_cpufreq_cpu_init(struct cpufreq_policy *policy)
goto err_unreg;
}

data->freq_table =
kmalloc(sizeof(struct cpufreq_frequency_table) *
(perf->state_count + 1), GFP_KERNEL);
data->freq_table = kmalloc(sizeof(struct cpufreq_frequency_table) *
(perf->state_count+1), GFP_KERNEL);
if (!data->freq_table) {
result = -ENOMEM;
goto err_unreg;
}

/* detect transition latency */
policy->cpuinfo.transition_latency = 0;
for (i = 0; i < perf->state_count; i++) {
for (i=0; i<perf->state_count; i++) {
if ((perf->states[i].transition_latency * 1000) >
policy->cpuinfo.transition_latency)
policy->cpuinfo.transition_latency =
Expand All @@ -687,9 +681,9 @@ static int acpi_cpufreq_cpu_init(struct cpufreq_policy *policy)

data->max_freq = perf->states[0].core_frequency * 1000;
/* table init */
for (i = 0; i < perf->state_count; i++) {
if (i > 0 && perf->states[i].core_frequency ==
perf->states[i - 1].core_frequency)
for (i=0; i<perf->state_count; i++) {
if (i>0 && perf->states[i].core_frequency ==
perf->states[i-1].core_frequency)
continue;

data->freq_table[valid_states].index = i;
Expand All @@ -700,9 +694,8 @@ static int acpi_cpufreq_cpu_init(struct cpufreq_policy *policy)
data->freq_table[perf->state_count].frequency = CPUFREQ_TABLE_END;

result = cpufreq_frequency_table_cpuinfo(policy, data->freq_table);
if (result) {
if (result)
goto err_freqfree;
}

switch (data->cpu_feature) {
case ACPI_ADR_SPACE_SYSTEM_IO:
Expand All @@ -724,9 +717,8 @@ static int acpi_cpufreq_cpu_init(struct cpufreq_policy *policy)
if (c->x86_vendor == X86_VENDOR_INTEL && c->cpuid_level >= 6) {
unsigned int ecx;
ecx = cpuid_ecx(6);
if (ecx & CPUID_6_ECX_APERFMPERF_CAPABILITY) {
if (ecx & CPUID_6_ECX_APERFMPERF_CAPABILITY)
acpi_cpufreq_driver.getavg = get_measured_perf;
}
}

dprintk("CPU%u - ACPI performance management activated.\n", cpu);
Expand All @@ -747,11 +739,11 @@ static int acpi_cpufreq_cpu_init(struct cpufreq_policy *policy)

return result;

err_freqfree:
err_freqfree:
kfree(data->freq_table);
err_unreg:
err_unreg:
acpi_processor_unregister_performance(perf, cpu);
err_free:
err_free:
kfree(data);
drv_data[cpu] = NULL;

Expand Down Expand Up @@ -827,7 +819,8 @@ static void __exit acpi_cpufreq_exit(void)

module_param(acpi_pstate_strict, uint, 0644);
MODULE_PARM_DESC(acpi_pstate_strict,
"value 0 or non-zero. non-zero -> strict ACPI checks are performed during frequency changes.");
"value 0 or non-zero. non-zero -> strict ACPI checks are "
"performed during frequency changes.");

late_initcall(acpi_cpufreq_init);
module_exit(acpi_cpufreq_exit);
Expand Down

0 comments on commit 26a23a1

Please sign in to comment.