ACPI: SBS: Move SBS HC callback to faster Notify queue
Alexey Starikovskiy [Wed, 30 Dec 2009 12:53:03 +0000 (15:53 +0300)]
SBS transactions should happen in Notify work queue, to not create
a dead lock with GPE execution accessing SBS devices.

Signed-off-by: Alexey Starikovskiy <astarikovskiy@suse.de>
Signed-off-by: Len Brown <len.brown@intel.com>

drivers/acpi/ec.c
drivers/acpi/sbshc.c

index 9cc3885..0473309 100644 (file)
@@ -535,7 +535,8 @@ static int acpi_ec_sync_query(struct acpi_ec *ec)
                                return -ENOMEM;
                        memcpy(copy, handler, sizeof(*copy));
                        pr_debug(PREFIX "push query execution (0x%2x) on queue\n", value);
-                       return acpi_os_execute(OSL_GPE_HANDLER,
+                       return acpi_os_execute((copy->func) ?
+                               OSL_NOTIFY_HANDLER : OSL_GPE_HANDLER,
                                acpi_ec_run, copy);
                }
        }
index d933980..fd09229 100644 (file)
@@ -242,7 +242,7 @@ static int smbus_alarm(void *context)
                case ACPI_SBS_CHARGER:
                case ACPI_SBS_MANAGER:
                case ACPI_SBS_BATTERY:
-                       acpi_os_execute(OSL_GPE_HANDLER,
+                       acpi_os_execute(OSL_NOTIFY_HANDLER,
                                        acpi_smbus_callback, hc);
                default:;
        }