• Rafael J. Wysocki's avatar
    ACPI / scan: No implicit wake notification for buttons · bd9b2f9a
    Rafael J. Wysocki authored
    The ACPI device enumeration code in Linux assumes that buttons always
    are wakeup devices, so it calls acpi_setup_gpe_for_wake() for them
    which leads to undesirable side effects.  Namely, that function sets
    up implicit device wake notification mechanism for a given GPE if
    there is no handler method in the ACPI namespace, which from the
    ACPICA's perspective means that there always is a way to handle
    that GPE if enabled.  However, we don't handle wake notify events
    for buttons, so if there are no handler methods for their GPEs in
    the namespace, enabling a button GPE at run time leads to a GPE
    storm in some cases (the GPE triggers, ACPICA carries out the
    implicit wake notification for it which isn't handled, so the
    GPE triggers again and so on).
    
    To prevent that from happening use acpi_mark_gpe_for_wake()
    instead of acpi_setup_gpe_for_wake() for buttons which will cause
    ACPICA to only enable button GPEs if there are handler methods for
    the in the namespace.
    Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
    bd9b2f9a
scan.c 58.7 KB