mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-01-17 18:36:00 +00:00
ACPICA: Events: Update GPE handler removal, match behavior of handler install.
The originally_enabled check is not paired between acpi_install_gpe_handler() and acpi_remove_gpe_handler(). In ACPICA upstream, there is code to protect original enabled state for ACPI_GPE_DISPATCH_NOTIFY and this commit fixes an issue for this feature. Link: https://github.com/acpica/acpica/commit/967f314c Signed-off-by: Lv Zheng <lv.zheng@intel.com> Signed-off-by: Bob Moore <robert.moore@intel.com> Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
This commit is contained in:
parent
437b75123c
commit
1809919a30
@ -793,8 +793,9 @@ acpi_install_gpe_handler(acpi_handle gpe_device,
|
|||||||
* automatically during initialization, in which case it has to be
|
* automatically during initialization, in which case it has to be
|
||||||
* disabled now to avoid spurious execution of the handler.
|
* disabled now to avoid spurious execution of the handler.
|
||||||
*/
|
*/
|
||||||
if ((handler->original_flags & ACPI_GPE_DISPATCH_METHOD)
|
if (((handler->original_flags & ACPI_GPE_DISPATCH_METHOD) ||
|
||||||
&& gpe_event_info->runtime_count) {
|
(handler->original_flags & ACPI_GPE_DISPATCH_NOTIFY)) &&
|
||||||
|
gpe_event_info->runtime_count) {
|
||||||
handler->originally_enabled = TRUE;
|
handler->originally_enabled = TRUE;
|
||||||
(void)acpi_ev_remove_gpe_reference(gpe_event_info);
|
(void)acpi_ev_remove_gpe_reference(gpe_event_info);
|
||||||
|
|
||||||
@ -908,7 +909,8 @@ acpi_remove_gpe_handler(acpi_handle gpe_device,
|
|||||||
* enabled, it should be enabled at this point to restore the
|
* enabled, it should be enabled at this point to restore the
|
||||||
* post-initialization configuration.
|
* post-initialization configuration.
|
||||||
*/
|
*/
|
||||||
if ((handler->original_flags & ACPI_GPE_DISPATCH_METHOD) &&
|
if (((handler->original_flags & ACPI_GPE_DISPATCH_METHOD) ||
|
||||||
|
(handler->original_flags & ACPI_GPE_DISPATCH_NOTIFY)) &&
|
||||||
handler->originally_enabled) {
|
handler->originally_enabled) {
|
||||||
(void)acpi_ev_add_gpe_reference(gpe_event_info);
|
(void)acpi_ev_add_gpe_reference(gpe_event_info);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user