diff options
author | Alexey Starikovskiy <astarikovskiy@suse.de> | 2008-10-25 13:48:46 -0400 |
---|---|---|
committer | Len Brown <len.brown@intel.com> | 2008-11-11 18:35:42 -0500 |
commit | 0b7084ac67fb84f0cf2f8bc02d7e0dea8521dd2d (patch) | |
tree | 0a619ac7a700543e6ba69aa5a568e5678ec0603d /drivers/acpi/system.c | |
parent | a2f93aeadf97e870ff385030633a73e21146815d (diff) |
ACPICA: Use spinlock for acpi_{en|dis}able_gpe
Disabling gpe might interfere with gpe detection/handling,
thus producing "interrupt not handled" errors.
Ironically, disabling of GPE from interrupt context is already
under spinlock, so only userspace needs to start using it.
Signed-off-by: Alexey Starikovskiy <astarikovskiy@suse.de>
Signed-off-by: Len Brown <len.brown@intel.com>
Diffstat (limited to 'drivers/acpi/system.c')
-rw-r--r-- | drivers/acpi/system.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/acpi/system.c b/drivers/acpi/system.c index 1d74171b7940..11995b612ad7 100644 --- a/drivers/acpi/system.c +++ b/drivers/acpi/system.c | |||
@@ -394,10 +394,10 @@ static ssize_t counter_set(struct kobject *kobj, | |||
394 | if (index < num_gpes) { | 394 | if (index < num_gpes) { |
395 | if (!strcmp(buf, "disable\n") && | 395 | if (!strcmp(buf, "disable\n") && |
396 | (status & ACPI_EVENT_FLAG_ENABLED)) | 396 | (status & ACPI_EVENT_FLAG_ENABLED)) |
397 | result = acpi_disable_gpe(handle, index, ACPI_NOT_ISR); | 397 | result = acpi_disable_gpe(handle, index); |
398 | else if (!strcmp(buf, "enable\n") && | 398 | else if (!strcmp(buf, "enable\n") && |
399 | !(status & ACPI_EVENT_FLAG_ENABLED)) | 399 | !(status & ACPI_EVENT_FLAG_ENABLED)) |
400 | result = acpi_enable_gpe(handle, index, ACPI_NOT_ISR); | 400 | result = acpi_enable_gpe(handle, index); |
401 | else if (!strcmp(buf, "clear\n") && | 401 | else if (!strcmp(buf, "clear\n") && |
402 | (status & ACPI_EVENT_FLAG_SET)) | 402 | (status & ACPI_EVENT_FLAG_SET)) |
403 | result = acpi_clear_gpe(handle, index, ACPI_NOT_ISR); | 403 | result = acpi_clear_gpe(handle, index, ACPI_NOT_ISR); |