acpi_cpu: do not apply P_LVLx_LAT rules to latencies returned by _CST
authorSascha Wildner <saw@online.de>
Mon, 7 Nov 2011 18:23:35 +0000 (19:23 +0100)
committerSascha Wildner <saw@online.de>
Mon, 7 Nov 2011 18:23:35 +0000 (19:23 +0100)
ACPI specification states that if P_LVL2_LAT >100, then a system
doesn't support C2; if P_LVL3_LAT >1000, then C3 is not supported.

But there are no such rules for Cx state data returned by _CST. If a
state is not supported it should not be included into the return
package. In other words, any latency value returned by _CST is valid,
it's up to the OS and/or user to decide whether to use it.

Submitted-by: Johannes Hofmann <Johannes.Hofmann@gmx.de>
Taken-from:    FreeBSD (rev 212549)
Dragonfly-bug: <http://bugs.dragonflybsd.org/issue2157>

sys/dev/acpica5/acpi_cpu_cstate.c

index 500fdd4..209256a 100644 (file)
@@ -610,18 +610,11 @@ acpi_cpu_cx_cst(struct acpi_cpu_softc *sc)
            sc->cpu_cx_count++;
            continue;
        case ACPI_STATE_C2:
-           if (cx_ptr->trans_lat > 100) {
-               ACPI_DEBUG_PRINT((ACPI_DB_INFO,
-                                "acpi_cpu%d: C2[%d] not available.\n",
-                                device_get_unit(sc->cpu_dev), i));
-               continue;
-           }
            sc->cpu_non_c3 = i;
            break;
        case ACPI_STATE_C3:
        default:
-           if (cx_ptr->trans_lat > 1000 ||
-               (cpu_quirks & CPU_QUIRK_NO_C3) != 0) {
+           if ((cpu_quirks & CPU_QUIRK_NO_C3) != 0) {
 
                ACPI_DEBUG_PRINT((ACPI_DB_INFO,
                                 "acpi_cpu%d: C3[%d] not available.\n",