diff options
author | Bob Moore <robert.moore@intel.com> | 2007-02-02 11:48:22 -0500 |
---|---|---|
committer | Len Brown <len.brown@intel.com> | 2007-02-02 21:14:29 -0500 |
commit | 8876016bb384044a59c1e2ddcad4cf41b06344b9 (patch) | |
tree | 0cd22c4f7f996603522c30fdf8ca7eca27a39647 /drivers/acpi | |
parent | a6823e12ca3f79a8c0f8b2d14976ab2152d117e5 (diff) |
ACPICA: Remove global lock handler on AcpiTerminate.
Added AcpiEvRemoveGlobalLockHandler
Signed-off-by: Alexey Starikovskiy <alexey.y.starikovskiy@intel.com>
Signed-off-by: Len Brown <len.brown@intel.com>
Diffstat (limited to 'drivers/acpi')
-rw-r--r-- | drivers/acpi/events/evmisc.c | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/drivers/acpi/events/evmisc.c b/drivers/acpi/events/evmisc.c index 545f934d7817..db16300434eb 100644 --- a/drivers/acpi/events/evmisc.c +++ b/drivers/acpi/events/evmisc.c | |||
@@ -73,6 +73,8 @@ static void ACPI_SYSTEM_XFACE acpi_ev_notify_dispatch(void *context); | |||
73 | 73 | ||
74 | static u32 acpi_ev_global_lock_handler(void *context); | 74 | static u32 acpi_ev_global_lock_handler(void *context); |
75 | 75 | ||
76 | static acpi_status acpi_ev_remove_global_lock_handler(void); | ||
77 | |||
76 | /******************************************************************************* | 78 | /******************************************************************************* |
77 | * | 79 | * |
78 | * FUNCTION: acpi_ev_is_notify_object | 80 | * FUNCTION: acpi_ev_is_notify_object |
@@ -376,6 +378,31 @@ acpi_status acpi_ev_init_global_lock_handler(void) | |||
376 | return_ACPI_STATUS(status); | 378 | return_ACPI_STATUS(status); |
377 | } | 379 | } |
378 | 380 | ||
381 | /******************************************************************************* | ||
382 | * | ||
383 | * FUNCTION: acpi_ev_remove_global_lock_handler | ||
384 | * | ||
385 | * PARAMETERS: None | ||
386 | * | ||
387 | * RETURN: Status | ||
388 | * | ||
389 | * DESCRIPTION: Remove the handler for the Global Lock | ||
390 | * | ||
391 | ******************************************************************************/ | ||
392 | |||
393 | static acpi_status acpi_ev_remove_global_lock_handler(void) | ||
394 | { | ||
395 | acpi_status status; | ||
396 | |||
397 | ACPI_FUNCTION_TRACE(ev_remove_global_lock_handler); | ||
398 | |||
399 | acpi_gbl_global_lock_present = FALSE; | ||
400 | status = acpi_remove_fixed_event_handler(ACPI_EVENT_GLOBAL, | ||
401 | acpi_ev_global_lock_handler); | ||
402 | |||
403 | return_ACPI_STATUS(status); | ||
404 | } | ||
405 | |||
379 | /****************************************************************************** | 406 | /****************************************************************************** |
380 | * | 407 | * |
381 | * FUNCTION: acpi_ev_acquire_global_lock | 408 | * FUNCTION: acpi_ev_acquire_global_lock |
@@ -554,6 +581,12 @@ void acpi_ev_terminate(void) | |||
554 | if (ACPI_FAILURE(status)) { | 581 | if (ACPI_FAILURE(status)) { |
555 | ACPI_ERROR((AE_INFO, "Could not remove SCI handler")); | 582 | ACPI_ERROR((AE_INFO, "Could not remove SCI handler")); |
556 | } | 583 | } |
584 | |||
585 | status = acpi_ev_remove_global_lock_handler(); | ||
586 | if (ACPI_FAILURE(status)) { | ||
587 | ACPI_ERROR((AE_INFO, | ||
588 | "Could not remove Global Lock handler")); | ||
589 | } | ||
557 | } | 590 | } |
558 | 591 | ||
559 | /* Deallocate all handler objects installed within GPE info structs */ | 592 | /* Deallocate all handler objects installed within GPE info structs */ |