• Rafael J. Wysocki's avatar
    ACPI / ACPICA: Avoid writing full enable masks to GPE registers · c9a8bbb7
    Rafael J. Wysocki authored
    ACPICA uses acpi_hw_write_gpe_enable_reg() to re-enable a GPE after
    an event signaled by it has been handled.  However, this function
    writes the entire GPE enable mask to the GPE's enable register which
    may not be correct.  Namely, if one of the other GPEs in the same
    register was previously enabled by acpi_enable_gpe() and subsequently
    disabled using acpi_set_gpe(), acpi_hw_write_gpe_enable_reg() will
    re-enable it along with the target GPE.
    
    To fix this issue rework acpi_hw_write_gpe_enable_reg() so that it
    calls acpi_hw_low_set_gpe() with a special action value,
    ACPI_GPE_COND_ENABLE, that will make it only enable the GPE if the
    corresponding bit in its register's enable_for_run mask is set.
    Signed-off-by: default avatarRafael J. Wysocki <rjw@sisk.pl>
    Signed-off-by: default avatarLen Brown <len.brown@intel.com>
    c9a8bbb7
hwgpe.c 13.6 KB