[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [linux-2.6.18-xen] CPUIDLE: DOM0, enable C1 FFH
# HG changeset patch # User Keir Fraser <keir.fraser@xxxxxxxxxx> # Date 1225373683 0 # Node ID 2fb13b8cbe134fdb3f18ee21e641e52655066c62 # Parent ac9a6209c679196a9ec1ff21d964258f36be439d CPUIDLE: DOM0, enable C1 FFH Get C1 info from acpi table and pass it to Xen. It is partially backported from below kernel commit: commit 991528d7348667924176f3e29addea0675298944 Author: Venkatesh Pallipadi <venkatesh.pallipadi@xxxxxxxxx> Date: Mon Sep 25 16:28:13 2006 -0700 ACPI: Processor native C-states using MWAIT Intel processors starting with the Core Duo support support processor native C-state using the MWAIT instruction. Refer: Intel Architecture Software Developer's Manual http://www.intel.com/design/Pentium4/manuals/253668.htm Platform firmware exports the support for Native C-state to OS using ACPI _PDC and _CST methods. Refer: Intel Processor Vendor-Specific ACPI: Interface Specification http://www.intel.com/technology/iapc/acpi/downloads/302223.htm With Processor Native C-state, we use 'MWAIT' instruction on the processor to enter different C-states (C1, C2, C3). We won't use the special IO ports to enter C-state and no SMM mode etc required to enter C-state. Overall this will mean better C-state support. One major advantage of using MWAIT for all C-states is, with this and "treat interrupt as break event" feature of MWAIT, we can now get accurate timing for the time spent in C1, C2, .. states. Signed-off-by: Venkatesh Pallipadi <venkatesh.pallipadi@xxxxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxx> Signed-off-by: Len Brown <len.brown@xxxxxxxxx> Signed-off-by: Wei Gang <gang.wei@xxxxxxxxx> --- drivers/acpi/processor_idle.c | 12 ++++++++---- 1 files changed, 8 insertions(+), 4 deletions(-) diff -r ac9a6209c679 -r 2fb13b8cbe13 drivers/acpi/processor_idle.c --- a/drivers/acpi/processor_idle.c Thu Oct 30 13:18:07 2008 +0000 +++ b/drivers/acpi/processor_idle.c Thu Oct 30 13:34:43 2008 +0000 @@ -654,7 +654,7 @@ static int acpi_processor_get_power_info if (nocst) return -ENODEV; - current_count = 1; + current_count = 0; /* Zero initialize C2 onwards and prepare for fresh CST lookup */ for (i = 2; i < ACPI_PROCESSOR_MAX_POWER; i++) @@ -728,13 +728,17 @@ static int acpi_processor_get_power_info cx.type = obj->integer.value; + /* + * Some buggy BIOSes won't list C1 in _CST - + * Let acpi_processor_get_power_info_default() handle them later + */ + if (i == 1 && cx.type != ACPI_STATE_C1) + current_count++; + /* Following check doesn't apply to external control case */ if (!processor_pm_external() && (cx.type != ACPI_STATE_C1) && (reg->space_id != ACPI_ADR_SPACE_SYSTEM_IO)) - continue; - - if ((cx.type < ACPI_STATE_C2) || (cx.type > ACPI_STATE_C3)) continue; obj = (union acpi_object *)&(element->package.elements[2]); _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |