Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=e196441bdf2dbf0526b28a6829c39557c236d611
Commit:     e196441bdf2dbf0526b28a6829c39557c236d611
Parent:     4f86d3a8e297205780cca027e974fd5f81064780
Author:     Len Brown <[EMAIL PROTECTED]>
AuthorDate: Thu Oct 4 01:23:47 2007 -0400
Committer:  Len Brown <[EMAIL PROTECTED]>
CommitDate: Wed Oct 10 00:26:43 2007 -0400

    ACPI: cpuidle: port idle timer suspend/resume workaround to cpuidle
    
    Some timers stop during C2 and C3, and so there are various
    generations of timer broadcast workarounds to deal with that.
    But that (already complex) code gets confused during suspend.
    
    As it is unlikely that deep C-states would save much power
    during the actual suspend/resume process anyway, deep C-states
    were disabled via the addition of .suspend/.resume hooks
    in to the ACPI processor driver.
    
    Here that workaround is ported to the cpuidle version of
    the ACPI idle loop.  Technically, ACPI could un-register
    itself from cpuidle on .suspend, but that code path
    is currently quite cumbersome.  So instead,
    we simply invoke C1 from the C2 and C3 handlers
    for the duration of .suspend/.resume.
    
    Signed-off-by: Len Brown <[EMAIL PROTECTED]>
---
 drivers/acpi/processor_idle.c |    6 ++++++
 1 files changed, 6 insertions(+), 0 deletions(-)

diff --git a/drivers/acpi/processor_idle.c b/drivers/acpi/processor_idle.c
index 99da6a7..0cad56c 100644
--- a/drivers/acpi/processor_idle.c
+++ b/drivers/acpi/processor_idle.c
@@ -1416,6 +1416,9 @@ static int acpi_idle_enter_simple(struct cpuidle_device 
*dev,
        if (unlikely(!pr))
                return 0;
 
+       if (acpi_idle_suspend)
+               return(acpi_idle_enter_c1(dev, state));
+
        if (pr->flags.bm_check)
                acpi_idle_update_bm_rld(pr, cx);
 
@@ -1477,6 +1480,9 @@ static int acpi_idle_enter_bm(struct cpuidle_device *dev,
        if (unlikely(!pr))
                return 0;
 
+       if (acpi_idle_suspend)
+               return(acpi_idle_enter_c1(dev, state));
+
        local_irq_disable();
        current_thread_info()->status &= ~TS_POLLING;
        /*
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to