Comment 11 for bug 1205791

Revision history for this message
Michał Kępień (kempniu) wrote :

I know I'm a bit late to the party, but I'm also affected by this bug on Ubuntu 15.04 (kernel 3.19.0-16) and I would very much like to see it resolved, so I tried to push the investigation forward. I'll refer to hotkeys using the numbers from the original post for simplicity.

I believe these hotkeys are not handled using WMI, because no matter what debug options I turned on for WMI-related modules, nothing appeared in the kernel ring buffer after pressing the hotkeys.

In my case pressing hotkey 3 only incremented the ACPI interrupt counter in /proc/interrupts, so I checked where these interrupts were actually coming from by running:

$ watch -n 0.1 grep enabled /sys/firmware/acpi/interrupts/*

This revealed that when I press hotkey 2 or 3, the counter in /sys/firmware/acpi/interrupts/gpe17 is incremented, which means pressing these hotkeys raises GPE 0x17. This in turn causes the _L17 ACPI method to be called. If we look at the DSDT dump, you'll find that method _L17 only calls method NEVT, where some value is retrieved using another method, ECG1, and acted upon accordingly. Thanks to ACPI method customization at runtime (/sys/kernel/debug/acpi/custom_method), I was able to check the return value of the ECG1 method when the hotkeys are pressed. It turns out it is 0x2000 for hotkey 2 and 0x1000 for hotkey 3.

Unfortunately, this is where I got stuck. If you look at the code of the NEVT method again, you'll find that no code branch is executed for ECG1 values of 0x1000 and 0x2000, so NEVT is essentially a no-op for these. I'm hoping some ACPI expert can point us to the right direction from here. The only thing I thought of was writing a custom handler for GPE 0x17 which would evaluate the value of ECG1 and act accordingly, but judging by the amount of acpi_install_gpe_handler() calls in kernel code, I sense this is not the way to go.