linux/include/acpi
Lv Zheng 7c43312af8 ACPICA: Events: Cleanup GPE dispatcher type obtaining code
ACPICA commit 7926d5ca9452c87f866938dcea8f12e1efb58f89

There is an issue in acpi_install_gpe_handler() and acpi_remove_gpe_handler().
The code to obtain the GPE dispatcher type from the Handler->original_flags
is wrong:
    if (((Handler->original_flags & ACPI_GPE_DISPATCH_METHOD) ||
         (Handler->original_flags & ACPI_GPE_DISPATCH_NOTIFY)) &&
ACPI_GPE_DISPATCH_NOTIFY is 0x03 and ACPI_GPE_DISPATCH_METHOD is 0x02, thus
this statement is TRUE for the following dispatcher types:
    0x01 (ACPI_GPE_DISPATCH_HANDLER): not expected
    0x02 (ACPI_GPE_DISPATCH_METHOD): expected
    0x03 (ACPI_GPE_DISPATCH_NOTIFY): expected

There is no functional issue due to this because Handler->original_flags is
only set in acpi_install_gpe_handler(), and an earlier checker has excluded
the ACPI_GPE_DISPATCH_HANDLER:
    if ((gpe_event_info->Flags & ACPI_GPE_DISPATCH_MASK) ==
            ACPI_GPE_DISPATCH_HANDLER)
    {
        Status = AE_ALREADY_EXISTS;
        goto free_and_exit;
    }
    ...
    Handler->original_flags = (u8) (gpe_event_info->Flags &
        (ACPI_GPE_XRUPT_TYPE_MASK | ACPI_GPE_DISPATCH_MASK));

We need to clean this up before modifying the GPE dispatcher type values.

In order to prevent such issue from happening in the future, this patch
introduces ACPI_GPE_DISPATCH_TYPE() macro to be used to obtain the GPE
dispatcher types. Lv Zheng.

Link: https://github.com/acpica/acpica/commit/7926d5ca
Signed-off-by: Lv Zheng <lv.zheng@intel.com>
Signed-off-by: David E. Box <david.e.box@linux.intel.com>
Signed-off-by: Bob Moore <robert.moore@intel.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
2015-02-05 15:31:38 +01:00
..
platform Merge branch 'acpi-headers' 2014-07-27 23:52:05 +02:00
acbuffer.h ACPICA: iASL: Add support for to_PLD macro. 2014-11-28 00:00:52 +01:00
acconfig.h ACPICA: Disassembler: Add support for the ToUUID opererator (macro). 2014-07-31 00:50:22 +02:00
acexcep.h ACPICA: Revert "Headers: Deploy #pragma pack (push) and (pop)." 2014-03-18 01:53:45 +01:00
acnames.h ACPICA: Add string for _DDN method name. 2014-10-21 00:39:39 +02:00
acoutput.h ACPICA: Revert "Headers: Deploy #pragma pack (push) and (pop)." 2014-03-18 01:53:45 +01:00
acpi_bus.h Merge branches 'acpi-scan', 'acpi-utils' and 'acpi-pm' 2014-12-18 18:42:56 +01:00
acpi_drivers.h ACPI / PCI: Stub out pci_acpi_crs_quirks() and make it x86 specific 2014-05-07 01:09:47 +02:00
acpi_io.h ACPI: Clean up acpi_os_map/unmap_memory() to eliminate __iomem. 2014-05-27 18:13:08 +02:00
acpi_numa.h ACPI / numa: Make __acpi_map_pxm_to_node(), acpi_get_pxm() static 2014-02-03 10:39:38 -07:00
acpi.h ACPICA: Linux headers: Add <acpi/platform/aclinuxex.h> 2014-05-27 18:13:07 +02:00
acpiosxf.h ACPICA: OSL: Add portable file IO to improve portability 2014-07-08 14:22:25 +02:00
acpixf.h ACPI: Introduce acpi_unload_parent_table() usages in Linux kernel 2015-01-26 16:08:49 +01:00
acrestyp.h ACPICA: Resources: Provide common part for struct acpi_resource_address structures. 2015-01-26 16:09:56 +01:00
actbl1.h ACPICA: ACPI 5.1/Disassembler: Add GICC affinity subtable to SRAT table. 2014-09-03 01:17:41 +02:00
actbl2.h ACPICA: Tables: Update for DMAR table changes. 2014-07-31 00:50:23 +02:00
actbl3.h ACPICA: Headers: Add GTDT flag definitions for the timer subtable. 2014-09-03 01:17:42 +02:00
actbl.h ACPICA/ARM: ACPI 5.1: Update for FADT changes. 2014-07-31 00:50:24 +02:00
actypes.h ACPICA: Events: Cleanup GPE dispatcher type obtaining code 2015-02-05 15:31:38 +01:00
apei.h acpi, apei, ghes: Factor out ioremap virtual memory for IRQ and NMI context. 2014-07-22 15:05:06 -07:00
button.h
ghes.h ACPICA: Restore error table definitions to reduce code differences between Linux and ACPICA upstream. 2014-06-16 22:33:50 +02:00
hed.h
pdc_intel.h
processor.h ACPI / processor: Convert apic_id to phys_id to make it arch agnostic 2015-01-05 23:32:42 +01:00
reboot.h
video.h ACPI / i915: ignore firmware requests for backlight change 2014-07-07 23:38:05 +02:00