speedstep-centrino: ignore 0xffff'ed P-States
PATCH 1/1 speedstep-centrino: ignore 0xffff'ed P-States
Some ACPI tables contain 0xffff'ed entries for "P-States". This is obviously incorrect according to the ACPI specifications, nonetheless it should "just work". So, simply ignore such invalid P-States instead of aborting. Thanks to Frederik Reiss for testing (and fixing) this patch.
Signed-off-by Dominik Brodowski <[email protected]>
arch/i386/kernel/cpu/cpufreq/speedstep-centrino.c +8 -0
@@ -347,6 +347,12 @@ goto err_unreg; } +if (p.states[i].core_frequency > p.states[0 ].core_frequency) { +printk (KERN_DEBUG "P%u has larger frequency than P0, skipping\n" , i); + p.states[i].core_frequency =0 ; +continue ; + } +if (extract_clock (p.states[i].control) != (p.states[i].core_frequency *1000 )) {printk (KERN_DEBUG "Invalid encoded frequency\n" );
@@ -378,6 +384,8 @@ centrino_model->op_points[i].frequency = p.states[i].core_frequency *1000 ;if (cur_freq == centrino_model->op_points[i].frequency) p.state = i; +if (!p.states[i].core_frequency) + centrino_model->op_points[i].frequency =CPUFREQ_ENTRY_INVALID ; } centrino_model->op_points[p.state_count].frequency =CPUFREQ_TABLE_END ;