Dynamic frequency scaling makes kernel panic (Targa Traveller 826 / MSI MS-1029)

Bug #484158 reported by Alexandre Beaugy
10
This bug affects 1 person
Affects Status Importance Assigned to Milestone
linux (Ubuntu)
Won't Fix
Medium
Colin Ian King

Bug Description

Dear all,

First of all, the release of Ubuntu I am currently using is the: Ubuntu 9.10 (Karmic Koala) - amd64. The version of the package `linux-image' I am currently using is the default kernel provided by ubuntu (I.e.: 2.6.31-4-generic). I am not using any kind of home brewed kernel, just the official one;

I'm the owner of a nice Targa Traveller 826 (a rebadged MSI MS-1029). With as BIOS vendor: American Megatrends Inc. and BIOS version: A1029ATE V2.81 (more info in attachment: "BIOS-targa_traveller_826.dmidecode").

For a long time I experienced kernel panics with my gentoo and after with my ubuntu. First I thought it was a USB related bug in the kernel because, while the computer was running on battery, each time my mouse was not connected to the laptop, I always experienced a kernel panic. Then not getting much better results with newer kernels, I tried another way. I read some documentations on power management, ACPI, etc. I also heard about computers's BIOS frequently buggy, especially concerning ACPI management. And then, I bumped on an article on lesswatts.org, explaining how to debug and override a DSDT and therefore fix BIOS buggy ACPI management. I thought it was something to try... And I tried and it worked very well.

After extracting, disassembling and rebuilding a first time my DSDT, it appears that there was an error in the extracted/disassembled code. So I tried to fix the error as you can see in the second attachment: "DSDT-targa_traveller_826.patch". Then I retried to build my DSDT and this time it worked. Finally, it seemed to be a CPU freq table erroneously declared, if I'm right, that was the cause of my kernel panics. A table with the 4 available CPU freq declared at the same "index"(?) (I am not sure it is the right term) and a table uselessly filled with null entries. So I removed the indexes, "to force automatic indexing"(?) and I removed the useless empty entries in the table.

Below, a `diff -Nurp' displaying the modifications applied in the ASL source code:

--- DSDT.dsl~ 2009-01-27 22:00:17.000000000 +0100
+++ DSDT.dsl 2009-01-27 22:01:51.000000000 +0100
@@ -1242,7 +1242,7 @@ DefinitionBlock ("DSDT.aml", "DSDT", 1,
                         })
                         Name (_PSS, Package (0x04)
                         {
- Package (0x06)
+ Package ()
                             {
                                 0x000007D0,
                                 0x000088B8,
@@ -1252,7 +1252,7 @@ DefinitionBlock ("DSDT.aml", "DSDT", 1,
                                 0x0000010C
                             },

- Package (0x06)
+ Package ()
                             {
                                 0x00000708,
                                 0x00006590,
@@ -1262,7 +1262,7 @@ DefinitionBlock ("DSDT.aml", "DSDT", 1,
                                 0x0000020A
                             },

- Package (0x06)
+ Package ()
                             {
                                 0x00000640,
                                 0x00005208,
@@ -1272,7 +1272,7 @@ DefinitionBlock ("DSDT.aml", "DSDT", 1,
                                 0x00000288
                             },

- Package (0x06)
+ Package ()
                             {
                                 0x00000320,
                                 0x00002328,
@@ -1281,139 +1281,6 @@ DefinitionBlock ("DSDT.aml", "DSDT", 1,
                                 0xE0202CC0,
                                 0x000004C0
                             },
-
- Zero,
- Zero,
[...]

Since February, I was running my ubuntu with my own fixed DSDT, as this following old kernel logs can attest:

Aug 10 20:01:40 * kernel: [ 0.120805] ACPI: Core revision 20080926
Aug 10 20:01:40 * kernel: [ 0.121973] ACPI: Checking initramfs for custom DSDT
Aug 10 20:01:40 * kernel: [ 0.407812] ACPI: Found DSDT in DSDT.aml.
Aug 10 20:01:40 * kernel: [ 0.407816] ACPI: Override [DSDT- 1029], this is unsafe: tainting kernel
Aug 10 20:01:40 * kernel: [ 0.407821] ACPI: Table DSDT replaced by host OS
Aug 10 20:01:40 * kernel: [ 0.407825] ACPI: DSDT 00000000, 2BAD (r1 MSI 1029 4192006 INTL 20061109)
Aug 10 20:01:40 * kernel: [ 0.407829] ACPI: DSDT override uses original SSDTs unless "acpi_no_auto_ssdt"

And since I'm using my own fixed DSDT, I never experienced anymore kernel panic on my laptop, in any configuration (on (or not on) battery, with (or without) mouse/usb audio/usb disk/etc.).

So I consider that my little DSDT patch is working as expected. I think that now it is time for more people to test it, if possible. And then try to consider implementing a workaround, of this AMI buggy BIOS, into the GNU/Linux kernel. But for this, I'm totally lost and don't have much time to explore this way much. That's why I give everybody, the results of my peregrinations, and first of all, the solution I found and tested.

Moreover, since I updated my laptop from Ubuntu 9.04 to 9.10, I don't have the ability to load my own DSDT at startup anymore, as Ubuntu policy regarding custom DSDT has changed since Ubuntu 9.10. Therefore, fixing the Targa Traveller 826 (/ MSI MS-1029) DSDT bug in the kernel is now vital for my CPU and my ears (I can't stand the non-stop noise level of the laptop fan).

I hope this will help people use ACPI again on targa traveller 826 (/ MSI MS-1029) (especially with ubuntu, where it is automatically disabled for this laptop) and allow people to use safely CPU freq with this laptop. I also hope that this solution will be taken into account in the next versions of the GNU/Linux kernel. For that last expectation, if I can help in any way, please let me now. Also if anybody can help me create a ACPI patch from my DSDT.dsl patch or my DSDT.hex (generated from a `iasl -tc DSDT.dsl'), I'm OK to try, do and propose an ACPI kernel patch.

Kind Regards.

--
Alexandre Beaugy

Revision history for this message
Alexandre Beaugy (beaugy-a) wrote :
Revision history for this message
Alexandre Beaugy (beaugy-a) wrote :
Revision history for this message
Alexandre Beaugy (beaugy-a) wrote :
tags: added: acpi cpufreq dsdt kernel linux msi panic targa traveller
Revision history for this message
Alexandre Beaugy (beaugy-a) wrote :

More information about my computer and Ubuntu install:

$ uname -a
Linux bucky 2.6.31-14-generic #48-Ubuntu SMP Fri Oct 16 14:05:01 UTC 2009 x86_64 GNU/Linux
$ cat /proc/version_signature
Ubuntu 2.6.31-14.48-generic

Plus dmesg.log (from `dmesg > dmesg.log') and lspci-vnvn.log (from `sudo lspci -vnvn > lspci-vnvn.log') in attachment.

Revision history for this message
Alexandre Beaugy (beaugy-a) wrote :
Revision history for this message
Alexandre Beaugy (beaugy-a) wrote :
Revision history for this message
Alexandre Beaugy (beaugy-a) wrote :

And more information again:

$ lsb_release -rd
Description: Ubuntu 9.10
Release: 9.10
$ apt-cache policy linux-image-generic
linux-image-generic:
  Installé : 2.6.31.14.27
  Candidat : 2.6.31.14.27
 Table de version :
 *** 2.6.31.14.27 0
        500 http://fr.archive.ubuntu.com karmic/main Packages
        100 /var/lib/dpkg/status

And I think that's all for the moment.

Regards.

--
Alexandre Beaugy

Andy Whitcroft (apw)
tags: added: kernel-series-unknown
tags: added: karmic
removed: kernel-series-unknown
Changed in linux (Ubuntu):
importance: Undecided → Medium
status: New → Triaged
Revision history for this message
Steve Conklin (sconklin) wrote :

Reviewing this bug -

The fundamental problem here is that the BIOS is passing bad information to the kernel, and the kernel is failing to handle it.

It may have been fixed since this bug was opened.

Alexandre, do you know whether later versions of the kernel still fail on your bad BIOS?

Thanks

Steve Conklin (sconklin)
Changed in linux (Ubuntu):
status: Triaged → Confirmed
assignee: nobody → Colin King (colin-king)
Revision history for this message
Colin Ian King (colin-king) wrote :

@Alexandre, can you attach the original (unaltered) DSDT. In fact, I'd appreciate it if you send me the entire output from:

sudo acpidump

..then I can build a custom BIOS and see why the kernel breaks in an emulator.

Thanks!

Revision history for this message
Alexandre Beaugy (beaugy-a) wrote :

My laptop could not stand waiting anymore for any fix and it decided to quit ! ^_^

Sorry guys, my laptop died some months ago and I cannot help you anymore.

Nevertheless, Colin King, if you give me a little bit of time I can check if I stored somewhere those info.

I'm also very interrested on how you debug a BIOS with your emulator. Which one is it ? How do you operate ?

Thanks a lot in advance.

Revision history for this message
Alexandre Beaugy (beaugy-a) wrote :

We're not lucky! I did not save those information.

Could the latest BIOS update of my laptop be of any help ? 'cause I kept it.

Revision history for this message
Brad Figg (brad-figg) wrote : Unsupported series, setting status to "Won't Fix".

This bug was filed against a series that is no longer supported and so is being marked as Won't Fix. If this issue still exists in a supported series, please file a new bug.

This change has been made by an automated script, maintained by the Ubuntu Kernel Team.

Changed in linux (Ubuntu):
status: Confirmed → Won't Fix
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.