Hi, ok it's a bit late now..., just one comment: On Thu, 2008-02-07 at 04:34 -0500, Len Brown wrote: > From: Zhang Rui <rui.zhang@xxxxxxxxx> > > Register ACPI processor as thermal cooling devices. > A combination of processor T-state and P-state are used for thermal throttling. > the processor will reduce the frequency first and then set the T-state. > > we use cpufreq_thermal_reduction_pctg to calculate the cpufreq limit, > and call cpufreq_verify_with_limit to set the cpufreq limit. > if cpufreq driver is loaded, then we have four cooling state for cpufreq control. > cooling state 0: cpufreq limit == max_freq > cooling state 1: cpufreq limit == max_freq * 80% > cooling state 2: cpufreq limit == max_freq * 60% > cooling state 3: cpufreq limit == max_freq * 40% > @@ -93,6 +94,9 @@ static int acpi_processor_apply_limit(struct acpi_processor *pr) > * _any_ cpufreq driver and not only the acpi-cpufreq driver. > */ > > +#define CPUFREQ_THERMAL_MIN_STEP 0 > +#define CPUFREQ_THERMAL_MAX_STEP 3 > + > static unsigned int cpufreq_thermal_reduction_pctg[NR_CPUS]; > static unsigned int acpi_thermal_cpufreq_is_init = 0; > > @@ -109,8 +113,9 @@ static int acpi_thermal_cpufreq_increase(unsigned int cpu) > if (!cpu_has_cpufreq(cpu)) > return -ENODEV; > > - if (cpufreq_thermal_reduction_pctg[cpu] < 60) { > - cpufreq_thermal_reduction_pctg[cpu] += 20; > + if (cpufreq_thermal_reduction_pctg[cpu] < > + CPUFREQ_THERMAL_MAX_STEP) { > + cpufreq_thermal_reduction_pctg[cpu]++; > cpufreq_update_policy(cpu); > return 0; > } > @@ -123,8 +128,9 @@ static int acpi_thermal_cpufreq_decrease(unsigned int cpu) > if (!cpu_has_cpufreq(cpu)) > return -ENODEV; > > - if (cpufreq_thermal_reduction_pctg[cpu] > 20) > - cpufreq_thermal_reduction_pctg[cpu] -= 20; > + if (cpufreq_thermal_reduction_pctg[cpu] > > + (CPUFREQ_THERMAL_MIN_STEP + 1)) cpufreq_thermal_reduction_pctg[cpu] must never be: CPUFREQ_THERMAL_MIN_STEP 0 or the frequency is set to zero? This looks a bit confusing, why not define: #define CPUFREQ_THERMAL_MIN_STEP 1 and then remove the: CPUFREQ_THERMAL_MIN_STEP + 1 to: + if (cpufreq_thermal_reduction_pctg[cpu] > + (CPUFREQ_THERMAL_MIN_STEP)) + cpufreq_thermal_reduction_pctg[cpu]--; > + cpufreq_thermal_reduction_pctg[cpu]--; > else > cpufreq_thermal_reduction_pctg[cpu] = 0; > cpufreq_update_policy(cpu); Thomas - To unsubscribe from this list: send the line "unsubscribe linux-acpi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html