Commit:     b077fbada161479d9a32a7730d2822d5e737b306
Parent:     e760e716d47b48caf98da348368fd41b4a9b9e7e
Author:     Venkatesh Pallipadi <[EMAIL PROTECTED]>
AuthorDate: Mon Feb 11 15:20:27 2008 -0800
Committer:  Len Brown <[EMAIL PROTECTED]>
CommitDate: Wed Feb 13 23:59:31 2008 -0500

    ACPI: fix suspend regression due to idle update
    Earlier patch (bc71bec91f9875ef825d12104acf3bf4ca215fa4) broke
    suspend resume on many laptops. The problem was reported by
    Carlos R. Mafra and Calvin Walton, who bisected the issue to above patch.
    The problem was because, C2 and C3 code were calling acpi_idle_enter_c1
    directly, with C2 or C3 as state parameter, while suspend/resume was in
    progress. The patch bc71bec started making use of that state information,
    assuming that it would always be referring to C1 state. This caused the
    problem with suspend-resume as we ended up using C2/C3 state indirectly.
    Fix this by adding acpi_idle_suspend check in enter_c1.
    Signed-off-by: Venkatesh Pallipadi <[EMAIL PROTECTED]>
    Signed-off-by: Len Brown <[EMAIL PROTECTED]>
 drivers/acpi/processor_idle.c |    8 ++++++++
 1 files changed, 8 insertions(+), 0 deletions(-)

diff --git a/drivers/acpi/processor_idle.c b/drivers/acpi/processor_idle.c
index 32003fd..1f022b0 100644
--- a/drivers/acpi/processor_idle.c
+++ b/drivers/acpi/processor_idle.c
@@ -1420,6 +1420,14 @@ static int acpi_idle_enter_c1(struct cpuidle_device *dev,
                return 0;
+       /* Do not access any ACPI IO ports in suspend path */
+       if (acpi_idle_suspend) {
+               acpi_safe_halt();
+               local_irq_enable();
+               return 0;
+       }
        if (pr->flags.bm_check)
                acpi_idle_update_bm_rld(pr, cx);
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

Reply via email to