---
 drivers/acpi/processor_perflib.c |   11 +++++++++++
 1 files changed, 11 insertions(+)

http://bugzilla.kernel.org/attachment.cgi?id=9798&action=view

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,
 
