--- drivers/acpi/processor_perflib.c | 11 +++++++++++ 1 files changed, 11 insertions(+) Index: linux-2.6.19/drivers/acpi/processor_perflib.c =================================================================== --- linux-2.6.19.orig/drivers/acpi/processor_perflib.c 2006-12-25 15:40:47.000000000 +0800 +++ linux-2.6.19/drivers/acpi/processor_perflib.c 2006-12-26 09:20:14.000000000 +0800 @@ -258,6 +258,7 @@ static int acpi_processor_get_performanc for (i = 0; i < pr->performance->state_count; i++) { struct acpi_processor_px *px = &(pr->performance->states[i]); + int j; state.length = sizeof(struct acpi_processor_px); state.pointer = px; @@ -273,6 +274,16 @@ static int acpi_processor_get_performanc goto end; } + /* + * Fixme: Duplicated core frequency is allowed, if they have the same control and status + */ + if (px->core_frequency == 1992) + for (j = 0; j < i; j++) { + if (pr->performance->states[j].control == px->control && pr->performance->states[j].core_frequency > 1992) + ACPI_DEBUG_PRINT((ACPI_DB_WARN, "States [%d] :Wrong processor core frequency %u, set it to 1992\n", j, (u32)pr->performance->states[j].core_frequency)); + pr->performance->states[j].core_frequency = 1992; + } + ACPI_DEBUG_PRINT((ACPI_DB_INFO, "State [%d]: core_frequency[%d] power[%d] transition_latency[%d] bus_master_latency[%d] control[0x%x] status[0x%x]\n", i,