View Single Post
  #1 (permalink)  
Old 17-May-2005, 21:42
Snakedriver
Guest
 
Posts: n/a
Default

(For SuSE10.1 jump to post #45)
And, I'm no expert. but if I can do it, so can you!

Notes:
AMD uses powernow
Intel uses Speedstep
My system is AMD -k8 both laptop & desktop = powernow-k8

See any acpi errors or warnings in dmesg? Does your system hang when shutting down? Can't suspend to RAM or disk? Computer won't wakeup? Battery functions not working? Losing an IRQ? Can't get wireless to work even though you are following exact directions? You probably have a buggy DSDT thanks to Microsoft. Let's fix it!


This all started when I installed Suse 9.3 on my new Sager NP4750 64-bit laptop. You may recall that in an earlier post I reported:

"With my new Sager NP4750 AMD 64-bit laptop with Suse 9.3, autologin is dumping me to a
login page with an xconsole with these 2 msgs:
ACPI-400: Warning: invalid active threshold [0], and
cpu_init done, current fid 0x0, vid 0x0.

After 2 to 3 logins I can't get past it, i.e. login.

DMESG reads:
ACPI: cpu0 power states: c1 (c1 c2 (c2)
ACPI-400 ***Warning: invalid active threshold [0]"


Well, I now have it fixed! And, while I was learning -- on my desktop Nforce3-250Gb on which Suse 9.2 32- & 64-bit had been running perfectly ( I thought)-- found acpi errors and warnings there also I have the Nforce3 desktop Suse 9.3 32-bit DSDT fixed also. My plan is to fix my desktop suse 9.3 64-bit DSDT and share that with you as I progress along.


First let's do some reading:

The best & most helpful howto I found is "HOWTO: Fix Common ACPI Problems (DSDT, ECDT, etc.) " here:
http://forums.gentoo.org/viewtopic.php?t=122145

"DSDT files" is very helpful in correcting errors & warnings. Here:
http://users.pandora.be/PrittyFlemishPages...pire1800_3.html

The acpi source is here:
http://acpi.sourceforge.net/dsdt/index.php
Browse thru their repository & they may just have a "fixed" DSDT for your computer here:
http://acpi.sourceforge.net/dsdt/view.php

"Linux ACPI Howto (Advanced Configuration and Power Interface)" is most helpful. Here:
http://www.cpqlinux.com/acpi-howto.html
There is a Chapter "Fixing your broken DSDT Table" here:
http://www.cpqlinux.com/acpi-howto.html#fix_broken_dsdt

The acpi Spec here:
http://www.acpi.info/spec.htm

And lastly, "The Suse 9.3 Admin Guide"Chapter 16.


If your dmesg contains a line that looks like this:
ACPI: DSDT (v001 GBT AWRDACPI 0x00001000 MSFT 0x0100000c) @ 0x00000000
then almost surely you have a buggy DSDT unless your OEM happened to have fixed it for you -- MSFT 0x0100000c) @ 0x00000000 means M$ buggy compiler to me.



Next, go to your OEM; get the latest bios; and install it. It may contain a fixed DSDT for you or at least turn on some missing functions.



Next take a look at "dmesg" & see if you have any acpi errors, warnings, dropped IRQs, or just things that acpi didn't accomplish.
"dmesg | grep -2i acpi" will simplify looking @ acpi lines, but I recommend looking at the full dmesg output.
Now let's reboot with: acpi_os_name="Microsoft Windows XP" typed in on boot line.
See any differences in "dmesg"?
Repeat using: acpi_os_name="Microsoft Windows 2000"
Repeat using: acpi_os_name="Microsoft Windows 2000.1"
Repeat using: acpi_os_name="Microsoft Windows ME: Millennium Edition"
You can even try: acpi_os_name="Linux"
What we are exploring is seeing if this action triggers some switches & helps the bios build a better DSDT for acpi to use. This is explained here:
http://forums.gentoo.org/viewtopic.php?t=122145
Pick the one that gives you the least flags. I use acpi_os_name="Microsoft Windows 2000".






Now let's find our errors and warnings in our buggy DSDT.

Get the DSDT (written for Suse 9.3 file structure). Note: Suse 9.3 provides all the tools that we will need -- no need to go looking for intel/ibm files named in the readings.
The DSDT resides in /proc/acpi/dsdt and the file will be locked.
So, as root, "cat /proc/acpi/dsdt > /home/yourname/dsdt.dat"
Disassemble the DSDT
The iasl tools reside in /usr/sbin.
So, cd /usr/sbin Note: for SuSE10.1 users, this now resides in /usr/bin, so, the command is "cd /usr/bin"
"./iasl -d /home/yourname/dsdt.dat"
This will create a file called dsdt.dsl, which contains the disassembled DSDT.
Copy this file from /usr/sbin to /home/yourname as we are going to work on it.
Open kwrite; open /home/yourname/dsdt.dsl; click on view and select line numbers.
The acpi numbered errors and warning from dmesg should showup with the same number line here -- but it won't show the errors

But, we are not done.
Recompile the DSDT.
still in /usr/sbin Note: for SuSE10.1 users, see 8 lines above = /usr/bin
./iasl -tc /home/yourname/dsdt.dsl
If you have a buggy DSDT; you will get errors & warnings. If you don't have a buggy DSDT it will compile and create 2 files: dsdt.hex and DSDT.aml.
The DSDT.aml is our goal & we will use it with a simple mkintrid command later.


Here are some of the errors and warnings I got:

Sager Np4750 64-bit laptop with Suse 9.3:

dsdt.dsl 226: Method(\_WAK,1,notserialized)
Warning 2026 Reserved Method must return a Value (_WAK)

dsdt.dsl 2592 Field (Rom,AnyAcc,Lock, Preserve Precxx)
Error 1048 Host operation Region requires ByteAcc

dsdt.dsl 3486 Method (_PSR,0,Not Serialized)
Warning 2019 Not all control Paths return a value (_PSR)

dsdt.dsl 3486 Method (_PSR,0,Not Serialized)
Warning 2026 Not all control Paths return a value (_PSR)

I might add that when I fixed these and recompiled; there was no end-of-file marker either.


The solution to the first 2 is here: http://forums.gentoo.org/viewtopic.php?t=122145.
The next 2 required somw trial and error, but I'll have to get on my laptop to say just what I did to fix it.


Nforce3-250-Gb 64-bit desktop with Suse 9.3 32-bit:

DSDT.DSL 248 Notify (\_SB.LID,0X02)
Error 1022 Object does not exixt (_SB.LID)

DSDT.DSL 2710 Notify (\_SB.LID,0X80)
Error 1022 Object does not exixt (_SB.LID)

dsdt.dsl 3578 Return (DACO)
Error 1021 Object not Accessible from this Scope (DACO)

I'll have to get onto 32-bit system to know exactly what I did to fix these errors, else I would be guessing.

Look at your errors and warnings in kwrite as before. Use Find and Find Next to search throughout i.e., (DACO) from above error 1021.

remember google is your friend: google for: yourbox fixed dsdt, fixed dsdt, dsdt. acpi error 1022, Method (_PSR,0,Not Serialized), etc.
We are looking for someone who has fixed a similar problem.

More to come, but I have to cease for tonight.
By the way, my boxes boot one h__l of a lot faster!
And yes, I know that I have some filling in to do.

Snakedriver