Commit:     d5a3d32a042126f65a008e0e5204ef92ad2ee55d
Parent:     83dd4504456d4b5e464d6ec4a7665e2c922db67f
Author:     Venkatesh Pallipadi <[EMAIL PROTECTED]>
AuthorDate: Fri Jun 15 19:36:00 2007 -0400
Committer:  Len Brown <[EMAIL PROTECTED]>
CommitDate: Sat Jun 23 10:57:28 2007 -0400

    ACPI: fix 2.6.20 SMP boot regression
    Always disable/enable interrupts in the acpi idle routine,
    even in the error path.
    This is required as the 2.6.20 change in git commit d331e739f5ad2aaa9...
    "Fix interrupt race in idle callback" expects the idle handler
    to enable interrupt before returning.
    There was a case in acpi idle routine, in which interrupt was not being
    enabled before return, which caused the system to hang at bootup, while
    enabling C-states on an SMP system.
    The signature of the hang was that "processor.nocst"
    was required to enable boot.
    Signed-off-by: Venkatesh Pallipadi <[EMAIL PROTECTED]>
    Signed-off-by: Len Brown <[EMAIL PROTECTED]>
 drivers/acpi/processor_idle.c |   10 ++++++----
 1 files changed, 6 insertions(+), 4 deletions(-)

diff --git a/drivers/acpi/processor_idle.c b/drivers/acpi/processor_idle.c
index ee5759b..80ffc78 100644
--- a/drivers/acpi/processor_idle.c
+++ b/drivers/acpi/processor_idle.c
@@ -332,16 +332,18 @@ static void acpi_processor_idle(void)
        int sleep_ticks = 0;
        u32 t1, t2 = 0;
-       pr = processors[smp_processor_id()];
-       if (!pr)
-               return;
         * Interrupts must be disabled during bus mastering calculations and
         * for C2/C3 transitions.
+       pr = processors[smp_processor_id()];
+       if (!pr) {
+               local_irq_enable();
+               return;
+       }
         * Check whether we truly need to go idle, or should
         * reschedule:
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