[ltp] T61 hotkey_mask changed after resuming from suspend to ram

Jens Rutschmann linux-thinkpad@linux-thinkpad.org
Mon, 23 Jul 2012 23:47:47 +0200

Am 23.07.2012 22:04 schrieb Henrique de Moraes Holschuh:
> On Mon, 23 Jul 2012, Jens Rutschmann wrote:
>> on my T61 with nvidia graphics I'm setting the hotkey_mask to the
>> value of hotkey_recommended_mask during boot (0x008dffff). This
>> enables the system to handle the Fn+F7 hotkey for switching the
>> display output.
>> Once I suspend to ram and resume from it the hotkey_mask is set to a
>> value of 0x0000ffbf which is annoying and dangerous at the same
>> time, as the system completely freezes when the bios tries to handle
>> the request.
>> Is this some bug in the driver, just the way it is, or am I supposed
>> to set the value to the recommended one after each resume?
> Looks like either the T61 firmware is specially broken, or something
> broke thinkpad-acpi.  Which kernel?  Which firmware?

This is a vanilla 3.4.4, firmware is:
ThinkPad BIOS 7LETC7WW (2.27 ), EC 7KHT24WW-1.08

I haven't done bios updates for some time as I use a SSD and wanted to keep the option to use a hacked bios in order to 
enable SATA 2 speed. But since I haven't done this in ~ two years and need stability more than a bit more speed I 
probably won't do it in the future neither, so I could update to the latest official bios if you think it makes sense.

I'm using the binary nvidia driver 304.22 right now but at least the lockups happened with older versions as well.

> The driver resets the masks and everything else on resume, or at least
> it is supposed to do that.  Maybe hotkey_resume() is not being called on
> your kernel for some reason.  The relevant code is in:
> drivers/platform/x86/thinkpad-acpi.c

At least dmesg contains 'thinkpad_acpi: ACPI backlight control delay disabled' when resuming, so I think 
'hotkey_resume()' is called as it in turn calls 'tpacpi_disable_brightness_delay()' which prints that line.

I also grepped through /etc and /lib/udev to check if something changes the hotkey_mask but couldn't find anything 
besides my local.start script that sets it to the recommended value. Should I check other paths as well ?