Module Name: src Committed By: jruoho Date: Sun Jul 18 09:29:13 UTC 2010
Modified Files: src/sys/arch/amd64/conf: GENERIC src/sys/arch/i386/conf: GENERIC src/sys/arch/x86/conf: files.x86 src/sys/arch/x86/include: machdep.h src/sys/arch/x86/x86: x86_machdep.c src/sys/dev/acpi: acpi.c files.acpi Added Files: src/sys/arch/x86/acpi: acpi_cpu_md.c src/sys/dev/acpi: acpi_cpu.c acpi_cpu.h acpi_cpu_cstate.c Log Message: Merge a driver for ACPI CPUs with basic support for processor power states, also known as C-states. The code is modular and provides an easy way to add the remaining functionality later (namely throttling and P-states). Remarks: 1. Commented out in the GENERICs; more testing exposure is needed. 2. The C3-state is disabled for the time being because it turns off timers, among them the local APIC timer. This may not be universally true on all x86 processors; define ACPICPU_ENABLE_C3 to test. 3. The algorithm used to choose a power state may need tuning. When evaluating the appropriate state, the implementation uses the previous sleep time as an indicator. Additional hints would include for example the system load. Also bus master activity is evaluated when choosing a state. The usb(4) stack is notorious for such activity even when unused. Typically it must be disabled in order to reach the C3-state, but it may also prevent the use of C2. 4. While no extensive empirical measurements have been carried out, the power savings are somewhere between 1-2 W with C1 and C2, depending on the processor, firmware, and load. With C3 even up to 4 W can be saved. The less something ticks, the more power is saved. ok jmcneill@, joerg@, and discussed with various people. To generate a diff of this commit: cvs rdiff -u -r1.281 -r1.282 src/sys/arch/amd64/conf/GENERIC cvs rdiff -u -r1.986 -r1.987 src/sys/arch/i386/conf/GENERIC cvs rdiff -u -r0 -r1.1 src/sys/arch/x86/acpi/acpi_cpu_md.c cvs rdiff -u -r1.55 -r1.56 src/sys/arch/x86/conf/files.x86 cvs rdiff -u -r1.2 -r1.3 src/sys/arch/x86/include/machdep.h cvs rdiff -u -r1.41 -r1.42 src/sys/arch/x86/x86/x86_machdep.c cvs rdiff -u -r1.206 -r1.207 src/sys/dev/acpi/acpi.c cvs rdiff -u -r0 -r1.1 src/sys/dev/acpi/acpi_cpu.c \ src/sys/dev/acpi/acpi_cpu.h src/sys/dev/acpi/acpi_cpu_cstate.c cvs rdiff -u -r1.75 -r1.76 src/sys/dev/acpi/files.acpi Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.