Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux...
[sfrench/cifs-2.6.git] / arch / x86 / kernel / cpu / cpufreq / acpi-cpufreq.c
index 05209b5cc6ca47959c063fbd1b8c480ab7b0f7cd..19f6b9d27e83288fb516e59a490c6e08f55a9a64 100644 (file)
@@ -682,6 +682,18 @@ static int acpi_cpufreq_cpu_init(struct cpufreq_policy *policy)
                            perf->states[i].transition_latency * 1000;
        }
 
+       /* Check for high latency (>20uS) from buggy BIOSes, like on T42 */
+       if (perf->control_register.space_id == ACPI_ADR_SPACE_FIXED_HARDWARE &&
+           policy->cpuinfo.transition_latency > 20 * 1000) {
+               static int print_once;
+               policy->cpuinfo.transition_latency = 20 * 1000;
+               if (!print_once) {
+                       print_once = 1;
+                       printk(KERN_INFO "Capping off P-state tranision latency"
+                               " at 20 uS\n");
+               }
+       }
+
        data->max_freq = perf->states[0].core_frequency * 1000;
        /* table init */
        for (i = 0; i < perf->state_count; i++) {