[ltp] tp_smapi 0.29: found the cause for the crashes on a T42

Henrique de Moraes Holschuh linux-thinkpad@linux-thinkpad.org
Fri, 1 Sep 2006 02:22:51 -0300


Well, it is finally over.

Thanks to TNKS's help and a lot of debugging, we found out that function
0x0b was highly suspect.  Thanks to blind luck, I found out that was dead
right:

While doing some cleanup on my thinkpad documentation folder a few hours
ago, I happened to read the firmware changelog for the last firmware upgrade
I had performed, and I found this entry in the file:

  Symptom corrected by version 1YHT28WW (1.05) - Removed from the stie
  Note: This version of Embedded Controller Program will only work with BIOS
  Version 1.25 or later.

    * (Fix) Fix for battery information query processing.
    * (New) Support "ThinkPad NumLock" control.
	      Note: "ThinkPad NumLock" menu item is available in the BIOS
	      Setup Utility only when the BIOS is also updated to version
	      1YET60WW (1.25) or later.

Well, that was way too suspicious to just ignore.  I downgraded the T43 to
EC 1.04, and now I could reproduce the problem just fine: the EC hung on me
readly enough, while using a modified tp_smapi that just called function
0x0b and nothing else.  After going back to EC 1.06, it wouldn't hang
anymore.

So, the fix is to blacklist function 0x0b for certain firmwares.  Since we
don't even know what the data 0x0b returns is for, we can just blacklist it
for every firmware, at least for now.  If anyone ever finds some use for
0x0b, we can revisit the issue.

-- 
  "One disk to rule them all, One disk to find them. One disk to bring
  them all and in the darkness grind them. In the Land of Redmond
  where the shadows lie." -- The Silicon Valley Tarot
  Henrique Holschuh