diff options
Diffstat (limited to 'drivers/acpi/events')
-rw-r--r-- | drivers/acpi/events/evgpe.c | 5 | ||||
-rw-r--r-- | drivers/acpi/events/evgpeblk.c | 63 | ||||
-rw-r--r-- | drivers/acpi/events/evmisc.c | 7 | ||||
-rw-r--r-- | drivers/acpi/events/evrgnini.c | 10 | ||||
-rw-r--r-- | drivers/acpi/events/evxface.c | 10 | ||||
-rw-r--r-- | drivers/acpi/events/evxfevnt.c | 6 |
6 files changed, 57 insertions, 44 deletions
diff --git a/drivers/acpi/events/evgpe.c b/drivers/acpi/events/evgpe.c index 081120b109ba..ede834df4f69 100644 --- a/drivers/acpi/events/evgpe.c +++ b/drivers/acpi/events/evgpe.c | |||
@@ -396,6 +396,7 @@ acpi_ev_gpe_detect ( | |||
396 | struct acpi_gpe_register_info *gpe_register_info; | 396 | struct acpi_gpe_register_info *gpe_register_info; |
397 | u32 status_reg; | 397 | u32 status_reg; |
398 | u32 enable_reg; | 398 | u32 enable_reg; |
399 | u32 flags; | ||
399 | acpi_status status; | 400 | acpi_status status; |
400 | struct acpi_gpe_block_info *gpe_block; | 401 | struct acpi_gpe_block_info *gpe_block; |
401 | acpi_native_uint i; | 402 | acpi_native_uint i; |
@@ -412,7 +413,7 @@ acpi_ev_gpe_detect ( | |||
412 | 413 | ||
413 | /* Examine all GPE blocks attached to this interrupt level */ | 414 | /* Examine all GPE blocks attached to this interrupt level */ |
414 | 415 | ||
415 | acpi_os_acquire_lock (acpi_gbl_gpe_lock, ACPI_ISR); | 416 | flags = acpi_os_acquire_lock (acpi_gbl_gpe_lock); |
416 | gpe_block = gpe_xrupt_list->gpe_block_list_head; | 417 | gpe_block = gpe_xrupt_list->gpe_block_list_head; |
417 | while (gpe_block) { | 418 | while (gpe_block) { |
418 | /* | 419 | /* |
@@ -476,7 +477,7 @@ acpi_ev_gpe_detect ( | |||
476 | 477 | ||
477 | unlock_and_exit: | 478 | unlock_and_exit: |
478 | 479 | ||
479 | acpi_os_release_lock (acpi_gbl_gpe_lock, ACPI_ISR); | 480 | acpi_os_release_lock (acpi_gbl_gpe_lock, flags); |
480 | return (int_status); | 481 | return (int_status); |
481 | } | 482 | } |
482 | 483 | ||
diff --git a/drivers/acpi/events/evgpeblk.c b/drivers/acpi/events/evgpeblk.c index 84186a7d17b2..dfc54692b127 100644 --- a/drivers/acpi/events/evgpeblk.c +++ b/drivers/acpi/events/evgpeblk.c | |||
@@ -66,7 +66,7 @@ acpi_ev_match_prw_and_gpe ( | |||
66 | 66 | ||
67 | static struct acpi_gpe_xrupt_info * | 67 | static struct acpi_gpe_xrupt_info * |
68 | acpi_ev_get_gpe_xrupt_block ( | 68 | acpi_ev_get_gpe_xrupt_block ( |
69 | u32 interrupt_level); | 69 | u32 interrupt_number); |
70 | 70 | ||
71 | static acpi_status | 71 | static acpi_status |
72 | acpi_ev_delete_gpe_xrupt ( | 72 | acpi_ev_delete_gpe_xrupt ( |
@@ -75,7 +75,7 @@ acpi_ev_delete_gpe_xrupt ( | |||
75 | static acpi_status | 75 | static acpi_status |
76 | acpi_ev_install_gpe_block ( | 76 | acpi_ev_install_gpe_block ( |
77 | struct acpi_gpe_block_info *gpe_block, | 77 | struct acpi_gpe_block_info *gpe_block, |
78 | u32 interrupt_level); | 78 | u32 interrupt_number); |
79 | 79 | ||
80 | static acpi_status | 80 | static acpi_status |
81 | acpi_ev_create_gpe_info_blocks ( | 81 | acpi_ev_create_gpe_info_blocks ( |
@@ -138,7 +138,6 @@ acpi_ev_valid_gpe_event ( | |||
138 | * FUNCTION: acpi_ev_walk_gpe_list | 138 | * FUNCTION: acpi_ev_walk_gpe_list |
139 | * | 139 | * |
140 | * PARAMETERS: gpe_walk_callback - Routine called for each GPE block | 140 | * PARAMETERS: gpe_walk_callback - Routine called for each GPE block |
141 | * Flags - ACPI_NOT_ISR or ACPI_ISR | ||
142 | * | 141 | * |
143 | * RETURN: Status | 142 | * RETURN: Status |
144 | * | 143 | * |
@@ -148,18 +147,18 @@ acpi_ev_valid_gpe_event ( | |||
148 | 147 | ||
149 | acpi_status | 148 | acpi_status |
150 | acpi_ev_walk_gpe_list ( | 149 | acpi_ev_walk_gpe_list ( |
151 | ACPI_GPE_CALLBACK gpe_walk_callback, | 150 | ACPI_GPE_CALLBACK gpe_walk_callback) |
152 | u32 flags) | ||
153 | { | 151 | { |
154 | struct acpi_gpe_block_info *gpe_block; | 152 | struct acpi_gpe_block_info *gpe_block; |
155 | struct acpi_gpe_xrupt_info *gpe_xrupt_info; | 153 | struct acpi_gpe_xrupt_info *gpe_xrupt_info; |
156 | acpi_status status = AE_OK; | 154 | acpi_status status = AE_OK; |
155 | u32 flags; | ||
157 | 156 | ||
158 | 157 | ||
159 | ACPI_FUNCTION_TRACE ("ev_walk_gpe_list"); | 158 | ACPI_FUNCTION_TRACE ("ev_walk_gpe_list"); |
160 | 159 | ||
161 | 160 | ||
162 | acpi_os_acquire_lock (acpi_gbl_gpe_lock, flags); | 161 | flags = acpi_os_acquire_lock (acpi_gbl_gpe_lock); |
163 | 162 | ||
164 | /* Walk the interrupt level descriptor list */ | 163 | /* Walk the interrupt level descriptor list */ |
165 | 164 | ||
@@ -482,7 +481,7 @@ cleanup: | |||
482 | * | 481 | * |
483 | * FUNCTION: acpi_ev_get_gpe_xrupt_block | 482 | * FUNCTION: acpi_ev_get_gpe_xrupt_block |
484 | * | 483 | * |
485 | * PARAMETERS: interrupt_level - Interrupt for a GPE block | 484 | * PARAMETERS: interrupt_number - Interrupt for a GPE block |
486 | * | 485 | * |
487 | * RETURN: A GPE interrupt block | 486 | * RETURN: A GPE interrupt block |
488 | * | 487 | * |
@@ -495,11 +494,12 @@ cleanup: | |||
495 | 494 | ||
496 | static struct acpi_gpe_xrupt_info * | 495 | static struct acpi_gpe_xrupt_info * |
497 | acpi_ev_get_gpe_xrupt_block ( | 496 | acpi_ev_get_gpe_xrupt_block ( |
498 | u32 interrupt_level) | 497 | u32 interrupt_number) |
499 | { | 498 | { |
500 | struct acpi_gpe_xrupt_info *next_gpe_xrupt; | 499 | struct acpi_gpe_xrupt_info *next_gpe_xrupt; |
501 | struct acpi_gpe_xrupt_info *gpe_xrupt; | 500 | struct acpi_gpe_xrupt_info *gpe_xrupt; |
502 | acpi_status status; | 501 | acpi_status status; |
502 | u32 flags; | ||
503 | 503 | ||
504 | 504 | ||
505 | ACPI_FUNCTION_TRACE ("ev_get_gpe_xrupt_block"); | 505 | ACPI_FUNCTION_TRACE ("ev_get_gpe_xrupt_block"); |
@@ -509,7 +509,7 @@ acpi_ev_get_gpe_xrupt_block ( | |||
509 | 509 | ||
510 | next_gpe_xrupt = acpi_gbl_gpe_xrupt_list_head; | 510 | next_gpe_xrupt = acpi_gbl_gpe_xrupt_list_head; |
511 | while (next_gpe_xrupt) { | 511 | while (next_gpe_xrupt) { |
512 | if (next_gpe_xrupt->interrupt_level == interrupt_level) { | 512 | if (next_gpe_xrupt->interrupt_number == interrupt_number) { |
513 | return_PTR (next_gpe_xrupt); | 513 | return_PTR (next_gpe_xrupt); |
514 | } | 514 | } |
515 | 515 | ||
@@ -523,11 +523,11 @@ acpi_ev_get_gpe_xrupt_block ( | |||
523 | return_PTR (NULL); | 523 | return_PTR (NULL); |
524 | } | 524 | } |
525 | 525 | ||
526 | gpe_xrupt->interrupt_level = interrupt_level; | 526 | gpe_xrupt->interrupt_number = interrupt_number; |
527 | 527 | ||
528 | /* Install new interrupt descriptor with spin lock */ | 528 | /* Install new interrupt descriptor with spin lock */ |
529 | 529 | ||
530 | acpi_os_acquire_lock (acpi_gbl_gpe_lock, ACPI_NOT_ISR); | 530 | flags = acpi_os_acquire_lock (acpi_gbl_gpe_lock); |
531 | if (acpi_gbl_gpe_xrupt_list_head) { | 531 | if (acpi_gbl_gpe_xrupt_list_head) { |
532 | next_gpe_xrupt = acpi_gbl_gpe_xrupt_list_head; | 532 | next_gpe_xrupt = acpi_gbl_gpe_xrupt_list_head; |
533 | while (next_gpe_xrupt->next) { | 533 | while (next_gpe_xrupt->next) { |
@@ -540,17 +540,17 @@ acpi_ev_get_gpe_xrupt_block ( | |||
540 | else { | 540 | else { |
541 | acpi_gbl_gpe_xrupt_list_head = gpe_xrupt; | 541 | acpi_gbl_gpe_xrupt_list_head = gpe_xrupt; |
542 | } | 542 | } |
543 | acpi_os_release_lock (acpi_gbl_gpe_lock, ACPI_NOT_ISR); | 543 | acpi_os_release_lock (acpi_gbl_gpe_lock, flags); |
544 | 544 | ||
545 | /* Install new interrupt handler if not SCI_INT */ | 545 | /* Install new interrupt handler if not SCI_INT */ |
546 | 546 | ||
547 | if (interrupt_level != acpi_gbl_FADT->sci_int) { | 547 | if (interrupt_number != acpi_gbl_FADT->sci_int) { |
548 | status = acpi_os_install_interrupt_handler (interrupt_level, | 548 | status = acpi_os_install_interrupt_handler (interrupt_number, |
549 | acpi_ev_gpe_xrupt_handler, gpe_xrupt); | 549 | acpi_ev_gpe_xrupt_handler, gpe_xrupt); |
550 | if (ACPI_FAILURE (status)) { | 550 | if (ACPI_FAILURE (status)) { |
551 | ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, | 551 | ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, |
552 | "Could not install GPE interrupt handler at level 0x%X\n", | 552 | "Could not install GPE interrupt handler at level 0x%X\n", |
553 | interrupt_level)); | 553 | interrupt_number)); |
554 | return_PTR (NULL); | 554 | return_PTR (NULL); |
555 | } | 555 | } |
556 | } | 556 | } |
@@ -577,6 +577,7 @@ acpi_ev_delete_gpe_xrupt ( | |||
577 | struct acpi_gpe_xrupt_info *gpe_xrupt) | 577 | struct acpi_gpe_xrupt_info *gpe_xrupt) |
578 | { | 578 | { |
579 | acpi_status status; | 579 | acpi_status status; |
580 | u32 flags; | ||
580 | 581 | ||
581 | 582 | ||
582 | ACPI_FUNCTION_TRACE ("ev_delete_gpe_xrupt"); | 583 | ACPI_FUNCTION_TRACE ("ev_delete_gpe_xrupt"); |
@@ -584,14 +585,14 @@ acpi_ev_delete_gpe_xrupt ( | |||
584 | 585 | ||
585 | /* We never want to remove the SCI interrupt handler */ | 586 | /* We never want to remove the SCI interrupt handler */ |
586 | 587 | ||
587 | if (gpe_xrupt->interrupt_level == acpi_gbl_FADT->sci_int) { | 588 | if (gpe_xrupt->interrupt_number == acpi_gbl_FADT->sci_int) { |
588 | gpe_xrupt->gpe_block_list_head = NULL; | 589 | gpe_xrupt->gpe_block_list_head = NULL; |
589 | return_ACPI_STATUS (AE_OK); | 590 | return_ACPI_STATUS (AE_OK); |
590 | } | 591 | } |
591 | 592 | ||
592 | /* Disable this interrupt */ | 593 | /* Disable this interrupt */ |
593 | 594 | ||
594 | status = acpi_os_remove_interrupt_handler (gpe_xrupt->interrupt_level, | 595 | status = acpi_os_remove_interrupt_handler (gpe_xrupt->interrupt_number, |
595 | acpi_ev_gpe_xrupt_handler); | 596 | acpi_ev_gpe_xrupt_handler); |
596 | if (ACPI_FAILURE (status)) { | 597 | if (ACPI_FAILURE (status)) { |
597 | return_ACPI_STATUS (status); | 598 | return_ACPI_STATUS (status); |
@@ -599,7 +600,7 @@ acpi_ev_delete_gpe_xrupt ( | |||
599 | 600 | ||
600 | /* Unlink the interrupt block with lock */ | 601 | /* Unlink the interrupt block with lock */ |
601 | 602 | ||
602 | acpi_os_acquire_lock (acpi_gbl_gpe_lock, ACPI_NOT_ISR); | 603 | flags = acpi_os_acquire_lock (acpi_gbl_gpe_lock); |
603 | if (gpe_xrupt->previous) { | 604 | if (gpe_xrupt->previous) { |
604 | gpe_xrupt->previous->next = gpe_xrupt->next; | 605 | gpe_xrupt->previous->next = gpe_xrupt->next; |
605 | } | 606 | } |
@@ -607,7 +608,7 @@ acpi_ev_delete_gpe_xrupt ( | |||
607 | if (gpe_xrupt->next) { | 608 | if (gpe_xrupt->next) { |
608 | gpe_xrupt->next->previous = gpe_xrupt->previous; | 609 | gpe_xrupt->next->previous = gpe_xrupt->previous; |
609 | } | 610 | } |
610 | acpi_os_release_lock (acpi_gbl_gpe_lock, ACPI_NOT_ISR); | 611 | acpi_os_release_lock (acpi_gbl_gpe_lock, flags); |
611 | 612 | ||
612 | /* Free the block */ | 613 | /* Free the block */ |
613 | 614 | ||
@@ -621,7 +622,7 @@ acpi_ev_delete_gpe_xrupt ( | |||
621 | * FUNCTION: acpi_ev_install_gpe_block | 622 | * FUNCTION: acpi_ev_install_gpe_block |
622 | * | 623 | * |
623 | * PARAMETERS: gpe_block - New GPE block | 624 | * PARAMETERS: gpe_block - New GPE block |
624 | * interrupt_level - Level to be associated with this GPE block | 625 | * interrupt_number - Xrupt to be associated with this GPE block |
625 | * | 626 | * |
626 | * RETURN: Status | 627 | * RETURN: Status |
627 | * | 628 | * |
@@ -632,11 +633,12 @@ acpi_ev_delete_gpe_xrupt ( | |||
632 | static acpi_status | 633 | static acpi_status |
633 | acpi_ev_install_gpe_block ( | 634 | acpi_ev_install_gpe_block ( |
634 | struct acpi_gpe_block_info *gpe_block, | 635 | struct acpi_gpe_block_info *gpe_block, |
635 | u32 interrupt_level) | 636 | u32 interrupt_number) |
636 | { | 637 | { |
637 | struct acpi_gpe_block_info *next_gpe_block; | 638 | struct acpi_gpe_block_info *next_gpe_block; |
638 | struct acpi_gpe_xrupt_info *gpe_xrupt_block; | 639 | struct acpi_gpe_xrupt_info *gpe_xrupt_block; |
639 | acpi_status status; | 640 | acpi_status status; |
641 | u32 flags; | ||
640 | 642 | ||
641 | 643 | ||
642 | ACPI_FUNCTION_TRACE ("ev_install_gpe_block"); | 644 | ACPI_FUNCTION_TRACE ("ev_install_gpe_block"); |
@@ -647,7 +649,7 @@ acpi_ev_install_gpe_block ( | |||
647 | return_ACPI_STATUS (status); | 649 | return_ACPI_STATUS (status); |
648 | } | 650 | } |
649 | 651 | ||
650 | gpe_xrupt_block = acpi_ev_get_gpe_xrupt_block (interrupt_level); | 652 | gpe_xrupt_block = acpi_ev_get_gpe_xrupt_block (interrupt_number); |
651 | if (!gpe_xrupt_block) { | 653 | if (!gpe_xrupt_block) { |
652 | status = AE_NO_MEMORY; | 654 | status = AE_NO_MEMORY; |
653 | goto unlock_and_exit; | 655 | goto unlock_and_exit; |
@@ -655,7 +657,7 @@ acpi_ev_install_gpe_block ( | |||
655 | 657 | ||
656 | /* Install the new block at the end of the list with lock */ | 658 | /* Install the new block at the end of the list with lock */ |
657 | 659 | ||
658 | acpi_os_acquire_lock (acpi_gbl_gpe_lock, ACPI_NOT_ISR); | 660 | flags = acpi_os_acquire_lock (acpi_gbl_gpe_lock); |
659 | if (gpe_xrupt_block->gpe_block_list_head) { | 661 | if (gpe_xrupt_block->gpe_block_list_head) { |
660 | next_gpe_block = gpe_xrupt_block->gpe_block_list_head; | 662 | next_gpe_block = gpe_xrupt_block->gpe_block_list_head; |
661 | while (next_gpe_block->next) { | 663 | while (next_gpe_block->next) { |
@@ -670,7 +672,7 @@ acpi_ev_install_gpe_block ( | |||
670 | } | 672 | } |
671 | 673 | ||
672 | gpe_block->xrupt_block = gpe_xrupt_block; | 674 | gpe_block->xrupt_block = gpe_xrupt_block; |
673 | acpi_os_release_lock (acpi_gbl_gpe_lock, ACPI_NOT_ISR); | 675 | acpi_os_release_lock (acpi_gbl_gpe_lock, flags); |
674 | 676 | ||
675 | unlock_and_exit: | 677 | unlock_and_exit: |
676 | status = acpi_ut_release_mutex (ACPI_MTX_EVENTS); | 678 | status = acpi_ut_release_mutex (ACPI_MTX_EVENTS); |
@@ -695,6 +697,7 @@ acpi_ev_delete_gpe_block ( | |||
695 | struct acpi_gpe_block_info *gpe_block) | 697 | struct acpi_gpe_block_info *gpe_block) |
696 | { | 698 | { |
697 | acpi_status status; | 699 | acpi_status status; |
700 | u32 flags; | ||
698 | 701 | ||
699 | 702 | ||
700 | ACPI_FUNCTION_TRACE ("ev_install_gpe_block"); | 703 | ACPI_FUNCTION_TRACE ("ev_install_gpe_block"); |
@@ -720,7 +723,7 @@ acpi_ev_delete_gpe_block ( | |||
720 | else { | 723 | else { |
721 | /* Remove the block on this interrupt with lock */ | 724 | /* Remove the block on this interrupt with lock */ |
722 | 725 | ||
723 | acpi_os_acquire_lock (acpi_gbl_gpe_lock, ACPI_NOT_ISR); | 726 | flags = acpi_os_acquire_lock (acpi_gbl_gpe_lock); |
724 | if (gpe_block->previous) { | 727 | if (gpe_block->previous) { |
725 | gpe_block->previous->next = gpe_block->next; | 728 | gpe_block->previous->next = gpe_block->next; |
726 | } | 729 | } |
@@ -731,7 +734,7 @@ acpi_ev_delete_gpe_block ( | |||
731 | if (gpe_block->next) { | 734 | if (gpe_block->next) { |
732 | gpe_block->next->previous = gpe_block->previous; | 735 | gpe_block->next->previous = gpe_block->previous; |
733 | } | 736 | } |
734 | acpi_os_release_lock (acpi_gbl_gpe_lock, ACPI_NOT_ISR); | 737 | acpi_os_release_lock (acpi_gbl_gpe_lock, flags); |
735 | } | 738 | } |
736 | 739 | ||
737 | /* Free the gpe_block */ | 740 | /* Free the gpe_block */ |
@@ -887,7 +890,7 @@ error_exit: | |||
887 | * gpe_block_address - Address and space_iD | 890 | * gpe_block_address - Address and space_iD |
888 | * register_count - Number of GPE register pairs in the block | 891 | * register_count - Number of GPE register pairs in the block |
889 | * gpe_block_base_number - Starting GPE number for the block | 892 | * gpe_block_base_number - Starting GPE number for the block |
890 | * interrupt_level - H/W interrupt for the block | 893 | * interrupt_number - H/W interrupt for the block |
891 | * return_gpe_block - Where the new block descriptor is returned | 894 | * return_gpe_block - Where the new block descriptor is returned |
892 | * | 895 | * |
893 | * RETURN: Status | 896 | * RETURN: Status |
@@ -902,7 +905,7 @@ acpi_ev_create_gpe_block ( | |||
902 | struct acpi_generic_address *gpe_block_address, | 905 | struct acpi_generic_address *gpe_block_address, |
903 | u32 register_count, | 906 | u32 register_count, |
904 | u8 gpe_block_base_number, | 907 | u8 gpe_block_base_number, |
905 | u32 interrupt_level, | 908 | u32 interrupt_number, |
906 | struct acpi_gpe_block_info **return_gpe_block) | 909 | struct acpi_gpe_block_info **return_gpe_block) |
907 | { | 910 | { |
908 | struct acpi_gpe_block_info *gpe_block; | 911 | struct acpi_gpe_block_info *gpe_block; |
@@ -948,7 +951,7 @@ acpi_ev_create_gpe_block ( | |||
948 | 951 | ||
949 | /* Install the new block in the global list(s) */ | 952 | /* Install the new block in the global list(s) */ |
950 | 953 | ||
951 | status = acpi_ev_install_gpe_block (gpe_block, interrupt_level); | 954 | status = acpi_ev_install_gpe_block (gpe_block, interrupt_number); |
952 | if (ACPI_FAILURE (status)) { | 955 | if (ACPI_FAILURE (status)) { |
953 | ACPI_MEM_FREE (gpe_block); | 956 | ACPI_MEM_FREE (gpe_block); |
954 | return_ACPI_STATUS (status); | 957 | return_ACPI_STATUS (status); |
@@ -1013,7 +1016,7 @@ acpi_ev_create_gpe_block ( | |||
1013 | ((gpe_block->register_count * ACPI_GPE_REGISTER_WIDTH) -1)), | 1016 | ((gpe_block->register_count * ACPI_GPE_REGISTER_WIDTH) -1)), |
1014 | gpe_device->name.ascii, | 1017 | gpe_device->name.ascii, |
1015 | gpe_block->register_count, | 1018 | gpe_block->register_count, |
1016 | interrupt_level)); | 1019 | interrupt_number)); |
1017 | 1020 | ||
1018 | /* Enable all valid GPEs found above */ | 1021 | /* Enable all valid GPEs found above */ |
1019 | 1022 | ||
diff --git a/drivers/acpi/events/evmisc.c b/drivers/acpi/events/evmisc.c index 659e90956112..3df3ada4b9e7 100644 --- a/drivers/acpi/events/evmisc.c +++ b/drivers/acpi/events/evmisc.c | |||
@@ -411,6 +411,9 @@ acpi_ev_init_global_lock_handler ( | |||
411 | * with an error. | 411 | * with an error. |
412 | */ | 412 | */ |
413 | if (status == AE_NO_HARDWARE_RESPONSE) { | 413 | if (status == AE_NO_HARDWARE_RESPONSE) { |
414 | ACPI_REPORT_ERROR (( | ||
415 | "No response from Global Lock hardware, disabling lock\n")); | ||
416 | |||
414 | acpi_gbl_global_lock_present = FALSE; | 417 | acpi_gbl_global_lock_present = FALSE; |
415 | status = AE_OK; | 418 | status = AE_OK; |
416 | } | 419 | } |
@@ -589,7 +592,7 @@ acpi_ev_terminate ( | |||
589 | 592 | ||
590 | /* Disable all GPEs in all GPE blocks */ | 593 | /* Disable all GPEs in all GPE blocks */ |
591 | 594 | ||
592 | status = acpi_ev_walk_gpe_list (acpi_hw_disable_gpe_block, ACPI_NOT_ISR); | 595 | status = acpi_ev_walk_gpe_list (acpi_hw_disable_gpe_block); |
593 | 596 | ||
594 | /* Remove SCI handler */ | 597 | /* Remove SCI handler */ |
595 | 598 | ||
@@ -602,7 +605,7 @@ acpi_ev_terminate ( | |||
602 | 605 | ||
603 | /* Deallocate all handler objects installed within GPE info structs */ | 606 | /* Deallocate all handler objects installed within GPE info structs */ |
604 | 607 | ||
605 | status = acpi_ev_walk_gpe_list (acpi_ev_delete_gpe_handlers, ACPI_NOT_ISR); | 608 | status = acpi_ev_walk_gpe_list (acpi_ev_delete_gpe_handlers); |
606 | 609 | ||
607 | /* Return to original mode if necessary */ | 610 | /* Return to original mode if necessary */ |
608 | 611 | ||
diff --git a/drivers/acpi/events/evrgnini.c b/drivers/acpi/events/evrgnini.c index 95bc09c73a6a..f2d53af97610 100644 --- a/drivers/acpi/events/evrgnini.c +++ b/drivers/acpi/events/evrgnini.c | |||
@@ -218,10 +218,14 @@ acpi_ev_pci_config_region_setup ( | |||
218 | while (pci_root_node != acpi_gbl_root_node) { | 218 | while (pci_root_node != acpi_gbl_root_node) { |
219 | status = acpi_ut_execute_HID (pci_root_node, &object_hID); | 219 | status = acpi_ut_execute_HID (pci_root_node, &object_hID); |
220 | if (ACPI_SUCCESS (status)) { | 220 | if (ACPI_SUCCESS (status)) { |
221 | /* Got a valid _HID, check if this is a PCI root */ | 221 | /* |
222 | 222 | * Got a valid _HID string, check if this is a PCI root. | |
223 | * New for ACPI 3.0: check for a PCI Express root also. | ||
224 | */ | ||
223 | if (!(ACPI_STRNCMP (object_hID.value, PCI_ROOT_HID_STRING, | 225 | if (!(ACPI_STRNCMP (object_hID.value, PCI_ROOT_HID_STRING, |
224 | sizeof (PCI_ROOT_HID_STRING)))) { | 226 | sizeof (PCI_ROOT_HID_STRING)) || |
227 | !(ACPI_STRNCMP (object_hID.value, PCI_EXPRESS_ROOT_HID_STRING, | ||
228 | sizeof (PCI_EXPRESS_ROOT_HID_STRING))))) { | ||
225 | /* Install a handler for this PCI root bridge */ | 229 | /* Install a handler for this PCI root bridge */ |
226 | 230 | ||
227 | status = acpi_install_address_space_handler ((acpi_handle) pci_root_node, | 231 | status = acpi_install_address_space_handler ((acpi_handle) pci_root_node, |
diff --git a/drivers/acpi/events/evxface.c b/drivers/acpi/events/evxface.c index 4092d47f6758..4c1c25e316a8 100644 --- a/drivers/acpi/events/evxface.c +++ b/drivers/acpi/events/evxface.c | |||
@@ -591,6 +591,7 @@ acpi_install_gpe_handler ( | |||
591 | struct acpi_gpe_event_info *gpe_event_info; | 591 | struct acpi_gpe_event_info *gpe_event_info; |
592 | struct acpi_handler_info *handler; | 592 | struct acpi_handler_info *handler; |
593 | acpi_status status; | 593 | acpi_status status; |
594 | u32 flags; | ||
594 | 595 | ||
595 | 596 | ||
596 | ACPI_FUNCTION_TRACE ("acpi_install_gpe_handler"); | 597 | ACPI_FUNCTION_TRACE ("acpi_install_gpe_handler"); |
@@ -643,7 +644,7 @@ acpi_install_gpe_handler ( | |||
643 | 644 | ||
644 | /* Install the handler */ | 645 | /* Install the handler */ |
645 | 646 | ||
646 | acpi_os_acquire_lock (acpi_gbl_gpe_lock, ACPI_NOT_ISR); | 647 | flags = acpi_os_acquire_lock (acpi_gbl_gpe_lock); |
647 | gpe_event_info->dispatch.handler = handler; | 648 | gpe_event_info->dispatch.handler = handler; |
648 | 649 | ||
649 | /* Setup up dispatch flags to indicate handler (vs. method) */ | 650 | /* Setup up dispatch flags to indicate handler (vs. method) */ |
@@ -651,7 +652,7 @@ acpi_install_gpe_handler ( | |||
651 | gpe_event_info->flags &= ~(ACPI_GPE_XRUPT_TYPE_MASK | ACPI_GPE_DISPATCH_MASK); /* Clear bits */ | 652 | gpe_event_info->flags &= ~(ACPI_GPE_XRUPT_TYPE_MASK | ACPI_GPE_DISPATCH_MASK); /* Clear bits */ |
652 | gpe_event_info->flags |= (u8) (type | ACPI_GPE_DISPATCH_HANDLER); | 653 | gpe_event_info->flags |= (u8) (type | ACPI_GPE_DISPATCH_HANDLER); |
653 | 654 | ||
654 | acpi_os_release_lock (acpi_gbl_gpe_lock, ACPI_NOT_ISR); | 655 | acpi_os_release_lock (acpi_gbl_gpe_lock, flags); |
655 | 656 | ||
656 | 657 | ||
657 | unlock_and_exit: | 658 | unlock_and_exit: |
@@ -685,6 +686,7 @@ acpi_remove_gpe_handler ( | |||
685 | struct acpi_gpe_event_info *gpe_event_info; | 686 | struct acpi_gpe_event_info *gpe_event_info; |
686 | struct acpi_handler_info *handler; | 687 | struct acpi_handler_info *handler; |
687 | acpi_status status; | 688 | acpi_status status; |
689 | u32 flags; | ||
688 | 690 | ||
689 | 691 | ||
690 | ACPI_FUNCTION_TRACE ("acpi_remove_gpe_handler"); | 692 | ACPI_FUNCTION_TRACE ("acpi_remove_gpe_handler"); |
@@ -741,7 +743,7 @@ acpi_remove_gpe_handler ( | |||
741 | 743 | ||
742 | /* Remove the handler */ | 744 | /* Remove the handler */ |
743 | 745 | ||
744 | acpi_os_acquire_lock (acpi_gbl_gpe_lock, ACPI_NOT_ISR); | 746 | flags = acpi_os_acquire_lock (acpi_gbl_gpe_lock); |
745 | handler = gpe_event_info->dispatch.handler; | 747 | handler = gpe_event_info->dispatch.handler; |
746 | 748 | ||
747 | /* Restore Method node (if any), set dispatch flags */ | 749 | /* Restore Method node (if any), set dispatch flags */ |
@@ -751,7 +753,7 @@ acpi_remove_gpe_handler ( | |||
751 | if (handler->method_node) { | 753 | if (handler->method_node) { |
752 | gpe_event_info->flags |= ACPI_GPE_DISPATCH_METHOD; | 754 | gpe_event_info->flags |= ACPI_GPE_DISPATCH_METHOD; |
753 | } | 755 | } |
754 | acpi_os_release_lock (acpi_gbl_gpe_lock, ACPI_NOT_ISR); | 756 | acpi_os_release_lock (acpi_gbl_gpe_lock, flags); |
755 | 757 | ||
756 | /* Now we can free the handler object */ | 758 | /* Now we can free the handler object */ |
757 | 759 | ||
diff --git a/drivers/acpi/events/evxfevnt.c b/drivers/acpi/events/evxfevnt.c index f337dc2cc569..c5f74d7b64d8 100644 --- a/drivers/acpi/events/evxfevnt.c +++ b/drivers/acpi/events/evxfevnt.c | |||
@@ -635,7 +635,7 @@ unlock_and_exit: | |||
635 | * PARAMETERS: gpe_device - Handle to the parent GPE Block Device | 635 | * PARAMETERS: gpe_device - Handle to the parent GPE Block Device |
636 | * gpe_block_address - Address and space_iD | 636 | * gpe_block_address - Address and space_iD |
637 | * register_count - Number of GPE register pairs in the block | 637 | * register_count - Number of GPE register pairs in the block |
638 | * interrupt_level - H/W interrupt for the block | 638 | * interrupt_number - H/W interrupt for the block |
639 | * | 639 | * |
640 | * RETURN: Status | 640 | * RETURN: Status |
641 | * | 641 | * |
@@ -648,7 +648,7 @@ acpi_install_gpe_block ( | |||
648 | acpi_handle gpe_device, | 648 | acpi_handle gpe_device, |
649 | struct acpi_generic_address *gpe_block_address, | 649 | struct acpi_generic_address *gpe_block_address, |
650 | u32 register_count, | 650 | u32 register_count, |
651 | u32 interrupt_level) | 651 | u32 interrupt_number) |
652 | { | 652 | { |
653 | acpi_status status; | 653 | acpi_status status; |
654 | union acpi_operand_object *obj_desc; | 654 | union acpi_operand_object *obj_desc; |
@@ -681,7 +681,7 @@ acpi_install_gpe_block ( | |||
681 | * is always zero | 681 | * is always zero |
682 | */ | 682 | */ |
683 | status = acpi_ev_create_gpe_block (node, gpe_block_address, register_count, | 683 | status = acpi_ev_create_gpe_block (node, gpe_block_address, register_count, |
684 | 0, interrupt_level, &gpe_block); | 684 | 0, interrupt_number, &gpe_block); |
685 | if (ACPI_FAILURE (status)) { | 685 | if (ACPI_FAILURE (status)) { |
686 | goto unlock_and_exit; | 686 | goto unlock_and_exit; |
687 | } | 687 | } |