# HOWTO: Fix Common ACPI Problems (DSDT, ECDT, etc.)

## jetblack

HOWTO: Fix Common ACPI Problems (DSDT, ECDT, etc.)

NOTE (2009-11-09): This guide is coming up on 6 years old, so it's probably pretty outdated, especially where kernel options and such are concerned. Some of the links are also stale.

For the past few weeks, I've been wrestling with ACPI on my laptop (a Gateway 200X). The main problems are that it has a buggy DSDT and a missing ECDT. A bit of googling revealed that neither is an uncommon problem. Unfortunately, some other OSes are more forgiving of deviations from the ACPI spec than they should be, and that causes problems for the rest of us. The only real solutions are to provide a fixed DSDT and ECDT to the kernel.

Now when I heard this, at first I was afraid. I was petrified. But as it turned out, it wasn't so hard to fix the problem. The trickiest part was diagnosing it; from there (in my case at least) the fix was very straightforward. Here's how to go about doing it if you are also having trouble with ACPI on your machine. Much of this is taken from this post, but I've weeded out some other stuff that was more specific to my machine.

NOTE

This involves some kernel patching, and possibly overwriting your existing initrd. PLEASE make backups of important things. In particular, I found that backups of my kernel configs, working kernels and bootsplash initrd were extremely helpful. 

Table of Contents

Revisions

Definitions

Description of the Problem

Disclaimer

Tested Kernels (DSDT override)

What you'll need to fix your DSDT

Diagnosing a Buggy DSDT

Fixing the DSDT

Incorporating the fixed DSDT into the kernel

Static DSDT override

initrd DSDT override

initrd override with bootsplashMy DSDT is fixed, but I still have ACPI errors. Now what?

Windows-only DSDT functionality

Missing ECDT

My power and/or sleep buttons don't work

My BIOS is blacklisted

I have an Asus laptop

It's still not working!Useful ACPI resources

Acknowledgements

1. Revisions

```
01/08/2004

  * Added three new sections:

     1. Revisions

     2. Definitions

     3. Description of the Problem

01/09/2004

  * Tested with some 2.6 kernels

  * Added initrd patch section, corrected misinformation about bootsplash and initrd DSDT (it does work)

  * Reformatted to conform better to the guidelines

  * Added links to HOWTOs with fixes for common DSDT errors

  * Added fixes for warnings to the main doc[/list]

01/10/2004

  * Added missing ACPI resource links

  * Corrected numerous typos

01/11/2004

  *Added Disclaimer section

01/12/2004

  * Added explanation of "Return(Package(0x02){0x00, 0x00})" fix for _WAK method warning.

01/13/2004

  * Modified Intel iasl links to point to the main download page. Thanks, Moled.

01/14/2004

  * Clarified Description of the Problem, included Microsoft compiler information. Thanks, Kesereti.

  * Added link to the acpi.sourceforge.net DSDT Repository to section 8.

01/25/2004

  * Added a couple paragraphs about acpi_os_name boot parameter to section 8.

  * Added new section for ECDT, acpi_os_name and ff button problems

  * Added a couple more links to patches

  * Removed To Do section, since it's all done.

  * Renamed, because this has evolved into more of a general ACPI HOWTO

01/26/2004

  * Clarified section 10a (Windows-only DSDT functionality)

02/02/2004

  * Reformatted revisions as code block so they don't take up so much space.

  * Added blacklisted BIOS section.

  * Added acpi4asus section.

  * Added brief information about some other acpi boot parameters to Section 10f.

```

2. Definitions

ACPI Machine Language (AML)

From the ACPI Spec, page 13:

 *Quote:*   

> Pseudocode for a virtual machine supported by an ACPI-compatible OS and in which ACPI control methods and objects are written.

 

This is what the DSDT is compiled to. An ACPI-compatible OS must be able to understand AML. You don't have to be able to.

ACPI Source Language (ASL)

Again from the Spec, Page 13

 *Quote:*   

> The programming language equivalent for AML. ASL is compiled into AML images.

 

This is the language that the DSDT is written in. If you need to fix your DSDT, you'll have to write at least a little bit of ASL.

Differentiated System Description Table (DSDT)

From the ACPI Spec, page 14:

 *Quote:*   

> An OEM must supply a DSDT to an ACPI-compatible OS. The DSDT contains the Differentiated Definition Block, which supplies the implementation and configuration information about the base system. The OS always inserts the DSDT information into the ACPI Namespace at system boot time and never removes it.

 

Well, of course  :Smile:  Basically, what this boils down to is that the DSDT describes the configuration of your system. It has definitions of all of the devices that ACPI supports, and describes their capabilities. So, for example, it describes the battery, AC Adapter, Embedded Controller, Fans and Thermal Zones. It presents this information in a hierarchical manner, so that ACPI (and therefore the OS) can be aware of dependency relationships among the system hardware. The DSDT is loaded at boot time. It basically tells the ACPI drivers what to watch out for.

3. Description of the Problem

The ACPI Specification defines the requirements for the DSDT (and everything else, for that matter) pretty explicitly. Intel's ASL compiler, iasl, used to compile the DSDT to AML from ASL, will throw errors and warnings if the underlying ASL is buggy. Unfortunately, Microsoft's ASL compiler allows many of these errors and warnings to sneak by. As a result, many OEMs write buggy DSDTs, and it turns out that Windows is very forgiving of bugs in the DSDT that get by Microsoft's compiler (not surprisingly).

What this means is that a DSDT that does not conform to the ACPI specification will work under Windows, even though it shouldn't. However, when you try to use it in Linux, where the ACPI developers expect that the DSDT is written to comply with the standard (and the Intel ASL compiler), the buggy sections of the DSDT are unsupported. If you have a buggy DSDT, ACPI may not be aware that certain devices exist. Or, if it is aware, it may not support all of their capabilites. If you have either of these symptoms (missing or incompletely supported functionality in /proc/acpi), then the cause may be a buggy DSDT.

You can tell whether your DSDT was compiled with the Microsoft compiler by the presence of "MSFT" in the DSDT line in dmesg, as below:

 *Quote:*   

> ACPI: RSDP (v000 GBT ) @ 0x000f6d20
> 
> ACPI: RSDT (v001 GBT AWRDACPI 0x42302e31 AWRD 0x01010101) @ 0x3fff3000
> 
> ACPI: FADT (v001 GBT AWRDACPI 0x42302e31 AWRD 0x01010101) @ 0x3fff3040
> ...

 

Ideally, we could each convince our favorite purveyor of laptops to fix their DSDTs. That's a good idea, but while we're waiting for hell to freeze over, we can implement a workaround to fix our DSDTs ourselves, and provide the fixed DSDT to the linux kernel, making it content, perhaps even happy.*

In addition to the DSDT, laptops that conform to the ACPI 2.0 specification may provide an ECDT. This is a small table that provides minimal information about the Embedded Controller to the ACPI drivers before this section is parsed from the DSDT. This is necessary to prevent some chicken and egg type problems with initializing devices (such as the battery and ac adapter in some systems) that rely on the Embedded Controller. Sadly, again, some laptops that should provide an ECDT do not. So, to get around this, we'll have to patch the kernel to read the necessary information from the DSDT.

*Kernel happiness not guaranteed. The author does not take responsibility for surly kernels.

4. Disclaimer

The processes outlined here should help you to solve many common problems with ACPI under linux. However, they will not necessarily solve all of your ACPI problems. Unfortunately, there are many causes of ACPI trouble. If after trying these fixes, your ACPI problems persist, then you may have found a bug in the ACPI driver code, which is still under active development. You may also have found a system-related issue of which I am not aware. In either case, your best options are to send an email to the acpi-devel mailing list or to open up a bug at bugzilla. Sometimes, it's best to let the pros handle things.

But enough about what this can't fix. Let's dig into the things that it can. First things first - let's make sure we have a good DSDT.

5. Tested Kernels (DSDT override)

The DSDT override procedures outlined in the following sections have been tested successfully with the following kernels:

2.4.23 vanilla with ACPI patches from acpi.sourceforge.net  (static DSDT)

2.4.24 vanilla  (static DSDT, initrd DSDT)

2.6.0 vanilla    (initrd DSDT)

2.6.0-gentoo (initrd DSDT + bootsplash)

2.6.1-rc1 vanilla  (static DSDT)

2.6.1 vanilla (initrd DSDT)

6. What you'll need to fix your DSDT

Before you get started fixing your DSDT, you will need the following:

ACPI support compiled into your kernel (static or modules), so you have a /proc/acpi directory.

The latest ACPI patches from acpi.sourceforge.net (if using vanilla sources).

The Intel asl compiler, available here.

and EITHER

The static DSDT override patch (tested with kernels 2.4.23 and above), available here

OR

The initrd DSDT override patch appropriate for your kernel, avaliable here

7. Diagnosing a Buggy DSDT

Obviously, fixing your DSDT won't be of any help if it isn't broken. So, the first thing we have to do is find out if it is buggy or not. The easiest way to do this is to recompile the DSDT and see if we get any errors from the compiler. In order to do that, we'll need the iasl compiler and the DSDT to compile. First, let's get the compiler ready:

Get the iasl compiler here.

su to root (not really necessary yet, but you'll need to be root eventually, so why not?)

Extract the iasl compiler to a directory somewhere.

```
tar -xvzf iasl-linux-20030228.tar.gz
```

Enter the newly created directory. You should see a file called iasl. That's the compiler. For simplicity, I'll assume that the rest of the diagnostic steps are done from this directory.

```
cd iasl-linux-20030228

ls

>> AslCompiler.pdf     iasl
```

Now we need to get the current DSDT, disassemble it and recompile it to see if we get any errors.

Extract your current DSDT to a file as follows:

```
cat /proc/acpi/dsdt > dsdt.dat
```

This will give you a file, dsdt.dat that contains your current compiled dsdt. Now we have to disassemble it so we can recompile it. To do that, we'll use iasl.

Disassemble the DSDT

```
./iasl -d dsdt.dat
```

This will create a file called dsdt.dsl, which contains the disassembled DSDT. Have a look at it if you like. You can view its contents with any text editor. Now we need to recompile it, again with iasl.

Recompile the DSDT.

```
./iasl -tc dsdt.dsl
```

This will create two files, dsdt.hex and DSDT.aml.

That's it! If your DSDT is buggy, then you'll see some errors and/or warnings when you recompile. For instance, on my laptop, I got the following messages when recompiling:

```
Intel ACPI Component Architecture

ASL Optimizing Compiler / AML Disassembler version 20030228 [Feb 28 2003]

Copyright (C) 2000 - 2003 Intel Corporation

Supports ACPI Specification Revision 2.0b

dsdt.dsl   163:     Method (_WAK, 1, NotSerialized)

Warning  2026 -                ^ Reserved method must return a value (_WAK)

dsdt.dsl  2626:                     Field (ECR, DWordAcc, Lock, Preserve)

Error    1048 -                              ^ Host Operation Region requires ByteAcc access

dsdt.dsl  2672:                     Method (_GLK, 1, NotSerialized)

Warning  2024 -                                ^ Reserved method has too many arguments ( _GLK requires 0)

ASL Input:  dsdt.dsl - 3759 lines, 123154 bytes, 1862 keywords

Compilation complete. 1 Errors, 2 Warnings, 0 Remarks, 390 Optimizations

```

One error, two warnings. In my case, the error was the source of my trouble. So, if we can fix that up, it should help. At this point, you're done diagnosing the problem. If you got errors from recompiling, then you have a buggy DSDT. The next step is to fix it.

8. Fixing the DSDT

The first thing that you should do if you have a buggy DSDT is to head over to the DSDT repository at acpi.sourceforge.net. They have fixed DSDTs for a number of laptops, so your model may already have a fix available. If there is a fix there, then just download it, extract it, recompile the asl using iasl as above, and proceed to Section 9. If there isn't already a fixed DSDT available, then you will have to try to fix your DSDT yourself. Read on for an example from my machine.

Unfortunately, this step will differ for every system. In my case, the fix was simple and self-evident, but I can't guarantee that that will be the case with you. You can find solutions to common DSDT compilation errors here. At the end of the document, I'll have a list of useful resources in case you get stuck. OK - on to the fixing!

In order to fix the DSDT, you'll have to edit the dsdt.dsl file that we created in the diagnosis. Let's use mine as an example. Unless you also have a Gateway 200X, your process will be different (and if you do have a 200X, then you can get the fixed DSDT here). However, this should at least give you an overview of the process.

As you may recall, when I compiled my DSDT, I got one error:

```
dsdt.dsl  2626:                     Field (ECR, DWordAcc, Lock, Preserve)

Error    1048 -                              ^ Host Operation Region requires ByteAcc access

```

This tells me the following:

- The error is on line 2626

- The region in question requires ByteAcc Access

Since I see that this line has a DWordAcc value specified, I assume that that is what is causing the problem. So, I opened dsdt.dsl in a text editor and fixed that line:

Edit dsdt.dsl

```
vi dsdt.dsl
```

Change any lines that are raising errors. I changed line 2626 from this

```
Field (ECR, DWordAcc, Lock, Preserve)
```

to this

```
Field (ECR, ByteAcc, Lock, Preserve)
```

Save and close the file. Now that we've made the change, we have to recompile to see if we actually fixed the problem.

Recompile dsdt.dsl

```
./iasl -tc dsdt.dsl
```

Now, when I recompile, I get the following:

```
Intel ACPI Component Architecture

ASL Optimizing Compiler / AML Disassembler version 20030228 [Feb 28 2003]

Copyright (C) 2000 - 2003 Intel Corporation

Supports ACPI Specification Revision 2.0b

dsdt.dsl   163:     Method (_WAK, 1, NotSerialized)

Warning  2026 -                ^ Reserved method must return a value (_WAK)

dsdt.dsl  2672:                     Method (_GLK, 1, NotSerialized)

Warning  2024 -                                ^ Reserved method has too many arguments ( _GLK requires 0)

ASL Input:  dsdt.dsl - 3759 lines, 123153 bytes, 1862 keywords

AML Output: DSDT.aml - 14600 bytes 499 named objects 1363 executable opcodes

Compilation complete. 0 Errors, 2 Warnings, 0 Remarks, 390 Optimizations

```

Alright! The error is gone. The warnings are still there, though. Let's get rid of them now, too.

Repeat steps 1-3 for the warnings

The second warning seems to be the easier one:

```
dsdt.dsl  2672:                     Method (_GLK, 1, NotSerialized)

Warning  2024 -                                ^ Reserved method has too many arguments ( _GLK requires 0)

```

So, the _GLK method has too many arguments. Let's get rid of them. We can fix this by changing line 2672 from this:

```
Method (_GLK, 1, NotSerialized)
```

to this:

```
Method (_GLK)
```

Recompiling now only gives me the one warning:

```
dsdt.dsl   163:     Method (_WAK, 1, NotSerialized)

Warning  2026 -                ^ Reserved method must return a value (_WAK)

```

From this HOWTO, I see that the solution is to add the following line to the end of the _WAK method:

```
Return(Package(0x02){0x00, 0x00})
```

What does this line mean? A little digging into the ACPI spec (Section 7.3.5) yields some information about the _WAK method. 

```
Arguments:

0   The value of the sleeping state (1 for S1, 2 for S2, and so on).

Result Code (2 DWORD package):

Status   Bit field of defined conditions that occurred during sleep.

   0x00000000   Wake was signaled and was successful

   0x00000001   Wake was signaled but failed due to lack of power.

   0x00000002   Wake was signaled but failed due to thermal condition.

   Other   Reserved

PSS   If non-zero, the effective S-state the power supply really entered. 

This value is used to detect when the targeted S-state was not entered because of too much current being drawn from the power supply. For example, this might occur when some active devices current consumption pushes the systems power requirements over the low power supply mark, thus preventing the lower power mode from being entered as desired.
```

OK, so the _WAK method accepts one argument, which is the number of the sleep state that was requested. It returns its result as a package of 2 DWORDs. The first value is a code that tells whether the wake was successful (0 on success, nonzero on failure) and, if not, why. The second value is also zero on success and on failure returns the value of the sleep state that was actually entered. So basically, it's a success/failure code.

In Chapter 16, we can find out how to define a Package.

```
PackageTerm   := Package(

                          NumElements  //Nothing | 

                                       //ByteConstExpr | 

                                       //TermArg=>Integer

                        ) {PackageList} => Package

```

The first argument of the package declaration specifies the number of elements in the package, and the second is the package itself. So, the declaration above simply defines a two element package, where each of the elements is zero. This is necessary because the spec requires that the _WAK method return two values. 

So, what this really boils down to is a dummy return value that satisfies the spec (thus eliminating the warnings), but doesn't really do anything. It just always returns a "Success" condition.

OK, now that that is cleared up, I add that line, recompile, and.... (drum roll please)

```
Intel ACPI Component Architecture

ASL Optimizing Compiler / AML Disassembler version 20030228 [Feb 28 2003]

Copyright (C) 2000 - 2003 Intel Corporation

Supports ACPI Specification Revision 2.0b

ASL Input:  dsdt.dsl - 3760 lines, 123177 bytes, 1863 keywords

AML Output: DSDT.aml - 14606 bytes 499 named objects 1364 executable opcodes

Compilation complete. 0 Errors, 0 Warnings, 0 Remarks, 392 Optimizations

```

Excellent! No errors, no warnings. We now have a "fixed" DSDT (remember, the _WAK method isn't really fixed, we've just shut up the warning on compile  :Wink: ). Many of the suggestions in the DSDT HOWTOs that I found are really just workarounds, not proper fixes. If you would like a more thorough analysis of your DSDT, you may want to ask the folks on the acpi-devel mailing list. If you succesfully used this process to fix your DSDT, please consider posting the fix to the DSDT repository, so that others can benefit from your work.

All that remains now is to convince our kernel to use the new DSDT.

As stated above, this will create two files, dsdt.hex and DSDT.aml. You will need to use one or the other of these files in the next step, depending on which method you use to override your DSDT. If you use the static DSDT override method, then you will need dsdt.hex. If you use the initrd method, then you will need DSDT.aml.

9. Incorporating the fixed DSDT into the kernel

There are two ways to incorporate your new DSDT into the kernel. The first way is to include it statically at compile time. The second is to pass it to the kenel at boot time as an initrd. The initrd approach is probably preferable, especially if you need to make a lot of changes to your DSDT, because it doesn't require that you recompile your kernel for each new DSDT. The static method does. Each method requires a kernel patch. Let's start with the static method first:

9a. Static DSDT override

To statically override your DSDT at kernel compile time, you will have to apply a patch to your kernel to have it read in the new DSDT, and then copy your fixed DSDT .hex file (dsdt.hex) to the kernel source tree for inclusion in the kernel.

So, first things first, let's patch the kernel.

Obtain DSDT override patch from here

Save the file to your machine. Let's call it dsdt_override.diff.

Patch your kernel. I'm assuming that the kernel sources are located in /usr/src/linux-2.4.23, since that's the version I used. If yours are elsewhere, then modify the paths accordingly.

```
cd /usr/src/linux-2.4.23

patch -p1 < /path/to/dsdt_override.diff

```

If you don't get any errors, then the patch succeeded. The patch expects to find the fixed DSDT in the linux source tree, under includes/acpi. It expects it to be named dsdt_table.h. So, let's give it what it wants.

Copy dsdt.hex to the kernel source tree.

```
cp /path/to/dsdt.hex /usr/src/linux-2.4.23/include/acpi/dsdt_table.h
```

Recompile your kernel.

That ought to do it. After recompiling, move your new kernel image to /boot (maybe don't overwrite your current kernel - just to be safe  :Wink: ), and reboot. If any of your acpi problems were caused by the buggy DSDT, then they should be fixed. /proc/acpi/dsdt should now contain your new fixed DSDT, so you can always cat that back out and recompile it to make sure that you are getting what you expect (i.e. no errors). 

Remember, if you make more changes to your DSDT, then you'll have to recopy it to <linux>/include/acpi/dsdt_table.h and recompile your kernel.

9b. initrd DSDT override

The initrd method requires about the same amount of setup as the static method for the initial DSDT, but any subsequent changes can be incorporated much more easily. Basically, you will have to patch your kernel, copy your fixed DSDT .aml file (DSDT.aml) to /boot, and direct the kernel to incorporate it as an initrd. If you are already using an initrd for something, then there is a bit more work involved. I'll go over that after describing the basic case.

So, again, the first thing we have to do is patch the kernel.

Get the appropriate initrd patch for your kernel from here

Apply the patch to your kernel (in my case, I tested this on 2.6.0)

```
cd /usr/src/linux-2.6.0

patch -p1 < /path/to/acpi-dsdt-initrd-patch-v0.4-2.6.0.diff
```

Make sure that ramdisk and initrd support are compiled statically into the kernel

```
Device Drivers --->

    Block Devices --->

        <*> RAM disk support

        [*] Initial RAM disk (initrd) support

```

Make sure that the new "Read DSDT from initrd" option is selected under the ACPI menu

```
Power management options (ACPI, APM) --->

    ACPI (Advanced Configuration and Power Interface) Support --->

        [*] Read DSDT from initrd

```

Recompile the kernel

Great! Now the kernel is ready to accept a DSDT as an initrd. Next, we need to copy the fixed DSDT.aml file to /boot and edit our grub.conf to point to the DSDT.

Copy the fixed DSDT.aml to /boot:

```
mount /boot

cp /path/to/DSDT.aml /boot

```

Edit grub.conf to use the new DSDT as an initrd. For example, mine looks like this:

```
title=Gentoo Linux (2.6.0 - DSDT initrd)

root (hd0,5)

kernel (hd0,5)/boot/linux-2.6.0-dsdt-initrd root=/dev/hd8

initrd=/boot/DSDT.aml
```

The important line is the "initrd=" line. Please remember to use your actual paths for root and kernel - don't just copy this into your grub.conf verbatim.

When you reboot, the new kernel should pick up the DSDT from the /boot partition and load it up as directed by the initrd parameter. You should see a message in dmesg that says "Looking for DSDT in initrd ..."

Now, if you make changes to your dsdt, all you have to do is copy the new DSDT.aml to /boot and reboot to incorporate those changes. No kernel recompile required.

9c. initrd override with bootsplash

If you are already using an initrd for something, like bootsplash, you can still use this method. You just have to create the initrd a bit differently. Instead of simply copying DSDT.aml to /boot and using it as the initrd, you have to cat a signature for the DSDT into your existing initrd, and then cat the DSDT into it as well. For example, my bootsplash initrd is currently called initrd-1024x768. So, here's what I did to add the DSDT.

Make a copy of /boot/initrd-1024x768 for use with the DSDT

```
cp /boot/initrd-1024x768 /boot/initrd-1024x768-dsdt
```

Append the DSDT signature to the initrd

```
echo "INITRDDSDT123DSDT123" >> /boot/initrd-1024x768-dsdt
```

cat the fixed DSDT.aml into the initrd

```
cat /path/to/DSDT.aml >> /boot/initrd-1024x768-dsdt
```

Modify grub.conf to use the new initrd on boot:

```
title=Gentoo Linux (2.6.0 gentoo - bootsplash + DSDT initrd)

root (hd0,5)

kernel (hd0,5)/boot/linux-2.6.0-gentoo-dsdt root=/dev/hd8 video=vesa:ywrap,mtrr vga=0x317

initrd=/boot/initrd-1024x768-dsdt
```

Voila! When you boot up, you should now get your lovely bootsplash screen and your new dsdt, both incorporated from the initrd. 

If you make changes to the DSDT, you just have to rebuild your initrd as above (which is a good reason to make a copy of your existing one, rather than appending to it directly).

10. My DSDT is fixed, but I still have ACPI errors. Now what?

10a. Windows-only DSDT functionality

You may find that you have no errors in your DSDT, but there are still errors in dmesg, or missing ACPI functionality. This may be because your DSDT is testing for the name of your OS. Many DSDTs do this, and enable certain functionality only if you are running a particular OS (usually, of course, Windows XP). To test for this, look for lines in your DSDT that check the value or length of the "_OS" variable. For example, you may find lines like this:

```
If (LEqual (SizeOf (_OS), 0x14)) 
```

This is checking for an OS name with a length of 20 (0x14) characters. Some examples are "Microsoft Windows NT" or "Microsoft Windows XP". You could try to rewrite your DSDT to skip these checks, or to provide the missing functionality for other OSes, but this is tedious and error-prone. Fortunately, there is a simpler way. There is a boot parameter that you can pass to the kernel to tell ACPI to pretend that you are running Windows to restore the missing functionality, rather than rewriting your DSDT. The parameter is called acpi_os_name. So, in grub.conf, you would just add this parameter to the kernel line, like this:

```
acpi_os_name="Microsoft Windows XP"
```

This should restore any functionality that is dependent on your OS identifying itself as Windows XP. Other common _OS length checks are:

0x11: "Microsoft Windows"

0x27: "Microsoft WindowsME: Millennium Edition"

NOTE

These tests are also sometimes used to disable certain functionality for certain Windows OSes. So, you may want to take a few minutes to try to work out what your DSDT is doing before fudging the OS name. You should probably take note of what works and what doesn't before and after trying this, just in case you end up turning something off.  :Smile: 

10b. Missing ECDT

If your problem isn't that the DSDT is checking whether or not you are running Windows, then you may have a missing ECDT. The ECDT is used to provide some minimal information about the Embedded Controller to the ACPI drivers before the Embedded Controller region has actually been parsed from the DSDT. This is frequently necessary before initializing the battery and ac adapter, so if you have errors in dmesg from the battery, adapter or EmbeddedControl, the ECDT is the likely culprit. For instance, after fixing my DSDT, I had the following errors in dmesg:

```
evregion-0251 [22] ev_address_space_dispa: No handler for Region [ECR_] (df5ec688) [EmbeddedControl]

 exfldio-0284 [21] ex_access_region      : Region EmbeddedControl(3) has no handler

 dswexec-0435 [14] ds_exec_end_op        : [LEqual]: Could not resolve operands, AE_NOT_EXIST

dswstate-0273 [16] ds_result_pop_from_bot: No result objects! State=df5fb428

 dsutils-0525 [16] ds_create_operand     : Missing or null operand, AE_AML_NO_RETURN_VALUE

 psparse-1120: *** Error: Method execution failed [\_SB_.ADP1._STA] (Node df5f42c8), AE_AML_NO_RETURN_VALUE

evregion-0251 [22] ev_address_space_dispa: No handler for Region [ECR_] (df5ec688) [EmbeddedControl]

 exfldio-0284 [21] ex_access_region      : Region EmbeddedControl(3) has no handler

 dswexec-0435 [14] ds_exec_end_op        : [LEqual]: Could not resolve operands, AE_NOT_EXIST

dswstate-0273 [16] ds_result_pop_from_bot: No result objects! State=df5fb428

 dsutils-0525 [16] ds_create_operand     : Missing or null operand, AE_AML_NO_RETURN_VALUE

 psparse-1120: *** Error: Method execution failed [\_SB_.BAT1._STA] (Node df5f4848), AE_AML_NO_RETURN_VALUE

```

EmbeddedControl is obviously the embedded controller. ADP1 is the ac adapter and BAT1 is the battery. After booting, my /proc/acpi/ac_adapter and /proc/acpi/battery directories were empty. All of this was caused by the missing ECDT.

A couple of patches have been proposed to correct this behavior. So far, the most promising one is here. This defers the Embedded Controller's initialization until it has actually been parsed from the DSDT. This patch restored my missing ECDT-related functionality (battery and adapter), and has been reported to do the same for a number of different systems. It may be applied to both the 2.4 and 2.6 kernel sources.

10c. My power and/or sleep buttons don't work

The ACPI spec defines two types of power and sleep buttons. They are called fixed-feature (FF) buttons and control method (CM) buttons. The difference between the two is that FF buttons are defined at a lower level than the DSDT, in the FADT. CM buttons are defined in the DSDT. It is possible for your system to have both types of button. You can tell which you have by the presence of an "FF" or "CM" next to the button alert in dmesg. For example, my dmesg gives the following:

```
ACPI: Power Button (FF) [PWRF]

ACPI: Lid Switch [LID0]

ACPI: Sleep Button (CM) [SLPB]

```

So, acpi is detecting an FF power button and a CM sleep button. I actually also have a CM power button defined in my DSDT. However, in accordance with the ACPI spec, if the linux drivers detect an FF button, the CM button is ignored. Unfortunately, the FF power button does not generate an ACPI event in my case. However, the CM sleep button does generate events.

I opened a  bug for this behavior. However, it is unlikely that the behavior will change, since it would contradict the spec to give CM buttons precedence over FF buttons. So, I posted a patch to provide a workaround for the problem on the 2.6 kernels.

The patch allows you to provide a new boot parameter, called ignore_ff_buttons. It accepts one of three values, PWRF (to ignore only the FF power button), SLPF (to ignore only the FF sleep button), or BOTH (to ignore both FF buttons).

In my case, I just want to ignore the FF power button, since I am already using the CM sleep button. So, I modified my grub.conf as below:

```
title=Gentoo Linux (2.6.1 - all ACPI patches)

root (hd0,5)

kernel (hd0,5)/boot/linux-2.6.1 root=/dev/hda8 ignore_ff_buttons=PWRF

initrd=/boot/DSDT.aml

```

Now, when I reboot, dmesg shows me the following buttons:

```
ACPI: Lid Switch [LID0]

ACPI: Sleep Button (CM) [SLPB]

ACPI: Power Button (CM) [PWRB]

```

And I get ACPI events from my power button.

NOTE

If you decide to use this patch, please be careful. I haven't created a kernel patch before. This one doesn't do much, so it should be pretty safe, but I highly recommend that you back up your kernel tree before applying it. Also, if you do decide to use it, I would be very interested to hear whether or not it works for you. Of course, I'm sure that I'll hear if it doesn't, but if it does, I would also like to know.  :Smile: 

10d. My BIOS is blacklisted

Some BIOSes have been blacklisted by the ACPI developers because they have known problems. These problems are usually related to the DSDT, so you might be able to repair these problems using the above techniques. Unfortunately, if the ACPI code detects that you have a blacklisted BIOS, it will disable ACPI even if you have fixed your DSDT. If you have a blacklisted BIOS, you will see a message like this on boot:

```
ACPI: Vendor "PTLTD " System "  DSDT  " Revision 0x6040000 has a known ACPI BIOS problem. 

ACPI: Reason: Multiple problems. This is a non-recoverable error 

ACPI: BIOS listed in blacklist, disabling ACPI support 
```

To get around this, you'll have to comment out the line in the ACPI code that causes your BIOS to short circuit the ACPI startup process. The file that sets the blacklisted BIOSes is /usr/src/linux/drivers/acpi/blacklist.c. To prevent your blacklisted BIOS from causing trouble, open up the file and comment out the appropriate line in static struct acpi_blacklist_item acpi_blacklist[]. For example, in the above case, the line to comment is:

```
{"PTLTD ", "  DSDT  ", 0x06040000, ACPI_DSDT, less_than_or_equal, "Multiple problems", 1},
```

Once you've commented out the line that corresponds to your BIOS, recompile your kernel and reboot. The ACPI drivers should now initialize, and the messages about the blacklisted BIOS should go away. You may also have to boot with "acpi=force" on the kernel line of your grub.conf to get this to work (thanks to sleek for clarifying).

10e. I have an Asus laptop

If you have an Asus laptop, you may want to check out the acpi4asus project. This is a driver that provides ACPI support on linux for most Asus laptops, including special keys and LEDs. The driver is being actively developed, so if you have a recent Asus laptop that isn't yet supported by the driver, support may be coming soon.

10f. It's still not working!

If, at this point, you are still having errors, there are one or two more things to try. If ACPI refuses to initialize, you can try booting with "acpi=force" in your grub.conf. This is sometimes necessary in order to force the ACPI drivers to initialize with older BIOSes. If you still have ACPI-related errors on boot and have a single-processor machine, then try disabling multiprocessor support, local apic support and IO-apic support in your kernel. You can also try booting with the "pci=noacpi" or "noapic" options. The apic code still seems to be a bit finicky; many people have reported problems with it.

If none of the above recommendations helps, then I would strongly suggest contacting the ACPI developers. You have likely found a bug in the ACPI code. In particular, if you are having suspend/resume problems, you are far from alone. This code is still being worked out. Give the acpi-devel mailing list a shot. You can also, of course, post your errors here, and I'll try to see what I can do to help, but the acpi gurus are likely to be a better resource.

11. Useful ACPI resources

There are a number of good ACPI resources, in case you get stuck. The ones that I found most helpful were:

bugzilla.kernel.org

acpi.sourceforge.net

acpi-devel and acpi-bugzilla mailing lists

www.acpi.info (the ACPI spec is here, including ASL documentation, which is the language used for the DSDT)

The Intel ACPI downloads page - get the iasl compiler here.

HOWTO fix common DSDT errors

DSDT fixes for the Thinkpad T31

DSDT repository at acpi.sourceforge.net

DSDT submission page at acpi.sourceforge.net.

Documentation for the static DSDT override

Documentation for the initrd DSDT override

ECDT initialization patch

FF button patch

acpi4asus homepage

12. Acknowledgements

I'd like to thank the ACPI developers, expecially Luming Yu and Bruno Ducrot. All of them have been very helpful and very responsive. In general, the ACPI mailing lists and bugzilla are wonderful resources for ACPI help.Last edited by jetblack on Mon Nov 09, 2009 11:37 pm; edited 77 times in total

----------

## jetblack

Added a couple of sections that I was too lazy to write last night.

Apologies for the bump.

----------

## jetblack

In response to the *ahem* overwhelming demand  :Wink: , I've added a section for the initrd DSDT override method, along with some new tested kernels and other changes. I think that that about wraps it up for the DSDT override, unless someone finds some errors in the doc.

----------

## jay

This is what I'm getting from recompiling my DSDT on my ASUS M2400A

Laptop:

```
./iasl -tc l84f-dsdt.dsl

 

Intel ACPI Component Architecture

ASL Optimizing Compiler / AML Disassembler version 20030228 [Feb 28 2003]

Copyright (C) 2000 - 2003 Intel Corporation

Supports ACPI Specification Revision 2.0b

 

l84f-dsdt.dsl   966:     Method (\_WAK, 1, NotSerialized)

Warning  2026 -                      ^ Reserved method must return a value (_WAK )

 

l84f-dsdt.dsl  1281:             Method (INIT, 1, NotSerialized)

Warning  2019 -                             ^ Not all control paths return a val ue (INIT)

 

l84f-dsdt.dsl  2939:                     Method (S_TM, 3, NotSerialized)

Warning  2019 -                                     ^ Not all control paths retu rn a value (S_TM)

 

ASL Input:  l84f-dsdt.dsl - 4851 lines, 155658 bytes, 2284 keywords

AML Output: DSDT.aml - 21243 bytes 608 named objects 1676 executable opcodes

 

Compilation complete. 0 Errors, 3 Warnings, 0 Remarks, 625 Optimizations

```

You max notice that the warnings look exactly like yours. Maybe we can fix these as well?

----------

## jetblack

May as well give it a shot!  :Smile: 

As an aside, I've managed to get rid of the "too many arguments" warning I had. It doesn't correspond to your warnings, but I'll include it just for the sake of documentation, in case someone else comes across it.

[EDIT] Details moved to main doc [/EDIT]

So, now when I recompile, I only have the _WAK method warning:

```
dsdt.dsl   163:     Method (_WAK, 1, NotSerialized)

Warning  2026 -                ^ Reserved method must return a value (_WAK) 
```

[EDIT] _WAK method warning fixed. See following post and main doc [/EDIT]Last edited by jetblack on Sat Jan 10, 2004 12:45 am; edited 2 times in total

----------

## jetblack

Well, that didn't take very long  :Smile: 

I found a couple of HOWTOs for common DSDT problems. They are here and here. I'll add them to the main doc.

It turns out that both of your warnings have the same solution. Just add this line to the end of the methods in question:

```
Return (Package(0x02){0x00,0x00})
```

Doing that got rid of my _WAK warning. I don't have the "Not all control paths return a value" Warning, so I can't test that. If I can figure out why that is the proper line, I'll let you know  :Wink: 

----------

## rabidsg

alright, so quick question, from my dsdt.dat decompiled,  I basically see these 4 comprise about 47 warnings, with 0 errors...

also, is it worth fixing them, as they're only warnings, with what im guessing is a superficial fix to give them some return so they don't complain, will fixing them actually do something?

 *Quote:*   

> 
> 
> dsdt.dsl  2069:                     Method (_STA, 0, NotSerialized)
> 
> Warning  2026 -                                ^ Reserved method must return a value (_STA)
> ...

 

so to fix, im assuming I'm suppose to add, the line

 *Quote:*   

> 
> 
> Return (Package(0x02){0x00,0x00})
> 
> 

 

one of the corresponding lines is

 *Quote:*   

> 
> 
>             Method (_STA, 0, NotSerialized)
> 
>             {
> ...

 

should it now be 

 *Quote:*   

> 
> 
>             Method (_STA, 0, NotSerialized)
> 
>             {
> ...

 

or 

 *Quote:*   

> 
> 
>             Method (_STA, 0, NotSerialized)
> 
>             {
> ...

 

----------

## crazy-bee

Great document. Really cool work !!!

I was so desperate I fixed the 3 warning. Worked perfectly. Unfortunately, it doesnt change anything at the current situation. Suspend-to-ram does not work (doesnt resume), and neither pmdisk or the other suspend to disk method works for me in 2.6.x. That really sucks.

----------

## jetblack

rabidsg

Yeah, I think that this really is just a placeholder value, just to get the warnings to shut up. At least for the _WAK method, it sounds like the ACPI drivers don't even check the return value of the method, even though it's supposed to return one. I guess that's why it's a warning and not an error. It shouldn't hurt to add that line, but I don't think that it will restore any missing functionality. If you like, you could post a link to your DSDT and I could look over it. I'm not an expert or anything, but maybe there are some methods missing or something that woud jump out. Your dmesg output seems to suggest that. You also mentioned that you think your laptop suports ACPI 1.0. Perhaps that's the root of the trouble. I'm not sure what the differences are (if any) in supported functionality from 1.0 to 2.0. I've only been focusing on the 2.0 spec so far.

crazy-bee

Thanks  :Smile: 

I haven't had a whole lot of success with suspend/resume either. I haven't played with it too much, though. I can tell you that the mailing lists are riddled with this kind of problem. I've seen a couple of suggestions for things to try. The main ones appear to be:

- unload all modules before suspending

- try it first without running X

I plan to dig into suspend/resume a bit more over the next week, so I'll let you know if I get any better information.

----------

## Kesereti

Hrm...any suggestions on what to do when the dumped DSDT re-compiles cleanly with the Intel compiler (on a Gateway M350 if you're wondering...looks like they might have fixed it, since I get no errors on the compile), but you still are missing features?  The battery status (/proc/acpi/battery exists, but is empty), in particular...some error about no handler for a region [ERAM] pops up on boot before the AE_NOT_EXIST errors regarding BAT0 =\  This is on 2.6.1-love1 kernel, by the way...

Specifically:

```

evregion-0251 [21]ev_address_space_dispa: No handler for Region [ERAM] (df652c28)[EmbeddedControl] 

exfldio-0284 [20] ex_access_region      : Region EmbeddedControl(3) has no handler 

dswexec-0435 [13] ds_exec_end_op        : [LGreater]: Could not resolve operands, AE_NOT_EXIST 

psparse-1120: *** Error: Method execution failed [\_SB_.PCI0._INI](Node df657528), AE_NOT_EXIST  

nsinit-0408 [06] ns_init_one_device    : \_SB_.PCI0._INI failed:AE_NOT_EXIST

evregion-0251 [21] ev_address_space_dispa: No handler for Region [ERAM](df652c28) [EmbeddedControl] 

exfldio-0284 [20] ex_access_region      : Region EmbeddedControl(3) has no handler 

psparse-1120: *** Error: Method execution failed [\_SB_.BAT0._STA](Node df658428), AE_NOT_EXIST

```

Immediately following the "Executing all Device _STA and_INI methods:........" portion of bootup...the other thing I noticed is that after these errors, there's the notation "58 Devices found containing: 58 _STA, 0 _INI methods" immediately after the errors...shouldn't there be *some* _INI methods?  Hence the errors about \_SB_.PCI0._INI not existing and whatnot...or would these be found if the first error (about the EmbeddedControl and ERAM) fix that, do you think?

----------

## jetblack

Ah, that could be the ever-popular "BIOS does not provide an ECDT" issue (don't you just love all of these acronyms?  :Wink: ). That was at the core of my battery problems, too. Even after I fixed my DSDT, I still didn't have battery and ac adapter information until I applied another kernel patch.

Basically, the system needs some preliminary information about the Embedded Control before it is actually parsed from the DSDT. The BIOS is supposed to provide this in the form of an ECDT, but on some systems it doesn't. There is a patch somewhere (I can't remember exactly where, and I'm about to fall asleep, so I'll check in the morning) that is supposed to allow you to supply an ECDT similarly to the initrd DSDT method here. I tried it without much success. This patch is the one that I am using to get around the problem. It provides a workaround that parses the Embedded Control region of the DSDT a bit early, but it doesn't work with the 2.6 kernels. It may be worth grabbing 2.4.24 and applying the patch just to see if you get battery info from it. Maybe this is a common Gateway issue.

[EDIT]

Ah, I see you're a step ahead of me. Let me know how that works out  :Wink: 

----------

## Kesereti

I actually managed to apply the patch to fake a table by hand to the 2.6.1 kernel tree...there really wasn't much different, to be honest, just that some things weren't line for line what the patch expected them to be =)  I went through and got the necessary information for the fake table (0x66, 0x62, 0x1d, 0x01 were the four hex addresses in my case...the last two being GPE and UID), added the line to my grub.conf, and it didn't seem to do anything...should there be any debug output to indicate the fake table was accepted?  Or any output of any sort?  Because either I didn't quite patch it as successfully as I thought I did, and it's not doing anything, or the change doesn't help even after loading the fake table =P

Edit: Same effect (or lack thereof =P) when applied to gentoo-sources 2.4.22-r4 =\

----------

## jetblack

Hm. I think that there was a line in dmesg after applying the fake ECDT patch. It was subtle, something like "Using fake ecdt" or something like that. Then, if it fails, it will say "couldn't use fake ECDT". I never had much success with that patch, though. The one I linked to above is slightly different, and perhaps a bit more involved to incorporate into the 2.6 kernels, but we'll see. That's my project for today  :Smile: 

----------

## crazy-bee

jetblack: I guess I've read so much stuff about suspend, I cant remeber everything. Of course I tried without X and with 0 modules loaded, no success. I'd be happy if suspend-to-disk would work, to-ram is a dream I guess.

The thing I *really* dislike is suspend-to-disk (pmdisk) did work for me *perfectly* under x11, with 3d acceleration, with usb and pcmcia modules. This was some 2.6.0-test5 version. I really hate that, instead of "bug fixing", kernel always introduces new bugs and things that did work fine are broken with newer versions. Behaviour of the suspend-to-disk changes with every new kernel now, sometimes, it wont even suspend, the next version, it suspends fine, but when i restart it, it hangs, next version it reboots after resuming. *Sigh*

But your documentation is still great!  :Smile: 

----------

## Kesereti

Well, with a few tweaks, I managed to get the fake_ecdt patch applied to 2.6.1-love2 ... the major difference being that they totally overhauled the scheduler in 2.6, so many of the functions and methods that were used to schedule tasks in 2.4 don't work the same in 2.6 =\  It compiles cleanly, and even gives me battery status now!  Only...I somehow managed to break the ACPI event model in doing so -- acpid is no longer receiving events, and by killing it and manually cat'ing /proc/acpi/event, I can see that events aren't being generated at all anymore =\  I can post a diff file so that others can test it on 2.6 if there's a desire for it, but since it just breaks ACPI in different ways, I don't know if anyone would want that =P  Anyone with knowledge of the 2.6 kernel scheduler and task model want to help me out with this one?  Hehe ^_^

----------

## jetblack

Ah, well that sounds both good and not-so-good at the same time  :Smile: 

I wasn't able to apply the other EC patch to 2.6 - the changes to bus.c were more extensive than I had hoped that they would be, so I'll have to learn a bit more about what's actually going on before I can get that to work. Though, it does sound like they may be working on a "suitable for prime-time" version of the patch for inclusion in the 2.6 kernels. Maybe we can race - I wouldn't put my money on me  :Smile: 

I did manage to find out just what that _WAK method DSDT fix is doing. 

```
Return(Package(0x02){0x00, 0x00})
```

If anyone is interested, I've added an explanation to section 8 of the doc. The short version - it's a dummy value.

----------

## Kesereti

See, the problem is, I think, that the fake_ecdt patch that is up on acpi.sourceforge.net isn't just for that -- Ducrot Bruno had mentioned that there were other miscellaneous fixes in that patch for things that needed fixing in 2.4; I'm hoping to get a response from him about which parts exactly are needed for the ECDT faking, so that I can start working on a patch myself -- just passing fake_ecdt= at boot time seems the simplest solution to this particular problem (for machines that do not have an ECDT), and I'd sure like to be the first one to the Gentoo forums with a patch that applies to 2.6 (maybe for inclusion into love-sources?  Hehehe ^_^)...

----------

## jetblack

 *Kesereti wrote:*   

> just passing fake_ecdt= at boot time seems the simplest solution to this particular problem (for machines that do not have an ECDT)

 

I agree entirely. Now that I think about it, I never did try that patch after I fixed the DSDT. It could be that it was working ok, but the DWordAcc in the ECR was causing problems anyway. Hrm.....

 *Kesereti wrote:*   

> and I'd sure like to be the first one to the Gentoo forums with a patch that applies to 2.6 (maybe for inclusion into love-sources?  Hehehe ^_^)...

 

 :Smile:  You have my best wishes. I think I might be a bit out of my depth there, but I'm enjoying playing around with it  :Wink: 

----------

## Kesereti

 *jetblack wrote:*   

>  *Kesereti wrote:*   and I'd sure like to be the first one to the Gentoo forums with a patch that applies to 2.6 (maybe for inclusion into love-sources?  Hehehe ^_^)... 
> 
>  You have my best wishes. I think I might be a bit out of my depth there, but I'm enjoying playing around with it 

 

Hehe...I haven't done any sort of kernel programming in a LONG time, and the total overhaul of many parts of the kernel for 2.6 has me rather lost, I must admit =P  I mean, I'm pretty sure I converted Bruno's fake_ecdt patch to all the new 2.6 function calls properly, but given that some of it isn't necessary (considering that a big part of the patch is dealing with task queues, which don't even exist in 2.6 anymore =P), it'll probably be at least another few days before I'm able to sort everything out...until then...battery status and no acpid events (which means no automatic fan switching on and off, no cpu throttling, no lid-closed events, etc. =\), or acpid events and no battery status (leaving me clueless about how much charge is left in my battery until the little light starts blinking red letting me know I've got about 5 minutes left =p)...*sigh*...hehehe ^_^

----------

## jetblack

Well, FWIW, the fake_ecdt patch is working for me now with 2.4.24 and the fixed DSDT. I get an odd error from dmesg that isn't there with the other patch, and it tells me that it can't use the ECDT, but I have all of the ACPI functionality (including my battery and ac adapter, which disappear if I comment out the fake_ecdt parameter in grub.conf), so it's clearly using something. Plus, now I don't have two H_EC subdirectories in my /proc/acpi/embedded_controller directory, and the one that I do have is reporting the proper ports, which is nice. I'll have to check the mailing lists for this error (AE_NOT_EXIST from the embedded controller _REG method, which sounds familiar), but it looks like that ByteAcc was causing more problems than I had thought.

----------

## Moled

if you look at:

http://developer.intel.com/technology/iapc/acpi/downloads.htm

a newer version is avaliable than the one linked in your first post:

http://developer.intel.com/technology/iapc/acpi/downloads/iasl-linux-20030918.tar.gz

things aren't looking good here  :Sad: 

Compilation complete. 8 Errors, 10 Warnings, 3 Remarks, 463 Optimizations

this is not a laptop tho, and ive never had any real issues with it

----------

## jetblack

Thanks, Moled. I've updated the links to just point to the main download page.

If you'd like to post your errors and DSDT here, I'd be happy to give them a look. But, if you aren't noticing any problems, then maybe it isn't such a big deal.

----------

## Moled

thanks:

fyi, this is the mobo I have:

http://tw.giga-byte.com/MotherBoard/Products/Products_Spec_GA-8KNXP.htm

the above errors etc were using the f6 bios

I just updated to f9 (7+8 were broken)

now I have:

```
 

Intel ACPI Component Architecture

ASL Optimizing Compiler / AML Disassembler version 20030918 [Sep 18 2003]

Copyright (C) 2000 - 2003 Intel Corporation

Supports ACPI Specification Revision 2.0b

 

dsdt9.dsl   212:     Method (\_WAK, 1, NotSerialized)

Warning  2026 -                  ^ Reserved method must return a value (_WAK)

 

dsdt9.dsl   250:             Store (Local0, Local0)

Error    1013 -                          ^ Method local variable is not initialized (Local0)

 

dsdt9.dsl   255:             Store (Local0, Local0)

Error    1013 -                          ^ Method local variable is not initialized (Local0)

 

dsdt9.dsl  2376:                         Store (Local0, Local0)

Error    1013 -                                      ^ Method local variable is not initialized (Local0)

 

dsdt9.dsl  3933:                     Method (_STM, 0, NotSerialized)

Warning  2025 -                                 ^ Reserved method has too few arguments ( _STM requires 3)

 

dsdt9.dsl  3935:                         Store (\_SB.PCI0.ICHX.STM (Arg0, Arg1, Arg2), Local0)

Error    1014 -                     Method argument is not initialized ^  (Arg0)

 

dsdt9.dsl  3935:                         Store (\_SB.PCI0.ICHX.STM (Arg0, Arg1, Arg2), Local0)

Remark   3041 -                    Not a parameter, used as local only ^  (Arg0)

 

dsdt9.dsl  3935:                         Store (\_SB.PCI0.ICHX.STM (Arg0, Arg1, Arg2), Local0)

Error    1014 -                           Method argument is not initialized ^  (Arg1)

 

dsdt9.dsl  3935:                         Store (\_SB.PCI0.ICHX.STM (Arg0, Arg1, Arg2), Local0)

Remark   3041 -                          Not a parameter, used as local only ^  (Arg1)

 

dsdt9.dsl  3935:                         Store (\_SB.PCI0.ICHX.STM (Arg0, Arg1, Arg2), Local0)

Error    1014 -                                 Method argument is not initialized ^  (Arg2)

 

dsdt9.dsl  3935:                         Store (\_SB.PCI0.ICHX.STM (Arg0, Arg1, Arg2), Local0)

Remark   3041 -                                Not a parameter, used as local only ^  (Arg2)

 

dsdt9.dsl  3952:                         Method (_GTF, 0, NotSerialized)

Warning  2019 -                                     ^ Not all control paths return a value (_GTF)

 

dsdt9.dsl  3952:                         Method (_GTF, 0, NotSerialized)

Warning  2026 - Reserved method must return a value ^  (_GTF)

 

dsdt9.dsl  3969:                         Method (_GTF, 0, NotSerialized)

Warning  2019 -                                     ^ Not all control paths return a value (_GTF)

 

dsdt9.dsl  3969:                         Method (_GTF, 0, NotSerialized)

Warning  2026 - Reserved method must return a value ^  (_GTF)

 

dsdt9.dsl  4017:                             If (LEqual (Local3, 0x03))

Error    1013 -      Method local variable is not initialized ^  (Local3)

 

dsdt9.dsl  4092:                             If (LEqual (Local3, 0x05))

Error    1013 -      Method local variable is not initialized ^  (Local3)

 

dsdt9.dsl  4111:                         Method (_GTF, 0, NotSerialized)

Warning  2019 -                                     ^ Not all control paths return a value (_GTF)

 

dsdt9.dsl  4111:                         Method (_GTF, 0, NotSerialized)

Warning  2026 - Reserved method must return a value ^  (_GTF)

 

dsdt9.dsl  4128:                         Method (_GTF, 0, NotSerialized)

Warning  2019 -                                     ^ Not all control paths return a value (_GTF)

 

dsdt9.dsl  4128:                         Method (_GTF, 0, NotSerialized)

Warning  2026 - Reserved method must return a value ^  (_GTF)

 

ASL Input:  dsdt9.dsl - 4570 lines, 145464 bytes, 1868 keywords

Compilation complete. 8 Errors, 10 Warnings, 3 Remarks, 448 Optimizations

```

i'm off for a few days and will have a look at it when I get back

have fun + thanks  :Razz: 

----------

## jetblack

Thanks! I'm not sure if I'll catch you in time, but could you post the DSDT, too? Some of these will be easier to diagnose with it.

----------

## Moled

 *dmesg wrote:*   

> ACPI: RSDP (v000 GBT                                       ) @ 0x000f6d20
> 
> ACPI: RSDT (v001 GBT    AWRDACPI 0x42302e31 AWRD 0x01010101) @ 0x3fff3000
> 
> ACPI: FADT (v001 GBT    AWRDACPI 0x42302e31 AWRD 0x01010101) @ 0x3fff3040
> ...

 

now would that be what I think it is? :/

ill sort it myself when I get back, I might learn something in the process

----------

## Kesereti

 *Moled wrote:*   

>  *dmesg wrote:*   ACPI: RSDP (v000 GBT                                       ) @ 0x000f6d20
> 
> ACPI: RSDT (v001 GBT    AWRDACPI 0x42302e31 AWRD 0x01010101) @ 0x3fff3000
> 
> ACPI: FADT (v001 GBT    AWRDACPI 0x42302e31 AWRD 0x01010101) @ 0x3fff3040
> ...

 

----------

## jetblack

Thanks, Kesereti. 

I have added this information about the Microsoft ASL compiler to the main doc, because I think it clarifies the description of the problem. I hope you don't mind (let me know if you do, and I'll remove it and just point to this post - you, too, Moled).

I also added some links to and information about the DSDT repository at acpi.sourceforge.net. I can't believe I left that out. If you have a buggy DSDT, check there before you start fixing it - there may already be a fixed one available for your machine.

Now the question is, will a day go by where I don't revise this thing? I swear I don't have OCD. 

What? Stop looking at me like that.  :Wink: 

----------

## micmac

@ jetblack: Thanks for pointing me to this thread, your HowTo, and for offering your help. I'm the guy with the broken Compaq Armada E500 dsdt. With the help of your HowTo and the provided links I was able to eliminate most of the errors and warnings. Three of one kind still remain and I'm hoping that maybe these can be fixed also.

Here is what iasl says:

```

micmobil iasl-linux-20030918 # ./iasl -tc dsdt.dsl 

Intel ACPI Component Architecture

ASL Optimizing Compiler / AML Disassembler version 20030918 [Sep 18 2003]

Copyright (C) 2000 - 2003 Intel Corporation

Supports ACPI Specification Revision 2.0b

dsdt.dsl  2163:                     Store (Package (0x00) {}, Local0)

Warning  2018 -   Effective AML package length is zero ^ 

dsdt.dsl  2200:                     Store (Package (0x00) {}, Local0)

Warning  2018 -   Effective AML package length is zero ^ 

dsdt.dsl  2237:                     Store (Package (0x00) {}, Local0)

Warning  2018 -   Effective AML package length is zero ^ 

ASL Input:  dsdt.dsl - 5121 lines, 155964 bytes, 2995 keywords

AML Output: DSDT.aml - 22660 bytes 691 named objects 2304 executable opcodes

Compilation complete. 0 Errors, 3 Warnings, 0 Remarks, 1133 Optimizations

micmobil iasl-linux-20030918 #

```

And here are the parts of interest in dsdt.dsl:

```

2159 Method (_PCL, 0, NotSerialized)

2160             {

2161                 If (\_SB.C005.C013.C059.C08A ())

2162                 {

2163                     Store (Package (0x00) {}, Local0)

2164                 }

2165                 Else

2166                 {

2167                     Store (Package (0x01)

2168                         {

2169                             \_SB

2170                         }, Local0)

2171                 }

2172

2173                 Return (Local0)

2174             }

```

```

2196 Method (_PCL, 0, NotSerialized)

2197             {

2198                 If (\_SB.C005.C013.C059.C08A ())

2199                 {

2200                     Store (Package (0x00) {}, Local0)

2201                 }

2202                 Else

2203                 {

2204                     Store (Package (0x01)

2205                         {

2206                             \_SB

2207                         }, Local0)

2208                 }

2209

2210                 Return (Local0)

2211             }

```

```

2233 Method (_PCL, 0, NotSerialized)

2234             {

2235                 If (\_SB.C005.C013.C059.C08A ())

2236                 {

2237                     Store (Package (0x00) {}, Local0)

2238                 }

2239                Else

2240                 {

2241                     Store (Package (0x01)

2242                         {

2243                             \_SB

2244                         }, Local0)

2245                 }

2246

2247                 Return (Local0)

2248             }

```

Because I don't really have a clue what I'm doing here I'd like to show you what else I've done to get rid of the other errors and warnings. Maybe you can take a look and hopefully tell me that I did all right.

```

dsdt.dsl    32:             Name (_HID, "*PNP0A03")

Error    1068 -                                  ^ String must be entirely alphanumeric (*PNP0A03)

```

I got lots of these, so I just removed the '*' from the line:

```

 Name (_HID, "*PNP0A03")

```

changed to

```

 Name (_HID, "PNP0A03")

```

The next one I got was 

```

dsdt.dsl   735:                 Return (^C08E (Arg0, Arg1, Arg2))

Error    1029 -                             ^ Called method returns no value

```

I read something about about "Return(Package(0x02){0x00, 0x00})" and thought "Hey, I gotta have one of these"  :Wink: 

```

Method (C08E, 3, NotSerialized)

            {

                Acquire (^C082, 0xFFFF)

                Acquire (\_GL, 0xFFFF)

                ^C08B ()

                Store (0x07, C05B)

                Store (Arg0, C05C)

                Store (Arg1, C05B)

                Store (Arg2, C05C)

                ^C08C ()

                Release (\_GL)

                Release (^C082)

            }

            Method (C08F, 2, NotSerialized)

            {

                    Return (^C08D (Arg0, Arg1))

            }

            Method (C090, 3, NotSerialized)

            {

                Return (^C08E (Arg0, Arg1, Arg2))

            }

```

changed to 

```

Method (C08E, 3, NotSerialized)

            {

                Acquire (^C082, 0xFFFF)

                Acquire (\_GL, 0xFFFF)

                ^C08B ()

                Store (0x07, C05B)

                Store (Arg0, C05C)

                Store (Arg1, C05B)

                Store (Arg2, C05C)

                ^C08C ()

                Release (\_GL)

                Release (^C082)

             Return(Package(0x02){0x00, 0x00})

            }

            Method (C08F, 2, NotSerialized)

            {

                    Return (^C08D (Arg0, Arg1))

            }

            Method (C090, 3, NotSerialized)

            {

                Return (^C08E (Arg0, Arg1, Arg2))

            }

```

Last   :Arrow: 

```

dsdt.dsl  1126:             Method (C0B3, 2, Serialized)

Warning  2019 -                        ^ Not all control paths return a value (C0B3)

```

Again same procedure:

```

            Method (C0B3, 2, Serialized)

            {

                Store (C0B2, Local0)

                Not (Local0, Local0)

                If (LEqual (Arg0, 0x02))

                {

                    And (Local0, Arg1, Local0)

                    Return (Local0)

                }

                Else

                {

                    And (Local0, Not (Arg1), Local0)

                    If (Arg0)

                    {

                        Or (Local0, Arg1, Local0)

                    }

                    Store (Local0, C0B2)

                }

            }

```

changed to

```

            Method (C0B3, 2, Serialized)

            {

                Store (C0B2, Local0)

                Not (Local0, Local0)

                If (LEqual (Arg0, 0x02))

                {

                    And (Local0, Arg1, Local0)

                    Return (Local0)

                }

                Else

                {

                    And (Local0, Not (Arg1), Local0)

                    If (Arg0)

                    {

                        Or (Local0, Arg1, Local0)

                    }

                    Store (Local0, C0B2)

                }

              Return(Package(0x02){0x00, 0x00})

            }

```

Are my fixes OK?

Thanks for your time!

mic

----------

## jetblack

Gald it helped some, micmac. I'm not really a DSDT expert either, but from what I've read while fighting with my laptop, your warning fixes seem ok. The one thing that I would keep in mind is that the return value that the HOWTOs recommend really doesn't do anything, it just returns zero. This is enough to get the warnings to be quiet, but if there is functionality that actually relies on a real return value from those methods, it still won't work. Just something to keep in mind.

However, the one error fix, for the C08E method, concerns me a bit.

```
Method (C08E, 3, NotSerialized) 

            { 

                Acquire (^C082, 0xFFFF) 

                Acquire (\_GL, 0xFFFF) 

                ^C08B () 

                Store (0x07, C05B) 

                Store (Arg0, C05C) 

                Store (Arg1, C05B) 

                Store (Arg2, C05C) 

                ^C08C () 

                Release (\_GL) 

                Release (^C082) 

             Return(Package(0x02){0x00, 0x00}) 

            } 

            Method (C08F, 2, NotSerialized) 

            { 

                    Return (^C08D (Arg0, Arg1)) 

            } 

            Method (C090, 3, NotSerialized) 

            { 

                Return (^C08E (Arg0, Arg1, Arg2)) 

            } 

```

If you check the bottom of this, method C090 actually calls method C08E, and returns its return value. That's why you're getting the "Called method returns no value" error, instead of just the "Not all control paths return a value" warning. So, this seems to be a case where the return value might actually be important. I can't say for sure, because I'm not sure what either of those methods does. I think I'd defer to the acpi-devel mailing list on that one.

The same goes for your remaining warnings. I couldn't find any documentation on that particular warning from googling around. From the package declarations in the methods, they are definitely creating zero-length, empty packages. I'm not sure if that is a big deal, though. You'd only ever actually run into those packages if the "if" condition is fulfilled, and again I'm not really sure whether that would be the case.

I would suggest sending both of these along to the acpi-devel mailing list, and see if anyone there can shed some light. Mention as well that the thing that prompted you to look into this was the fact that your fan is always on.

If you want to test the fixes you have made so far, I would suggest taking the Return fix out of the C08E method first (just in case something is actually looking for it). You seem to have eliminated a lot of errors just by giving the methods valid names. Who knows? Maybe that is enough to help your fan.

----------

## Kesereti

...thought I would drop a line in this topic to note that this patch seems to fix ACPI for machines running the 2.6 kernel series that lack an ECDT in their BIOS (such as Gateway laptops) ... just patch, recompile, reboot, and ACPI functionality is yours! (barring buggy DSDT's, and whatever else =P)

----------

## jetblack

Added a blurb about the acpi_os_name boot parameter to the beginning of Section 8. You can use this parameter to trick your DSDT into thinking you are running a version of Windows if it enables certain functionality only for that OS.

----------

## wizzzard

a little addition: there is another way to get ACPI thinking you were running windoze, by changing a line in <your kernel>/include/acpi/platform/aclinux.h:

```
Line 47:

#define ACPI_OS_NAME             "Linux"
```

Change this to "Microsoft Windows XP" would have the same effect as adding a line to your kernel boot parameter.

Disadvantage: everytime you compile a new kernel from new sources you will have to change this again

Hmmm, thinking it over, the boot parameter is more time-saving, just wanted to mention the other way.

Edit: If you want to do it the way of editing this file, you might even change "Linux" to something with just 20 chars, don't need to be "Microsoft Windows XP" or something. For example, what about "Runnning Gentoo Linux", fells so much better!   :Wink: 

----------

## Instinct82

```

Maximum error count (200) exceeded.

ASL Input:  dsdt.dsl - 5298 lines, 173571 bytes, 1966 keywords

Compilation complete. 201 Errors, 0 Warnings, 0 Remarks, 422 Optimizations

```

wow, this will be fun...   :Rolling Eyes: 

I get lots of error 1022:

```

dsdt.dsl  1949:                             Store (Arg2, SMD0)

Error    1022 -                       Object does not exist ^  (SMD0)

```

(new Asus M6800N Laptop)

```

ACPI: RSDP (v000 ACPIAM                                    ) @ 0x000f5da0

ACPI: RSDT (v001 A M I  OEMRSDT  0x12000312 MSFT 0x00000097) @ 0x1ff40000

ACPI: FADT (v001 A M I  OEMFACP  0x12000312 MSFT 0x00000097) @ 0x1ff40200

ACPI: OEMB (v001 A M I  OEMBIOS  0x12000312 MSFT 0x00000097) @ 0x1ff50040

ACPI: DSDT (v001  1ABSP 1ABSP000 0x00000000 MSFT 0x0100000d) @ 0x00000000

```

----------

## jetblack

I added a few non-DSDT related ACPI fixes, and I renamed the HOWTO, because it's not really strictly a DSDT HOWTO anymore.

----------

## jetblack

 *Instinct82 wrote:*   

> 
> 
> ```
> 
> Maximum error count (200) exceeded.
> ...

 

Ugh. That sounds like great fun. It looks like they may not be declaring their variables? Do you have any lines like this:

```
Name (SMD0, Zero)
```

If not, you may want to try adding them to initialize the variables before the DSDT tries to set them, to see if those errors go away. Of course, if there are over 200, that could get tedious. Hopefully it's a few variables that are being used repeatedly.

Anyhow, it's a guess...

----------

## Instinct82

If you want to have a look at my files, you can download

dsdt.dsl

dsdt.dat

The one I could correct, was the

```
/*** Missing EndDependentFunctions descriptor */
```

 in line 656

this just has to be replaced by 

```
EndDependentFn ()
```

(pay attention to the 

```
})
```

 at the end of the line, this should not be replaced since it is needed to be syntactically correct

At the beginning of the compilation output there's a line that does not look like all the other error messages:

```
nsaccess-0682: *** Warning: NsLookup: Type mismatch on SMBS (RegionField), searching for (Device)
```

I don't really know how to interpret that

Then another thing that cought my attention is the Checking for the Operating System:

```
                    Name (OSFG, 0x00)

                    Name (OS9X, 0x01)

                    Name (OS98, 0x02)

                    Name (OSME, 0x04)

                    Name (OS2K, 0x08)

                    Name (OSXP, 0x10)

                    Method (OSVR, 0, NotSerialized)

                    {

                        If (CondRefOf (\_OSI, Local0))

                        {

                            Store (OSXP, OSFG)

                        }

                        Else

                        {

                            If (MCTH (\_OS, "Microsoft Windows"))

                            {

                                Store (OS98, OSFG)

                            }

                            Else

                            {

                                If (MCTH (\_OS, "Microsoft WindowsME: Millennium Edition"))

                                {

                                    Store (OSME, OSFG)

                                }

                                Else

                                {

                                    If (MCTH (\_OS, "Microsoft Windows NT"))

                                    {

                                        Store (OS2K, OSFG)

                                    }

                                    Else

                                    {

                                        Store (OSXP, OSFG)

                                    }

                                }

                            }

                        }

                        Return (OSFG)

                    }

```

But this should not be a problem since it defaults to Windows XP - maybe it disables some functions for the older Microsoft OSes

----------

## jetblack

 *Instinct82 wrote:*   

> If you want to have a look at my files, you can download
> 
> dsdt.dsl
> 
> dsdt.dat

 

Hm, well this is a bit out of my depth, but it looks like at least that SMD0 variable is declared in your Embedded Controller region, here:

```
                        OperationRegion (ECOR, EmbeddedControl, 0x00, 0x80)

                        Field (ECOR, ByteAcc, Lock, Preserve)

                        {

                            Offset (0x04), 

                            CMD1,   8, 

                            CDT1,   8, 

                            CDT2,   8, 

                            CDT3,   8, 

                            Offset (0x18), 

                            PRTC,   8, 

                            SSTS,   8, 

                            ADDR,   8, 

                            SCMD,   8, 

                            SMD0,   8, 

                            SMD1,   8, 

                            DATB,   240, 

                            BCNT,   8, 

                            ALRM,   8, 

                            ALR0,   8, 

                            ALR1,   8, 

                            Offset (0x43), 

                            P50S,   1, 

                                ,   1, 

                                ,   1, 

                            P43S,   1, 

                            P54S,   1, 

                            P55S,   1, 

                            Offset (0x48), 

                            P54C,   8, 

                            P55C,   8, 

                            P50C,   8, 

                            P43C,   8, 

                            Offset (0x50), 

                            P60C,   8, 

                            P61C,   8, 

                            P62C,   8, 

                            P63C,   8, 

                            P64C,   8, 

                            P65C,   8, 

                            P66C,   8, 

                            P67C,   8, 

                            P68C,   8, 

                            Offset (0x78), 

                            P60S,   1, 

                            P61S,   1, 

                            P62S,   1, 

                            P63S,   1, 

                            P64S,   1, 

                            P65S,   1, 

                            P66S,   1, 

                            P67S,   1

                        }

```

My hunch would be that many of those other variables will look familiar from your errors, too. Perhaps they have fallen out of scope by the time the compiler gets to those "Store" statements. I'll have to do a little more reading and investigating to find out. If you'd rather check it out for yourself, the ACPI spec will have the information you want. 

 *Instinct82 wrote:*   

> At the beginning of the compilation output there's a line that does not look like all the other error messages:
> 
> ```
> nsaccess-0682: *** Warning: NsLookup: Type mismatch on SMBS (RegionField), searching for (Device)
> ```
> ...

 

Hm. I'm not exactly sure about that either, but I think that SMBS is the Smart Battery System, which also depends on the Embedded Control.

Could you let me know what exactly isn't working? Does any of the ACPI functionality work on your machine?

 *Instinct82 wrote:*   

> Then another thing that cought my attention is the Checking for the Operating System:
> 
> ```
>                     Name (OSFG, 0x00)
> 
> ...

 

Yeah, it probably does something like that (I didn't check too closely). It's nice that in your case it seems to enable things by default if you're not running a bad version of windows (insert easy joke here  :Wink: )

----------

## Moled

```
  Method (\_SB.PCI0._INI, 0, NotSerialized)

                {

                    If (STRC (\_OS, "Microsoft Windows"))

                    {

                        Store (0x56, SMIP)

                    }

                    Else

                    {

                        If (STRC (\_OS, "Microsoft Windows NT"))

                        {

                            Store (0x58, SMIP)

                            Store (0x00, OSFL)

                        }

                        Else

                        {

                            Store (0x57, SMIP)

                            Store (0x02, OSFL)

                        }

                    }

```

got to find out what that means :\

----------

## jetblack

Hm - look around for things that are testing the value of SMIP and/or OSFL.

----------

## Moled

```
  Method (\_WAK, 1, NotSerialized)

    {

        Store (0xFF, DBG1)

        If (LEqual (Arg0, 0x04))

        {

            If (LEqual (OSFL, 0x00))

            {

                Store (0x58, SMIP)

```

etc for each value

looks like what to do when it resumes, work arounds for each os I guess

```

       Device (PSMR)

                {

                    Name (_HID, EisaId ("PNP0C02"))

                    Name (_UID, 0x03)

                    Method (_STA, 0, NotSerialized)

                    {

                        If (LEqual (KBDI, 0x00))

                        {

                            Return (0x00)

                        }

                                                                                                                                                                                                     

                        If (LEqual (PS2F, 0x00))

                        {

                            If (LEqual (OSFL, 0x02))

                            {

                                Return (0x0F)

                            }

                                                                                                                                                                                                     

                            If (LEqual (OSFL, 0x01))

                            {

                                Return (0x0F)

                            }

```

etc

it also poped up with some usb stuff

no idea with that?

----------

## Instinct82

well, someone was faster than me and got the dsdt compiling without errors

http://www.isis.de/members/~messersch/files/asus_m6800n_dsdt_test.dsl.gz

I think some acpi stuff does work since i get those messages at bootup

```

ACPI: PCI Interrupt Link [LNKA] (IRQs 3 4 5 6 7 9 10 *11 12 14 15)

ACPI: PCI Interrupt Link [LNKB] (IRQs 3 *4 5 6 7 9 10 11 12 14 15)

ACPI: PCI Interrupt Link [LNKC] (IRQs 3 4 5 6 7 *9 10 11 12 14 15)

ACPI: PCI Interrupt Link [LNKD] (IRQs 3 4 *5 6 7 9 10 11 12 14 15)

ACPI: PCI Interrupt Link [LNKE] (IRQs 3 4 5 6 7 9 10 11 12 14 15)

ACPI: PCI Interrupt Link [LNKF] (IRQs 3 4 5 6 7 9 10 11 12 14 15)

ACPI: PCI Interrupt Link [LNKG] (IRQs 3 4 5 6 7 9 10 11 12 14 15)

ACPI: PCI Interrupt Link [LNKH] (IRQs 3 4 5 6 7 9 *10 11 12 14 15)

ACPI: PCI Interrupt Link [LNKA] enabled at IRQ 11

ACPI: PCI Interrupt Link [LNKD] enabled at IRQ 5

ACPI: PCI Interrupt Link [LNKC] enabled at IRQ 9

ACPI: PCI Interrupt Link [LNKH] enabled at IRQ 10

ACPI: PCI Interrupt Link [LNKB] enabled at IRQ 4

```

you can also view 

all lines of dmesg containing "ACPI"

or 

my complete dmesg output

----------

## jetblack

 *Instinct82 wrote:*   

> well, someone was faster than me and got the dsdt compiling without errors

 

Ah, well I hope that helps some.

 *Instinct82 wrote:*   

> you can also view 
> 
> all lines of dmesg containing "ACPI"
> 
> or 
> ...

 

Is that with the original DSDT or with the fixed one from that site?

All of the errors you have in dmesg have ECFL at their root:

```
    ACPI-0352: *** Error: Looking up [ECFL] in namespace, AE_NOT_FOUND

    ACPI-1120: *** Error: Method execution failed [\_SB_.ECAV] (Node c1570cc0), AE_NOT_FOUND

    ACPI-1120: *** Error: Method execution failed [\_SB_.ACS_] (Node c1570ca0), AE_NOT_FOUND

    ACPI-1120: *** Error: Method execution failed [\_SB_.AC__._INI] (Node c1570a80), AE_NOT_FOUND

    ACPI-0352: *** Error: Looking up [ECFL] in namespace, AE_NOT_FOUND

    ACPI-1120: *** Error: Method execution failed [\_SB_.ECAV] (Node c1570cc0), AE_NOT_FOUND

    ACPI-1120: *** Error: Method execution failed [\_SB_.BATS] (Node c1570c80), AE_NOT_FOUND

    ACPI-1120: *** Error: Method execution failed [\_SB_.BAT0._STA] (Node c156e900), AE_NOT_FOUND

  ...

    ACPI-0352: *** Error: Looking up [ECFL] in namespace, AE_NOT_FOUND

    ACPI-1120: *** Error: Method execution failed [\_SB_.ECAV] (Node c1570cc0), AE_NOT_FOUND

    ACPI-1120: *** Error: Method execution failed [\_SB_.BATS] (Node c1570c80), AE_NOT_FOUND

    ACPI-1120: *** Error: Method execution failed [\_SB_.BAT0._STA] (Node c156e900), AE_NOT_FOUND

  ...

    ACPI-0352: *** Error: Looking up [ECFL] in namespace, AE_NOT_FOUND

    ACPI-1120: *** Error: Method execution failed [\_SB_.ECAV] (Node c1570cc0), AE_NOT_FOUND

    ACPI-1120: *** Error: Method execution failed [\_SB_.ACS_] (Node c1570ca0), AE_NOT_FOUND

    ACPI-1120: *** Error: Method execution failed [\_SB_.AC__._PSR] (Node c1570aa0), AE_NOT_FOUND

```

They go on to affect AC__ (which I imagine is the AC Adapter) and BAT0 (the first battery). That would make sense, since neither of these is recognized later. Though I'm intrigued, because BAT1 does seem to be recognized. Hrm...

```
ACPI: Battery Slot [BAT1] (battery absent)

ACPI: Power Button (FF) [PWRF]

ACPI: Lid Switch [LID]

ACPI: Sleep Button (CM) [SLPB]

ACPI: Fan [FN00] (off)

ACPI: Processor [CPU1] (supports C1)

ACPI: Thermal Zone [THRM] (49 C)

```

In your DSDT, the ECFL variable is defined in the Embedded Controller region (the _HID of "PNP0C09" is the identifier for that region).

```
                    Device (EC0)

                    {

                        Name (ECFL, Ones)

                        Mutex (MUEC, 0x00)

                        Name (FAKE, 0x00)

                        Method (ECAV, 0, NotSerialized)

                        {

                            If (LEqual (ECFL, Ones))

                            {

                                If (LNot (LLess (_REV, 0x02)))

                                {

                                    Return (One)

                                }

                                Else

                                {

                                    Return (Zero)

                                }

                            }

                            Return (ECFL)

                        }

                        Name (_HID, EisaId ("PNP0C09"))

                        ...

```

So, it sounds like the drivers aren't yet aware of the Embedded Controller region of your DSDT when they try to initialize your AC adapter and battery. That is consistent with the beahvior that was caused by the missing ECDT on my system. If you haven't already, you may want to try applying this ECDT initialization patch to your kernel. That fixed my ECDT errors.

----------

## Instinct82

applying the patch did not change anything (compared dmesg output with diff... nothing)

To be sure: I do have to apply the patch

```

cat acpi_patch.diff | patch -p0 -E

```

and then recompile the kernel? which options are important?

----------

## jetblack

I always just use "patch -p1".

```
patch -p1 < /path/to/acpi_patch.diff
```

or

```
cat /path/to/acpi_patch.diff | patch -p1
```

----------

## Instinct82

well, patch asked me if I wanted to undo the patching

so it must have been applied correctly. any ideas?

----------

## jetblack

Hm. At this point, the only ideas I have are:

1. You didn't copy the new kernel to /boot after recompiling

2. You are missing the ECDT, but this patch doesn't fix your ECDT problems

3. I've misdiagnosed it, and it isn't an ECDT problem at all

Of the three, I think #3 is the most likely. I'm still working my way through all this. However, I can say this much:

- BAT0._STA definitely calls BATS, which in turn calls ECAV, which relies on ECFL having been defined.

- AC__._PSR definitely calls ACS, which then calls ECAV, which again relies on ECFL

- ECFL is initialized to Ones at the beginning of the EC0 definition, and gets set to the value of the second parameter passed to the Embedded Control's _REG method if its first argument is 0x03.

A value of 0x03 in the first argument of the _REG method indicates that it is running in the Embedded Controller's operation region. I would think that that should always be the case, but I don't know for sure. The second argument is either 0 or 1. 0 means that the handler is being disconnected, 1 means that it is being connected.

I guess you could fudge this by always returning 1 from ECAV, instead of returning the value of ECFL, just to see if the errors on boot go away. But that would only be useful to diagnose the problem, and may be dangerous. I think that you would want those functions to return the proper value based on the status of the Embedded Control.

Anyhow, the only way that I can see that variable not being found is if the Embedded Control Region hasn't been parsed at the time when those functions are called, which sure sounds like an ECDT issue, but I could be missing something. Sorry I don't have anything more definitive at the moment. I hate to say this, but perhaps you should send an email to acpi-devel@lists.sourceforge.net. Someone there may be able to shed a little more light on the problem.

----------

## Svlad

Hi,

I did the changes to the DSDT table for the M6800N and I just wanted to mention that I'm not sure if the DSDT table correct. To make it compile I had to change some objects that looked ok.

```

                        OperationRegion (IO, SystemIO, DPRT, 0x05)

                        Field (IO, ByteAcc, Lock, Preserve)

                        {

                            DAT0,   8,

                            Offset (0x04),

                            CMD0,   8

                        }

                        Field (IO, ByteAcc, Lock, Preserve)

                        {

                            Offset (0x04),

                            OUTS,   1,

                            INPS,   1

                        }

```

Here I changed the IO to SMBX (which I saw in a table for an M2400N) and most compilation errors were gone.

Maybe someone with insights can take a look at this part and tell me how to really fix it or at least what might be the problem.

regards

S.

----------

## Instinct82

I mailed a developer of acpi4asus and he told me that my laptop model will be supported in the next version of acpi4asus

----------

## jetblack

D'oh! Sorry about that - I completely forgot about acpi4asus   :Embarassed: 

Glad to hear that support is coming, though.

----------

## jetblack

 *Moled wrote:*   

> it also poped up with some usb stuff
> 
> no idea with that?

 

Hm - not sure about that, either. Though, I have seen some emails about problems with USB on suspend/resume. As I recall, if the USB modules are loaded, resumes fail. If they aren't loaded, resume works, but you can't reload the modules. So maybe it's all related to suspend/resume.

----------

## sleek

First of all, thanks for this great article. I've been having many problems getting ACPI to work, so I'm hopeful that this is a possible solution to fixing it.  I have successfully fixed all errors and warnings in my dsdt.dsl except for 1 warning:

```
dsdt.dsl   255:             Method (_BTP, 1, NotSerialized)

Warning  2019 -                        ^ Not all control paths return a value (_BTP)
```

The code in question is this:

```
Device (CMB0)

{

    Name (_HID, EisaId ("PNP0C0A"))

    Name (_UID, 0x01)

    Name (BATP, Ones)

    Name (_PCL, Package (0x01)

    {

        \_SB

    })

    ...

    ...

    ...

    Method (_BTP, 1, NotSerialized)

    {

        If (LEqual (\ECFL, Zero))

        {

            Return (0x0F)

        }

        Else

        {

            Store ("_SB.CMB0._BTP", Debug)

        }

    }

    ...

    ...

    ...

}
```

I know that I need to return a value at the end of this method, but what exactly would that be? Thanks!

----------

## jetblack

 *sleek wrote:*   

> First of all, thanks for this great article. I've been having many problems getting ACPI to work, so I'm hopeful that this is a possible solution to fixing it. 

 

You're welcome. I hope it actually helps you; it seems to have been hit-or-miss so far.

 *sleek wrote:*   

> I have successfully fixed all errors and warnings in my dsdt.dsl except for 1 warning:
> 
> ```
> dsdt.dsl   255:             Method (_BTP, 1, NotSerialized)
> 
> ...

 

Well, it actually does return a value (0x0f) if ECFL=0. So, you'll only run into trouble here when ECFL != 0. In that case, it looks like it's just setting a debug message. So, the first  thing to check would be where and how ECFL is set in your DSDT. I assume that it has something to do with the Embedded Controller. The _BTP method sets the battery trip point. So, I'm guessing that your battery depends on the embedded controller, so this checks to make sure that the Embedded Controller has been initialized before setting the battery trip point.

So, the short version is that this is probably OK. This method does have to return a value, but it's probably doing a test to make sure that everything that it depends on has been initialized first. If the Embedded Controller isn't there when you get to this, then you'll probably have bigger battery problems than just the trip point.  :Wink: 

You could probably make the Warning go away by returning 0x0F (which is what it seems to want to set the trip point to) after the "Store ..." bit, but I'd try it as is and see what happens first. Or dig around and see what causes ECFL to get set. If you want to post the bits of your DSDT that involve the ECFL variable, that would be fine.

----------

## sleek

So after I did all the stuff from your docs (i used the DSDT initrd patch), I rebooted and ACPI didn't work.  It says my BIOS is from 2000 and is too old. So I then try with acpi=force on my kernel= line in grub.conf. ACPI still doesn't work. Here is the dmesg after booting with acpi=force:

http://sleek.solidbox.com/acpi.dmesg

----------

## jetblack

yikes! This is new:

```
ACPI: Vendor "PTLTD " System "  DSDT  " Revision 0x6040000 has a known ACPI BIOS problem.

ACPI: Reason: Multiple problems. This is a non-recoverable error

ACPI: BIOS listed in blacklist, disabling ACPI support

```

Not sure how to get around that. Is there a more recent BIOS that you could try upgrading to?

----------

## jetblack

Ok, maybe this will help. I'm not sure what kernel you're running, but I found this in /usr/src/linux-2.6.1/drivers/acpi/blacklist.c:

```
   {"PTLTD ", "  DSDT  ", 0x06040000, ACPI_DSDT, less_than_or_equal, "Multiple problems", 1},
```

I'm sure there's something similar in 2.4. Since it seems like it's saying the problem is with the DSDT, and since you have, in theory, fixed the DSDT, you could always try removing that line and recompiling. That should at least prevent the ACPI code from short-circuiting when it detects your BIOS version.

[EDIT]That line is in static struct acpi_blacklist_item acpi_blacklist[] [/EDIT]

----------

## sleek

I have made leaps and bounds! I'm using the 2.6.1 kernel still and commented out my blacklisted BIOS from the blacklist.c file.  I still needed to keep the acpi=force in my kernel line, but lots of good things happened! Here is my updated dmesg:

http://sleek.solidbox.com/acpi.dmesg

Now I just need to fix the Embedded Controller errors and I think that I might be good to go! I'll keep you updated on my progress.

----------

## jetblack

Great! I hope that ECDT patch helps you. It doesn't seem to be quite the silver bullet that I had hoped it was, but it does help a lot of the time for Embedded Controller issues.

----------

## sleek

Just wanted to say thanks! I have applied all the patches and am using the static DSDT. I have 2.4.23 with full ACPI support as well as framebuffer/bootsplash support fully operational!

I haven't tried to see if my battery will charge, etc., but everything shows up in /proc/acpi with no problems whatsoever.

So I think that it's safe to say that we can now add the Compaq Presario 1700 (17XL2) laptop to the list of ACPI hacked success stories   :Cool: 

Good luck to everyone else who is still working on their ACPI!!!

----------

## sleek

How do I make my laptop "sleep"?

----------

## jetblack

That's the million-dollar question.

Sleep support is *very* spotty. I've heard that suspend-to-disk works with the 2.4 kernels reasonably well, but I didn't have a whole lot of success.

The basic methodology is to echo values into /proc/acpi/sleep. To suspend to disk in 2.6, you would do this:

```
echo 4 > /proc/acpi/sleep
```

You also need to tell it where to resume from on boot. To do that, add this to the kernel line in grub.conf:

```
resume=/dev/<swap>
```

where <swap> is your swap partition.

With 2.4, I think you have to use swsusp.

There are other sleep states, too. There's a bit more documentation here. You may want to try it first without running X. People have much more success from console than X. Good luck!

----------

## sleek

Kick ASS. Those are two words that can very simply describe the usefulness and insight into this common problem with laptops. I use a Compaq Presario 1700 (17XL2) laptop. After hacking the DSDT and other power management code, I was able to enable ACPI support.

After following this guide and also installing swsusp (software suspend software), I was able to check my battery power, lid status, CPU temperature (thermal_zone), and other various information.

The best thing about this setup is the "Suspend to disk" feature where swsusp can provide functionallity equivalent to the Windows XP "hibernate" option.

----------

## jetblack

Added a couple of new sections for issues that have come up over the last week or so (acpi4asus, blacklisted BIOSes, etc).

----------

## sleek

 *jetblack wrote:*   

> Added a couple of new sections for issues that have come up over the last week or so (acpi4asus, blacklisted BIOSes, etc).

 

One note that you might want to add to the blacklisted BIOS section is that the kernel line in grub or lilo will probably also require that "acpi=force" be included. This was the case for my laptop at least.

----------

## jetblack

 *sleek wrote:*   

> One note that you might want to add to the blacklisted BIOS section is that the kernel line in grub or lilo will probably also require that "acpi=force" be included. This was the case for my laptop at least.

 

Got it. Thanks!

----------

## tkoster

I'm running into a couple of problems as I try to smooth out my ACPI woes. In terms of the computer (Dell Inspiron 8600), I've got it all working except the battery levels and the sleep states. It can detect whether I'm running on battery or ac just not what the levels are. 

The DSDT file comes up with five warnings when compiled. 1 is with the _WAK setting. I saw your earlier description of your fix but couldn't figure out where to put it. My two attempts just made it worse, though one of them made the other warnings disappear. The other 4 are _SOD settings which create a warning number 2003 "unknown reserved name".

Any clues for me?

----------

## sleek

If you post the compilation errors you get, then we might be able to assist you in how to fix them.

----------

## theonlymcc

Anyone with a Dell i5150 w/ 2.6 kernel got ACPI working? Fixed all my DSDT warnings but changed nothing.

----------

## tkoster

Here are the warnings I get:

dsdt.dsl 627  Method (\_WAK, 1, NotSerialized)

warning: 2026  Reserved method must return a value (_WAK)

dsdt.dsl 1902 Method (_SOD, 0, NotSerialized)

warning: 2033 unknown reserved name (_SOD)

dsdt.dsl 1945 Method (_SOD, 0, NotSerialized)

warning: 2033 unknown reserved name (_SOD)

dsdt.dsl 2001 Method (_SOD, 0, NotSerialized)

warning: 2033 unknown reserved name (_SOD)

dsdt.dsl 2045 Method (_SOD, 0, NotSerialized)

warning: 2033 unknown reserved name (_SOD)

----------

## jetblack

 *tkoster wrote:*   

> Here are the warnings I get:
> 
> dsdt.dsl 627  Method (\_WAK, 1, NotSerialized)
> 
> warning: 2026  Reserved method must return a value (_WAK)
> ...

 

The _WAK method isn't causing your battery problem, and I wouldn't worry too much about it anyhow, since the ACPI drivers don't check the return value of the _WAK method. That _SOD method could be causing some trouble, but it's hard to say without seeing the DSDT. Could you post a link to it?

Also, which kernel are you using? There were a lot of issues with the battery in 2.6.1. A lot of people started seeing all zeroes for the capacity information. I think they may have fixed it in 2.6.2 (or in one of the 2.6.2 mm kernels). If you're using 2.6.1, you may want to try 2.6.0. and/or 2.6.2 to see if you get the battery info back.

As far as sleep states are concerned, they are still a work in progress. People seem to be having the most success with swsusp, but even that has some issues.

----------

## jetblack

 *theonlymcc wrote:*   

> Anyone with a Dell i5150 w/ 2.6 kernel got ACPI working? Fixed all my DSDT warnings but changed nothing.

 

What isn't working? Could you post your dmesg?

----------

## tkoster

The kernel is 2.4.25-pre7. (gs-sources) I don't have a webpage to post the file and it is quite a few lines to include here. Is there a particular section you would like to see?

----------

## jetblack

It's most helpful to see the whole thing. You could send it to me in a PM if you like. I can post it somewhere for more general access at that point.

I don't really know much about gs-sources. Have you tried it with a vanilla 2.4.24? Could be worth a shot.

----------

## tkoster

I tried gentoo-sources first, but it wasn't a high enough edition of the kernel to handle the ndiswrapper for my wireless. So I tried gs-sources after that. I chose both of them because they are supposed to have the latest patches for ACPI in them already. 

I'm willing to try the vanilla, if you think it will work better (ndiswrapper requires 2.4.23 or better). I'm also willing - even a little eager - to try 2.6, but I've been a little more uncertain there which sources to use or how to filter/masque to get the one I want. Which kernel has been working best with acpi?

Tim

----------

## sleek

OK, so I've been having great luck with my battery, thermal zone info, ac state, lid state, suspend-to-disk, etc. The one thing that's bothering me is this.

I use gkrellm2 for monitoring my system. One of the plugins I use is to monitor my battery. It is clearly showing whether my AC adaptor is plugged in and it also increases/decreases my battery power percentage depending on the situation. BUT, the highest that my battery power displays is 85%. I know this battery is fully charged, however, because when I reboot into Windows XP it shows as 100% full.

Is this problem something that I could have fixed when I recompiled my DSDT? Or could this be a problem with how the battery percentage is calculated?

Thanks in advance for any help that can be provided.

----------

## jetblack

I'm not sure how gkrellm does this, but it could just be a problem with the way it is calculated. If you check /proc/acpi/battery/BAT0/info, you'll see two "full" capacities. There is a "design capacity" and a "last full capacity". Since the battery will lose charge over time, the last full capacity will often be lower than the design capacity. If the remaining percentage is calculated with respect to the design capacity, then it will never get back to 100%. It should be calculated with respect to the last full capacity. If the ratio of your last full capacity to your design capacity is 85%, then that's probably what you're seeing.

----------

## sleek

```
craig@sleekdesign craig $ cat /proc/acpi/battery/CMB0/info 

present:                 yes

design capacity:         unknown

last full capacity:      unknown

battery technology:      rechargeable

design voltage:          unknown

design capacity warning: 800 mWh

design capacity low:     800 mWh

capacity granularity 1:  100 mWh

capacity granularity 2:  100 mWh

model number:            BAT1

serial number:           00000000

battery type:            LION

OEM info:                COMPAQ
```

----------

## jetblack

Hm, then I'm going to go ahead and guess that gkrellm isn't using that information at all.  :Wink: 

On a more serious note, you should have some information there. Is that what it says while the battery is discharging?

----------

## sleek

```
craig@sleekdesign craig $ cat /proc/acpi/battery/CMB0/state

present:                 yes

capacity state:          ok

charging state:          discharging

present rate:            65176 mW

remaining capacity:      4246 mWh

present voltage:         16439 mV
```

----------

## sleek

Although my battery seems to be getting charged, etc, I'm still wondering if I made the correct changes to my DSDT. Although if this stuff all works except some small details, then I'm not sure what it could be.

----------

## jetblack

A lot of people have reported issues with the battery info in 2.6.1 and 2.6.2. There is apparently a bug in the acpi code in those kernels, which could be affecting you. Do you have a 2.4 kernel (or 2.6.0) lying around that you could try, just to see if you get values to show up in those files?

----------

## sleek

Actually, this is 2.4.23 that I'm working with right now. I suppose I could try a 2.6.x kernel to test stuff out.

----------

## tkoster

Here's another question that may be on the silly side. I was poking through the online package database and discovered that there were two packages acpi and acpid listed there. My impression from the various howto's were that with the kernel patched and modules included in it, there was no need for other programs, daemons or drivers to get the acpi to work. Especially since many of the elements in the /proc/acpi/ files are registering and working fine. Did I misunderstand? Are the extra packages something that I need as well?

----------

## jetblack

Those apps won't do anything to restore missing information, but you may want to install at least acpid at some point to get your system to respond to acpi events. Basically, acpi just prints out some of the information from /proc/acpi. acpid watches for events, and allows you to put together scripts to respond to them. This is nice if you want to do things like shut the system down when the battery reaches a certain level, or put it to sleep when you close the lid.

----------

## jetblack

 *tkoster wrote:*   

> I don't have a webpage to post the file and it is quite a few lines to include here.

 

I haven't had a chance to look at it yet, but I have posted it, in case someone else would like to give it a look.  I hope to have some time to check it out tomorrow. In the meantime:

tkoster's DSDT

----------

## jetblack

 *tkoster wrote:*   

> I'm willing to try the vanilla, if you think it will work better (ndiswrapper requires 2.4.23 or better). I'm also willing - even a little eager - to try 2.6, but I've been a little more uncertain there which sources to use or how to filter/masque to get the one I want. Which kernel has been working best with acpi?

 

Of the 2.6 kernels, 2.6.0 seems to have had the best ACPI support. You may want to give that a shot first. Any flavor should do. Also, be sure to apply the latest ACPI patch for whichever kernel you choose from acpi.sourceforge.net.

----------

## tkoster

You don't have to bother trying to hash out the dsdt file for me. They just posted a new patch for the 2.4.25 kernel which fixed the problem. The battery levels now register. Thanks for your help.

----------

## fear_lag

 *sleek wrote:*   

> 
> 
> So I think that it's safe to say that we can now add the Compaq Presario 1700 (17XL2) laptop to the list of ACPI hacked success stories  
> 
> Good luck to everyone else who is still working on their ACPI!!!

 

I'm having some trouble with ACPI on the same computer and was wondering if you might be able to send your DSDT version to me or post it to the ACPI4Linux site on sourceforge

----------

## sleek

Sure, I'd be happy to share my stuff with you. To make it REALLY worth your time though, what kernel version will you be using? Personally I have had a lot of success with the 2.4.24 kernel. I have patched it with the latest ACPI stuff, bootsplash, software suspend, and of course a couple of the patches from this post.

Let me know what you need and I'll hook you up.

----------

## federico

How can I patch kernels 2.6.x where x>1 ??

How can I patch 2.6.2, 2.6.3 kernels ?

Fede

----------

## sleek

I use 2.6.3 and I had no problems patching it with the newest ACPI patch, the DSDT Override patch, and the ECDT patch. I get the same ACPI support with 2.6.3 that I did when I patched my 2.4.24 kernel.

Have you tried these patches? If so, what did you have problems with?

----------

## federico

I've got my patch  :Very Happy: 

But the problem I have, also with mi DSDT fixes is that, I want to show it to you

http://www.sideralis.net/blackman/battery.png

I can see the status of my battery two times ans stop..

----------

## Jefklak

Very nice guide!

I'm having the same errors as tkoster, 

" Unknown reserved name ^  (_S0D)" upon 4 times... I don't have any idea how to fix them... Did you figure out what it means jetblack? I did a google but couldn't find anything usefull... Every ACPI aspect "works" but my cpu temprature is WAYY to hot (in linux over 50° even is idle, in windows idle around 33) so I tought it's the DSDT... I solved 1 error (except the 4 warnings) but still no go  :Sad: 

----------

## apeitheo

Hello,

I have recently bought a new compuer, its a HP Pavilion a205w with a 2.7GHz celeron processor.  Upon booting it up into Windows for the first time, the CPU fan was loud at first but then once at the login prompt it got quiet. I installed Gentoo the next day, and the CPU fan stays loud (It goes fast all the time instead of slowing down, and then speeding up when hot) I can run echo 3 > /proc/acpi/fan/FAN1/state and have it turn down, but then I can not get it back up again.  I have discovered that it is most likely my DSDT. So I did what I found, and I get 1 error

```
dsdt.dsl    64: If (\FCEN) {

Error    1037 -  ^ parse error, unexpected PARSEOP_IF

```

So then I went into the dsdt.dsl file and found the line, and the code around it, here it is:

```
If (\FCEN) {

        Scope (\_TZ)

        {

            PowerResource (FN01, 0x00, 0x0000)

            {

                Method (_STA, 0, NotSerialized)

                {

                    Return (0x01)

                }

                Method (_ON, 0, NotSerialized)

                {

                    \_SB.PCI0.LPC0.SIO.WR00 (0x07, 0x0A)

                    \_SB.PCI0.LPC0.SIO.WR00 (0x30, 0x01)

                    Store (0x7E, \FAN1)

                    Store (0x7E, \FAN2)

                    Store (0x01, \_TZ.THRM.FNON)

                    Notify (\_TZ.THRM, 0x81)

                    Store (0xCC, DBGP)

                    \_SB.PCI0.LPC0.SIO.WR00 (0x30, 0x00)

                }

                Method (_OFF, 0, NotSerialized)

                {

                    \_SB.PCI0.LPC0.SIO.WR00 (0x07, 0x0A)

                    \_SB.PCI0.LPC0.SIO.WR00 (0x30, 0x01)

                    Store (0x04, \FAN1)

                    Store (0x6A, \FAN2)

                    Store (0x00, \_TZ.THRM.FNON)

                    Notify (\_TZ.THRM, 0x81)

                    Store (0xDD, DBGP)

                    \_SB.PCI0.LPC0.SIO.WR00 (0x30, 0x00)

                }

            }

            Device (FAN1)

            {

                Name (_HID, EisaId ("PNP0C0B"))

                Name (_UID, 0x01)

                Name (_PR0, Package (0x01)

                {

                    FN01

                })

            }

```

I see that there is some code in there that talks about FAN1, so I think this is the problem, anyone know how I can fix this? (Note: I'm on a desktop, NOT a laptop) Please help anyone?

----------

## dogshu

I have a Toshiba 7140CT laptop, made in 1999.  There were 30+ warnings, but all I had to do for every single one of them is change:

 *Quote:*   

> 
> 
>             Method (_STA, 0, NotSerialized)
> 
>             {
> ...

 

to:

 *Quote:*   

> 
> 
>             Method (_STA, 0, NotSerialized)
> 
>             {
> ...

 

STA is just an example, there were other methods which needed changing, but in every case it just took adding Return () around the one line of the method.

So easy!  Now ACPI is working perfectly on this half-decade-old laptop.

----------

## confusion

I have an asus A7N8X-X motherboard and ive recently been trying to get ACPI working. I tried disassembling the DSDT and found one error; i "fixed" it.

The problem remains the same. I wanted ACPI functionality in order to set processor states from C1 to C2 to bring the temperature down at idle times. This seems to work fine in windows, but not in linux. i have /proc/acpi/processor/CPU0/info, limit, power, and throttling, but info and power contain the following.

```

processor id:            0

acpi id:                 0

bus mastering control:   no

power management:        no

throttling control:      no

limit interface:         no

```

```

active state:            C1

default state:           C1

bus master activity:     00000000

states:

   *C1:                  promotion[--] demotion[--] latency[000] usage[00000000]

    C2:                  <not supported>

    C3:                  <not supported>

```

As you can see it states that C2 is not supported. Surely it must be if i have experienced processor sleep states in windows? Am i missing some kind of configuration stage here or something? I tried setting acpi_os_name to win but theres little or no _OS related code in the DSDT anyway.

Slightly miffed, exponentially baffled, awaiting any response   :Very Happy: 

Cheers,

-John

----------

## Jefklak

*bump*

Anyone knows how to solve my problem {see my reply above}?

Thanks!

----------

## TinheadNed

Any idea on how to solve "Table [DSDT] replaced by host OS" problems?  I've got it every time I've tried to fix DSDTs on various computers over the years.  I'm assuming it means my DSDT was rejected by the laptop.  Is that right?

And, confusion, I'm assuming you have a desktop chip, and as such is unlikely to support changing performance profiles.

----------

## dogshu

"Table [DSDT] replaced by host OS" means that the host OS (Linux) replaced the system's DSDT.  That is exactly what you want to happen, and is the entire point of this thread.

----------

## TinheadNed

Well that's good then.  Unfortunately it means the new one doesn't make any difference on the old - and neither does changing the _OS variable.

There is definitely OS specific code in there, similar to what's been in this thread, but trying different string lengths made little difference  :Sad: [/quote]

----------

## psyeye

Hello, maybe someone is still watching this thread...

(I have posted it in its own thread, no answer so far, this is my second try):

I'd like to switch to 2.6.6; kernel from kernel.org, patched with swsusp2 and acpi-dsdt-initrd  

 :Arrow: 

My (self-corrected) DSDT is not loaded for reasons I do not understand... I even re-did the correction, with no luck. 

It all runs well with 2.6.1! Odd, isn't it?

dmesg output:

```
ACPI: Using customized DSDT

    ACPI-0196: *** Warning: Invalid checksum in table [DSDT] (E8, sum 61 is not

zero)

    ACPI-0299: *** Info: Table [DSDT] replaced by host OS

    ACPI-0307: *** Error: ns_search_and_enter: Bad character in ACPI Name: 5F

    ACPI-0279: *** Error: Looking up [0x005F] (NON-ASCII)

 in namespace, AE_BAD_CHARACTER

    ACPI-1133: *** Error: [NULL NAME], AE_BAD_CHARACTER

    ACPI-0125: *** Error: acpi_load_tables: Could not load namespace: AE_BAD_CHARACTER

    ACPI-0134: *** Error: acpi_load_tables: Could not load tables: AE_BAD_CHARACTER

ACPI: Unable to load the System Description Tables

```

What could I do? ACPI and kernel 2.6.6 fails completely with the very same DSDT that runs flawlessly with 2.6.1. Without provided DSDT, I have no battery-stat and other things fail too...

Any help is really appreciated!

greets,

psyeye

----------

## int2str

Great HOWTO!

This helped me solve down my slow-down problem which is common to many Compaq and HP notebooks! See this thread for details:

https://forums.gentoo.org/viewtopic.php?t=170493

Thanks so much for this writeup, jetblack!

Cheers,

    André

----------

## gmichels

I'm having some problems to patch my kernel (2.6.6-love4). I don't use initrd, so the DSDT must be inside the kernel. Here's the output:

```
# patch -Np1 --dry-run < /root/ze4430us/acpi/dsdt_override.patch

patching file drivers/acpi/osl.c

Hunk #2 FAILED at 209.

1 out of 2 hunks FAILED -- saving rejects to file drivers/acpi/osl.c.rej
```

My osl.c has the following significant part (I guess):

```
acpi_os_table_override (struct acpi_table_header *existing_table,

                        struct acpi_table_header **new_table)

{

        if (!existing_table || !new_table)

                return AE_BAD_PARAMETER;

#ifdef CONFIG_ACPI_INITRD

        if (!memcmp(existing_table, "DSDT", 4) && (dsdt_start != NULL)) {

                printk(KERN_INFO "ACPI: Using customized DSDT\n");

                *new_table = (struct acpi_table_header*)dsdt_start;

        } else

#endif

                *new_table = NULL;

        return AE_OK;

}
```

I don't have much knowledge in this, so maybe someone can help me solve the error here.

Maybe there's a new version of the override patch, as I am using the one listed in the first page. What is the bug number for that attachment?

thanks

----------

## Legoguy

Hmm... for some reason, I don't see this problem anymore in Linux - I didn't do any DSDT changes or anything. It may have been the latest BIOS upgrade from HP, released some time ago... haven't throuroughly tested it in Windows but it may still be happening in there.

Kernel 2.6.6-mm4.

----------

## robmoss

Well, I'm thoroughly pissed off now. I've gone to all this trouble and now I find that the Gigabyte GA-7DX has somewhat incomplete ACPI support! I *think* that the F8 BIOS update fixes this... BUT that's only for Rev 3.0 motherboards and newer; mine is a 2.2. And trying to use that has already caused one reinstall. One is quite enough, thanks...  :Confused: 

However, I shall persevere. Does anyone have any experience with writing new bits of AML? Can one generally just copy-and-paste things in from a working DSDT from a different board? Or is it much, much more subtle and complicated than that?

----------

## gmichels

Ok so I went the other way, decided to try the initrd approach. Before I could get into that, I managed to clean 2 errors and 3 warnings from my original dsdt. Now there's one error left, and I really can't find a solution for this.

```
# ./iasl -tc dsdt.dsl

Intel ACPI Component Architecture

ASL Optimizing Compiler / AML Disassembler version 20030918 [Sep 18 2003]

Copyright (C) 2000 - 2003 Intel Corporation

Supports ACPI Specification Revision 2.0b

dsdt.dsl   610:                             If (LNot (LEqual (ShiftRight (And (Local1, 0x10), 0x03), And (Local2, 0x02))))

Error    1013 -                            Method local variable is not initialized ^  (Local1)

ASL Input:  dsdt.dsl - 5313 lines, 187398 bytes, 2576 keywords

Compilation complete. 1 Errors, 0 Warnings, 0 Remarks, 791 Optimizations
```

I googled and searched the acpi devel archives, no solutions for it. So maybe a good soul here can help me out.

Links for my DSDT and dmesg output.

cheers

----------

## int2str

Change "Local1" in that line to "Local2"

----------

## gmichels

Success!

```
ACPI: Using customized DSDT

    ACPI-0196: *** Warning: Invalid checksum in table [DSDT] (A5, sum 45 is not zero)

    ACPI-0299: *** Info: Table [DSDT] replaced by host OS
```

Should I worry about that 0196 warning?

Thanks a lot for all the help guys.

----------

## Mattwolf7

I cannot get the intel iasl to compile...

Intels Instructions:

```
$ wget http://www.intel.com/technology/iapc/acpi/downloads/acpica-unix-20040527.tar.gz

$ tar xzf acpica-unix-20040527.tar.gz

$ cd acpica-unix-20040527/compiler

$ make

```

My output...

```
bison -v -d -y -pAslCompiler aslcompiler.y

conflicts: 33 shift/reduce, 47 reduce/reduce

aslcompiler.y:882.7-81: warning: rule never reduced because of conflicts: TermArg: Type2IntegerOpcode

aslcompiler.y:883.7-81: warning: rule never reduced because of conflicts: TermArg: Type2StringOpcode

aslcompiler.y:884.7-81: warning: rule never reduced because of conflicts: TermArg: Type2BufferOpcode

aslcompiler.y:885.7-81: warning: rule never reduced because of conflicts: TermArg: Type2BufferOrStringOpcode

aslcompiler.y:1473.7-38: warning: rule never reduced because of conflicts: CaseTermList: CaseTerm

aslcompiler.y:1482.7-38: warning: rule never reduced because of conflicts: DefaultTermList: CaseTerm

cp y.tab.c aslcompilerparse.c

cp y.tab.h aslcompiler.y.h

gcc -Wall -O2 -Wstrict-prototypes -D_LINUX -D_ACPI_ASL_COMPILER -I../include    -c -o aslcompilerparse.o aslcompilerparse.c

flex -i -PAslCompiler -oaslcompilerlex.c aslcompiler.l

gcc -Wall -O2 -Wstrict-prototypes -D_LINUX -D_ACPI_ASL_COMPILER -I../include    -c -o aslcompilerlex.o aslcompilerlex.c

gcc -Wall -O2 -Wstrict-prototypes -D_LINUX -D_ACPI_ASL_COMPILER -I../include    -c -o aslanalyze.o aslanalyze.c

gcc -Wall -O2 -Wstrict-prototypes -D_LINUX -D_ACPI_ASL_COMPILER -I../include    -c -o aslcodegen.o aslcodegen.c

gcc -Wall -O2 -Wstrict-prototypes -D_LINUX -D_ACPI_ASL_COMPILER -I../include    -c -o aslcompile.o aslcompile.c

gcc -Wall -O2 -Wstrict-prototypes -D_LINUX -D_ACPI_ASL_COMPILER -I../include    -c -o aslerror.o aslerror.c

gcc -Wall -O2 -Wstrict-prototypes -D_LINUX -D_ACPI_ASL_COMPILER -I../include    -c -o aslfiles.o aslfiles.c

gcc -Wall -O2 -Wstrict-prototypes -D_LINUX -D_ACPI_ASL_COMPILER -I../include    -c -o asllength.o asllength.c

gcc -Wall -O2 -Wstrict-prototypes -D_LINUX -D_ACPI_ASL_COMPILER -I../include    -c -o asllisting.o asllisting.c

gcc -Wall -O2 -Wstrict-prototypes -D_LINUX -D_ACPI_ASL_COMPILER -I../include    -c -o aslload.o aslload.c

gcc -Wall -O2 -Wstrict-prototypes -D_LINUX -D_ACPI_ASL_COMPILER -I../include    -c -o asllookup.o asllookup.c

gcc -Wall -O2 -Wstrict-prototypes -D_LINUX -D_ACPI_ASL_COMPILER -I../include    -c -o aslmain.o aslmain.c

gcc -Wall -O2 -Wstrict-prototypes -D_LINUX -D_ACPI_ASL_COMPILER -I../include    -c -o aslmap.o aslmap.c

gcc -Wall -O2 -Wstrict-prototypes -D_LINUX -D_ACPI_ASL_COMPILER -I../include    -c -o aslopcodes.o aslopcodes.c

gcc -Wall -O2 -Wstrict-prototypes -D_LINUX -D_ACPI_ASL_COMPILER -I../include    -c -o asloperands.o asloperands.c

gcc -Wall -O2 -Wstrict-prototypes -D_LINUX -D_ACPI_ASL_COMPILER -I../include    -c -o aslresource.o aslresource.c

gcc -Wall -O2 -Wstrict-prototypes -D_LINUX -D_ACPI_ASL_COMPILER -I../include    -c -o aslrestype1.o aslrestype1.c

gcc -Wall -O2 -Wstrict-prototypes -D_LINUX -D_ACPI_ASL_COMPILER -I../include    -c -o aslrestype2.o aslrestype2.c

gcc -Wall -O2 -Wstrict-prototypes -D_LINUX -D_ACPI_ASL_COMPILER -I../include    -c -o asltree.o asltree.c

gcc -Wall -O2 -Wstrict-prototypes -D_LINUX -D_ACPI_ASL_COMPILER -I../include    -c -o aslutils.o aslutils.c

gcc -Wall -O2 -Wstrict-prototypes -D_LINUX -D_ACPI_ASL_COMPILER -I../include    -c -o asltransform.o asltransform.c

gcc -Wall -O2 -Wstrict-prototypes -D_LINUX -D_ACPI_ASL_COMPILER -I../include    -c -o aslfold.o aslfold.c

gcc -Wall -O2 -Wstrict-prototypes -D_LINUX -D_ACPI_ASL_COMPILER -I../include    -c -o aslstubs.o aslstubs.c

gcc -Wall -O2 -Wstrict-prototypes -D_LINUX -D_ACPI_ASL_COMPILER -I../include    -c -o aslopt.o aslopt.c

gcc -Wall -O2 -Wstrict-prototypes -D_LINUX -D_ACPI_ASL_COMPILER -I../include    -c -o ../common/getopt.o ../common/getopt.c

gcc -Wall -O2 -Wstrict-prototypes -D_LINUX -D_ACPI_ASL_COMPILER -I../include    -c -o ../utilities/utalloc.o ../utilities/utalloc.c

gcc -Wall -O2 -Wstrict-prototypes -D_LINUX -D_ACPI_ASL_COMPILER -I../include    -c -o ../utilities/utcopy.o ../utilities/utcopy.c

gcc -Wall -O2 -Wstrict-prototypes -D_LINUX -D_ACPI_ASL_COMPILER -I../include    -c -o ../utilities/utdebug.o ../utilities/utdebug.c

gcc -Wall -O2 -Wstrict-prototypes -D_LINUX -D_ACPI_ASL_COMPILER -I../include    -c -o ../utilities/utdelete.o ../utilities/utdelete.c

gcc -Wall -O2 -Wstrict-prototypes -D_LINUX -D_ACPI_ASL_COMPILER -I../include    -c -o ../utilities/utglobal.o ../utilities/utglobal.c

gcc -Wall -O2 -Wstrict-prototypes -D_LINUX -D_ACPI_ASL_COMPILER -I../include    -c -o ../utilities/utobject.o ../utilities/utobject.c

gcc -Wall -O2 -Wstrict-prototypes -D_LINUX -D_ACPI_ASL_COMPILER -I../include    -c -o ../utilities/utmisc.o ../utilities/utmisc.c

gcc -Wall -O2 -Wstrict-prototypes -D_LINUX -D_ACPI_ASL_COMPILER -I../include    -c -o ../utilities/utmath.o ../utilities/utmath.c

make: *** No rule to make target `../namespace/nsaccess.o', needed by `aslmain'.  Stop.

```

Tried it on another computer, same response.

The error looks like they messed up the make file.

----

Extra info for fun:

HP Pavilion ze4610US Laptop

AMD 2500+ Mobile

BIOS Version: KA.M1.59

I assume these are the right steps to follow because when I compile ACPI (everything modular) the system hangs on boot.

Thanks

----------

## int2str

After you unpack the tar.gz file, many direcotries are going to be all uppercase. You have to rename them all to lowercase. namespace is one of those directories.

----------

## Mattwolf7

wow... good job Intel.

Ok so now what am i supposed to do since I cannot boot with my ACPI compiled in the kernel?

*EDIT* - 7/2/04

Got it working!  I found out th at my hardware on the HP ze4610us is exactly the same as the Compaq 2100.  There was a working ACPI fix on http://acpi.sourceforge.net/

Compaq Presario 2100 and HP Pavilion ze4610us

http://acpi.sourceforge.net/dsdt/view.php?id=207Last edited by Mattwolf7 on Fri Jul 02, 2004 1:42 pm; edited 1 time in total

----------

## neuron

```

dsdt.dsl  1883:                             Store (Arg2, DAT3)

Error    1014 -    Method argument is not initialized ^  (Arg2)

dsdt.dsl  1883:                             Store (Arg2, DAT3)

Remark   3041 -   Not a parameter, used as local only ^  (Arg2)

```

can anyone help me figure this one out?

the code in question:

```

                    Method (RAMW, 2, NotSerialized)

                    {

                        Acquire (MUTX, 0xFFFF)

                        If (LGreater (Arg0, 0x7F))

                        {

                            Store (Arg2, DAT3)

                        }

                        Store (Arg0, DAT2)

                        Store (Arg1, DAT1)

                        Store (0xBB, CMCD)

                        Store (0x64, Local1)

```

----------

## Quantumstate

 *int2str wrote:*   

> After you unpack the tar.gz file, many directories are going to be all uppercase. You have to rename them all to lowercase.

 

Man, thank you Int2str, and especially Jetblack.

Made changes to my dsdt.dsl, which compiles fine now (excepting the Remark at bottom hereto); only had to add Jetblack's RETURN in 7 places. (IBM Stinkpad A22p)

But after compiling the .hex into the kernel (/usr/src/linux/include/acpi/dsdt_table.h) and rebooting, my dsdt table is unchanged. (tested by re-dumping/disassembling/compiling) This is gentoo kernel 2.6.5-r1, which appears to already have the patch. 

In looking at the drivers/acpi/system.c file, it seemed plausible that the .hex file should actually be named dsdt.h 

(#define ACPI_SYSTEM_FILE_DSDT		"dsdt")

, but this doesn't work either.  I'll try the dynamic method now.

Be advised that on the patch site it says:

After compiling the kernel, prepare your initrd:

 echo -n "INITRDDSDT123DSDT123" >> /boot/initrd # magic signature

 cat DSDT.aml >> /boot/initrd

Version 0.4 for 2.6 kernels also needs an end-signature: 

 echo -n "INITRDDSDT321DSDT321" >> /boot/initrd

I should also note that if you are seeing something like:

dsdt.dsl  5401:                             \_SB.PCI0.CBS0.PWDN ()

Remark   3040 -                         Recursive method call ^  (\_SB.PCI0.CBS0.PWDN)

... don't worry.  

The compiler developer sez:

There's nothing in the ACPI spec that precludes recursive methods.

However, I agree that it is a very scary thing to do.  

For this reason, I have the iASL compiler issue a remark when it detects a recursive method call.

----------

## Quantumstate

OK, it's clear that the corrected dsdt is not compiled into the kernel, but it does work in initrd.  ACPI devices are identified and no apparent errors.

However the klaptop applet is no longer responsive.  Does not respond to right- or left-click; this is what I need to suspend.  Anyone found the answer?

----------

## Quantumstate

OK, just recompiled kdebase & kdeutils, and it works now.

----------

## pjv

Shame on Intel !!!!   :Evil or Very Mad: 

----------

## MighMoS

I feel bad for asking this, but I don't feel right blindly changing things, so I'll ask.  iASL gives me:

```
dsdt.dsl  1767:                     Method (_STA, 0, NotSerialized)

Warning  2019 -                                ^ Not all control paths return a value (_STA)

dsdt.dsl  1767:                     Method (_STA, 0, NotSerialized)

Warning  2026 -                                ^ Reserved method must return a value (_STA)

```

What should it return?  The relavent areas appear to be:

```
                Device (ECP)

                {

                    Name (_HID, EisaId ("PNP0401"))

                    Method (_STA, 0, NotSerialized)

                    {

                        ENFG ()

                        Store (LDLP, LDN)

                        And (OPT1, 0x02, Local0)

                        EXFG ()

                        If (Local0)

                        {

                            If (LPST)

                            {

                                Return (GSTA (LDLP))

                            }

                        }

                        Else

                        {

                            Return (Zero)

                        }

                    }

```

----------

## c_t

Thanks to your GREAT HOWTO I was able to fix the DSDT and to get ACPI completely working on my Samsung X30 Laptop!

Especially the FF-PowerButton-Patch is great! It works perfectly with my gentoo-dev-sources-2.6.7-r9 !!

cya, christoph

----------

## phuber

Thanks for this nice HowTo. I just fixed the compilation errors for my T41p.

I went with 9c and I get some strange output in dmesg:

```
ACPI: Looking for DSDT in initrd ... found (at offset 497877)!

 not found!
```

So I had a look at the patch and the output basically means, that a DSDT was found but it's not valid...

What can I do about that?

EDIT

Ok, I just found the explanation: http://gaugusch.at/kernel.shtml

Starting from Version 0.4 of the patch:

- The DSDT requires an end signature which is the same as the start signature

- the echo command now requires a "-n"

----------

## phuber

Ok, I'm still at the same place where I've been before patching the DSDT. According to dmesg the ECDT can be found.

When I throw the system to S3 and wake it up again, the screen does not turn on again (trying a minimum w/o X, and neither fb nor resolution selection for text consoles).

This is what's written to the log when I go to S3. The only thing that doesn't look so good is this "Back to C!" yet I have no idea what it means. It's been there before patching the DSDT.

```
Jul 12 18:29:50 deadbeef PM: Preparing system for suspend

Jul 12 18:29:50 deadbeef Stopping tasks: =========================|

Jul 12 18:29:50 deadbeef PM: Entering state.

Jul 12 18:29:50 deadbeef hwsleep-0304 [188] acpi_enter_sleep_state: Entering sleep state [S3]

Jul 12 18:29:50 deadbeef Back to C!

Jul 12 18:29:50 deadbeef Warning: CPU frequency out of sync: cpufreq and timingcore thinks of 600000, is 1700000 kHz.

Jul 12 18:29:50 deadbeef PM: Finishing up.

Jul 12 18:29:50 deadbeef ACPI: PCI interrupt 0000:00:1d.0[A] -> GSI 11 (level, low) -> IRQ 11

Jul 12 18:29:50 deadbeef PCI: Setting latency timer of device 0000:00:1d.0 to 64

Jul 12 18:29:50 deadbeef ACPI: PCI interrupt 0000:00:1d.1[B] -> GSI 11 (level, low) -> IRQ 11

Jul 12 18:29:50 deadbeef PCI: Setting latency timer of device 0000:00:1d.1 to 64

Jul 12 18:29:50 deadbeef ACPI: PCI interrupt 0000:00:1d.2[C] -> GSI 11 (level, low) -> IRQ 11

Jul 12 18:29:50 deadbeef PCI: Setting latency timer of device 0000:00:1d.2 to 64

Jul 12 18:29:50 deadbeef ACPI: PCI interrupt 0000:00:1d.7[D] -> GSI 11 (level, low) -> IRQ 11

Jul 12 18:29:50 deadbeef PCI: Setting latency timer of device 0000:00:1d.7 to 64

Jul 12 18:29:50 deadbeef ACPI: PCI interrupt 0000:00:1f.1[A] -> GSI 11 (level, low) -> IRQ 11

Jul 12 18:29:50 deadbeef ACPI: PCI interrupt 0000:00:1f.5[B] -> GSI 11 (level, low) -> IRQ 11

Jul 12 18:29:50 deadbeef PCI: Setting latency timer of device 0000:00:1f.5 to 64

Jul 12 18:29:50 deadbeef PCI: Enabling device 0000:02:01.0 (0000 -> 0003)

Jul 12 18:29:50 deadbeef ACPI: PCI interrupt 0000:02:01.0[A] -> GSI 11 (level, low) -> IRQ 11

Jul 12 18:29:50 deadbeef ACPI: PCI interrupt 0000:02:02.0[A] -> GSI 11 (level, low) -> IRQ 11

Jul 12 18:29:50 deadbeef Restarting tasks...<6>e1000: eth0: e1000_watchdog: NIC Link is Up 100 Mbps Full Duplex

Jul 12 18:29:50 deadbeef MCE: The hardware reports a non fatal, correctable incident occurred on CPU 0.

Jul 12 18:29:50 deadbeef Bank 1: f2000000000001b5

Jul 12 18:29:50 deadbeef done

Jul 12 18:29:50 deadbeef Warning: CPU frequency out of sync: cpufreq and timing core thinks of 600000, is 1700000 kHz.

```

Searching for the _OS Variable, I found the following. Does anyone know what this is doing? It sets some values depending on the Operating System (Note: Windows 2001) but what does that mean for me?

[EDIT] This here http://www.microsoft.com/whdc/system/pnppwr/powermgmt/_OSI-method.mspx explains the 2001 - it means Windows XP - and pointed out the _OSI Method. I didn't see that before [/EDIT]

```
    Scope (\_SB)

    {

        Method (_INI, 0, NotSerialized)

        {

            If (LEqual (\SCMP (\_OS, "Microsoft Windows"), Zero))

            {

                Store (0x01, \W98F)

            }

            Else

            {

                If (CondRefOf (\_OSI, Local0))

                {

                    If (\_OSI ("Windows 2001"))

                    {

                        Store (0x02, \WNTF)

                    }

                }

                Else

                {

                    If (LEqual (\SCMP (\_OS, "Microsoft Windows NT"), Zero))

                    {

                        Store (0x01, \WNTF)

                    }

                    Else

                    {

                        If (LEqual (\SCMP (\_OS, "Microsoft WindowsME: Millennium Edition"), Zero))

                        {

                            Store (0x01, \WMEF)

                            Store (0x01, \W98F)

                        }

                    }

                }

            }

            If (LNot (LLess (\_REV, 0x02)))

            {

                Store (0x01, \H8DR)

            }

            Store (0x01, \OSIF)

            \_SB.PCI0.LPC.MOU.MHID ()

            Store (\SRP0, \_SB.PCI0.RID)

            Store (\SRAG, \_SB.PCI0.AGP.RID)

        }

```

----------

## dambacher

If someone is interested in using a custom dsdt in kernel 2.6.7. I just made a little patch for this.

```

--- linux-2.6.7/drivers/acpi/Kconfig.orig   2004-07-17 10:34:39.000000000 +0200

+++ linux-2.6.7/drivers/acpi/Kconfig   2004-07-17 10:28:11.000000000 +0200

@@ -204,6 +204,23 @@

      If you have a legacy free Toshiba laptop (such as the Libretto L1

      series), say Y.

 

+config ACPI_CUSTOM_TABLE

+   bool "Include Custom ACPI Table"

+   depends on X86

+   depends on ACPI_INTERPRETER

+   default ""

+   help

+     Thist option is to load a custom acpi dsdt table, e.g. for buggy acpi 

+     implementations like on DELL inspiron 5100

+

+config ACPI_CUSTOM_TABLE_FILE

+   string "Custom ACPI Table file to include"

+   depends on ACPI_CUSTOM_TABLE

+   default ""

+   help

+     please enter the full path name to the file wich includes the AmlCode delclaration

+

+

 config ACPI_DEBUG

    bool "Debug Statements"

    depends on ACPI_INTERPRETER

--- linux-2.6.7/drivers/acpi/osl.c.orig   2004-07-17 08:39:55.000000000 +0200

+++ linux-2.6.7/drivers/acpi/osl.c   2004-07-17 10:31:51.000000000 +0200

@@ -55,6 +55,9 @@

     void          *context;

 };

 

+#ifdef CONFIG_ACPI_CUSTOM_TABLE

+#include CONFIG_ACPI_CUSTOM_TABLE_FILE

+#endif

 

 #ifdef ENABLE_DEBUGGER

 #include <linux/kdb.h>

@@ -235,7 +238,14 @@

    if (!existing_table || !new_table)

       return AE_BAD_PARAMETER;

 

+#ifdef CONFIG_ACPI_CUSTOM_TABLE

+   if (strncmp(existing_table->signature, "DSDT", 4) == 0)

+      *new_table = (struct acpi_table_header*)AmlCode;

+   else

+      *new_table = NULL;

+#else

    *new_table = NULL;

+#endif

    return AE_OK;

 }

 

```

It works with my DELL inspiron 5100 custom dsdt.

----------

## X-Drum

 *neuron wrote:*   

> 
> 
> can anyone help me figure this one out?
> 
> the code in question:
> ...

 

i had the same problem try this:

put Store (2, DAT3)

instead of Store (Arg2, DAT3)

now for the compiler this piece of code works!

i hope that it works also for you

bye

 :Wink: 

----------

## tiv

OK, another Compaq Presario 1700T user here.

I did the prescribed steps (including commenting out the blacklist), and finally

this is what I get:

```

Jul 29 23:36:07 backpack tbget-0291: *** Info: Table [DSDT] replaced by host OS

Jul 29 23:36:07 backpack tbrsdt-0227: *** Error: Invalid signature where RSDP in

dicates RSDT/XSDT should be located

Jul 29 23:36:07 backpack RSDT/XSDT signature at 1FFFBABF (1fffbabf) is invalid

Jul 29 23:36:07 backpack tbrsdt-0237: *** Error: Looking for RSDT (RSDP->Rev < 2

)

Jul 29 23:36:07 backpack tbxface-0104: *** Error: acpi_load_tables: Could not lo

ad RSDT: AE_BAD_SIGNATURE

Jul 29 23:36:07 backpack tbxface-0134: *** Error: acpi_load_tables: Could not lo

ad tables: AE_BAD_SIGNATURE

```

Interestingly, if I just comment out the blacklist and don't override the DSDT, it boots up and the (presumably buggy) ACPI works (seemingly) fine.

Any comments on this ?

Thanks,

Tiv

----------

## Cabalist

gmichels,  You have the same problem I have currently with the patch that is supplied in the HOWTO.  

I screwed around with dambacher's patch and am getting an error on line 27.  The error is "Malformed Patch Erro on Line 27: @@ -55,6 +55,9 @@ " I really want the DSDT to be static.  Anyone willing to update the HowTo with new information regarding the 2.6.x kernels?  I will try dambacher's patch some more ( I really like that idea.) but if some other people wouldn't mind sharing thier experiences with it that would be SUPER!   :Laughing: 

----------

## izomorfix

HI, I have a serious problem which is very common, but seems incorrectable:

```

ACPI: PCI Interrupt Routing Table [\_SB_.PCI0._PRT]

ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PCI1._PRT]

 exfldio-0158 [41] ex_setup_region       : Field [NPS2] access width (1 bytes) too large for region [FSEG] (length 0)

 exfldio-0170 [41] ex_setup_region       : Field [NPS2] Base+Offset+Width 6+0+1 is beyond end of region [FSEG] (length 0)

 dswexec-0435 [33] ds_exec_end_op        : [And]: Could not resolve operands, AE_AML_REGION_LIMIT

 psparse-1133: *** Error: Method execution failed [\_SB_.PCI0.PX40.SYS3._STA] (Node c113cc88), AE_AML_REGION_LIMIT

 exfldio-0158 [56] ex_setup_region       : Field [ACPR] access width (1 bytes) too large for region [FSEG] (length 0)

 exfldio-0170 [56] ex_setup_region       : Field [ACPR] Base+Offset+Width 0+0+1 is beyond end of region [FSEG] (length 0)

 psparse-1133: *** Error: [NULL NAME], AE_AML_REGION_LIMIT

 psparse-1133: *** Error: Method execution failed [\ISMI] (Node c7fe5c08), AE_AML_REGION_LIMIT

 psparse-1133: *** Error: Method execution failed [\_SB_.PCI0.PX40.FDC0._STA] (Node c113b988), AE_AML_REGION_LIMIT

 exfldio-0158 [56] ex_setup_region       : Field [ACPR] access width (1 bytes) too large for region [FSEG] (length 0)

 exfldio-0170 [56] ex_setup_region       : Field [ACPR] Base+Offset+Width 0+0+1 is beyond end of region [FSEG] (length 0)

 psparse-1133: *** Error: [NULL NAME], AE_AML_REGION_LIMIT

 psparse-1133: *** Error: Method execution failed [\ISMI] (Node c7fe5c08), AE_AML_REGION_LIMIT

 psparse-1133: *** Error: Method execution failed [\_SB_.PCI0.PX40.LPT_._STA] (Node c113bc08), AE_AML_REGION_LIMIT

 exfldio-0158 [56] ex_setup_region       : Field [ACPR] access width (1 bytes) too large for region [FSEG] (length 0)

 exfldio-0170 [56] ex_setup_region       : Field [ACPR] Base+Offset+Width 0+0+1 is beyond end of region [FSEG] (length 0)

 psparse-1133: *** Error: [NULL NAME], AE_AML_REGION_LIMIT

 psparse-1133: *** Error: Method execution failed [\ISMI] (Node c7fe5c08), AE_AML_REGION_LIMIT

 psparse-1133: *** Error: Method execution failed [\_SB_.PCI0.PX40.ECP_._STA] (Node c113a788), AE_AML_REGION_LIMIT

 exfldio-0158 [56] ex_setup_region       : Field [ACPR] access width (1 bytes) too large for region [FSEG] (length 0)

 exfldio-0170 [56] ex_setup_region       : Field [ACPR] Base+Offset+Width 0+0+1 is beyond end of region [FSEG] (length 0)

 psparse-1133: *** Error: [NULL NAME], AE_AML_REGION_LIMIT

 psparse-1133: *** Error: Method execution failed [\ISMI] (Node c7fe5c08), AE_AML_REGION_LIMIT

 psparse-1133: *** Error: Method execution failed [\_SB_.PCI0.PX40.UAR1._STA] (Node c113a988), AE_AML_REGION_LIMIT

 exfldio-0158 [56] ex_setup_region       : Field [ACPR] access width (1 bytes) too large for region [FSEG] (length 0)

 exfldio-0170 [56] ex_setup_region       : Field [ACPR] Base+Offset+Width 0+0+1 is beyond end of region [FSEG] (length 0)

 psparse-1133: *** Error: [NULL NAME], AE_AML_REGION_LIMIT

 psparse-1133: *** Error: Method execution failed [\ISMI] (Node c7fe5c08), AE_AML_REGION_LIMIT

 psparse-1133: *** Error: Method execution failed [\_SB_.PCI0.PX40.UAR2._STA] (Node c1139488), AE_AML_REGION_LIMIT

 exfldio-0158 [56] ex_setup_region       : Field [ACPR] access width (1 bytes) too large for region [FSEG] (length 0)

 exfldio-0170 [56] ex_setup_region       : Field [ACPR] Base+Offset+Width 0+0+1 is beyond end of region [FSEG] (length 0)

 psparse-1133: *** Error: [NULL NAME], AE_AML_REGION_LIMIT

 psparse-1133: *** Error: Method execution failed [\ISMI] (Node c7fe5c08), AE_AML_REGION_LIMIT

 psparse-1133: *** Error: Method execution failed [\_SB_.PCI0.PX40.IRDA._STA] (Node c1139708), AE_AML_REGION_LIMIT

 exfldio-0158 [41] ex_setup_region       : Field [NPS2] access width (1 bytes) too large for region [FSEG] (length 0)

 exfldio-0170 [41] ex_setup_region       : Field [NPS2] Base+Offset+Width 6+0+1 is beyond end of region [FSEG] (length 0)

 dswexec-0435 [33] ds_exec_end_op        : [And]: Could not resolve operands, AE_AML_REGION_LIMIT

 psparse-1133: *** Error: Method execution failed [\_SB_.PCI0.PX40.PS2M._STA] (Node c1139f88), AE_AML_REGION_LIMIT

 exfldio-0158 [42] ex_setup_region       : Field [MMSZ] access width (1 bytes) too large for region [FSEG] (length 0)

 exfldio-0170 [42] ex_setup_region       : Field [MMSZ] Base+Offset+Width 4+0+1 is beyond end of region [FSEG] (length 0)

 psparse-1133: *** Error: Method execution failed [\_SB_.MEMS] (Node c7fe4d08), AE_AML_REGION_LIMIT

 psparse-1133: *** Error: Method execution failed [\_SB_.MEM1._CRS] (Node c7fe4e08), AE_AML_REGION_LIMIT

  uteval-0158: *** Error: Method execution failed [\_SB_.MEM1._CRS] (Node c7fe4e08), AE_AML_REGION_LIMIT

```

I am desperate, please tell me what to post, dsdt.dsl ,etc

----------

## YR

Gentelmen!

One guestion: can I interpret your frase

>If you are already using an initrd for something, like bootsplash, 

>you can still use this method

   for /boot/initrd-number_of_linux_version.img" ? Or I cannot use initrd IMAGE file for this method?

 :Question: 

----------

## X-Drum

 *YR wrote:*   

> Gentelmen!
> 
> One guestion: can I interpret your frase
> 
> >If you are already using an initrd for something, like bootsplash, 
> ...

 

hi,

if you already have an existing bootsplash setup you can use the "old" initrd image for booting up your system with the new fixed DSDT, simply follow the how-to (append the magic signature and your fixed DSDT at the end of the initrd image) and both DSDT and bootsplash should work

----------

## phuber

These here explain it

- https://forums.gentoo.org/viewtopic.php?p=1310340#1310340 (The blue text)

- http://gaugusch.at/kernel.shtml

=> You can use initrd and a custom dsdt

----------

## truekaiser

i just want to make sure if i should use this guide sence i get the following.

acpi stuff at boot from dmesg

```
ACPI: RSDP (v000 DELL                                      ) @ 0x000fdf00

ACPI: RSDT (v001 DELL    CPi R   0x27d40110 ASL  0x00000061) @ 0x17ff0000

ACPI: FADT (v001 DELL    CPi R   0x27d40110 ASL  0x00000061) @ 0x17ff0400

ACPI: DSDT (v001 INT430 SYSFexxx 0x00001001 MSFT 0x0100000e) @ 0x00000000

ACPI: Subsystem revision 20040326

ACPI: IRQ9 SCI: Edge set to Level Trigger.

ACPI: Interpreter enabled

ACPI: Using PIC for interrupt routing

ACPI: PCI Root Bridge [PCI0] (00:00)

ACPI: PCI Interrupt Routing Table [\_SB_.PCI0._PRT]

ACPI: PCI Interrupt Link [LNKA] (IRQs 9 10 *11)

ACPI: PCI Interrupt Link [LNKB] (IRQs 5 7) *11

ACPI: PCI Interrupt Link [LNKC] (IRQs 9 10 *11)

ACPI: PCI Interrupt Link [LNKD] (IRQs 5 7 9 10 *11)

ACPI: PCI Interrupt Link [LNKE] (IRQs 3 4 5 6 7 9 10 *11 12 14 15)

ACPI: PCI Interrupt Link [LNKH] (IRQs 3 4 5 6 7 9 10 *11 12 14 15)

ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.AGP_._PRT]

ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PCIE._PRT]

ACPI: PCI Interrupt Link [LNKA] enabled at IRQ 11

ACPI: PCI Interrupt Link [LNKD] enabled at IRQ 11

ACPI: PCI Interrupt Link [LNKC] enabled at IRQ 11

ACPI: PCI Interrupt Link [LNKH] enabled at IRQ 11

ACPI: PCI Interrupt Link [LNKB] enabled at IRQ 7

ACPI: PCI Interrupt Link [LNKE] enabled at IRQ 11

PCI: Using ACPI for IRQ routing

ACPI: AC Adapter [AC] (on-line)

ACPI: Battery Slot [BAT0] (battery present)

ACPI: Lid Switch [LID]

ACPI: Power Button (CM) [PBTN]

ACPI: Sleep Button (CM) [SBTN]

ACPI: Processor [CPU0] (supports C1, 8 throttling states)

ACPI: Thermal Zone [THM] (32 C)

ACPI: (supports S0 S1 S3 S4 S4bios S5)
```

and 

```
dmesg | greap ECFL
```

 returns nothing.

the laptop is a dell inspiron 5100 on the a28 bios

----------

## X-Drum

please post a 

```
dmesg | grep DSDT
```

----------

## truekaiser

here you go

```
ACPI: DSDT (v001 INT430 SYSFexxx 0x00001001 MSFT 0x0100000e) @ 0x00000000 
```

----------

## X-Drum

 *truekaiser wrote:*   

> here you go
> 
> ```
> ACPI: DSDT (v001 INT430 SYSFexxx 0x00001001 MSFT 0x0100000e) @ 0x00000000 
> ```
> ...

 

this is the output of the command performed on my laptop:

```
x-drum@Storm ~ $ dmesg | grep DSDT

ACPI: Looking for DSDT in initrd ... found (at offset 160446)!

 found customized DSDT with 16620 bytes!

ACPI: Using customized DSDT

    ACPI-0300: *** Info: Table [DSDT] replaced by host OS
```

i'm running a patched (by me for initrd DSDT support) gentoo-dev-sources-2.6.8-r3, as you see i'm using the fixed DSDT instead of the original DSDT

----------

## MerlinTheWizard

Hi,

no ACPI thermal zone is detected on my ASUS CUSL2-C upon booting. Kernel 2.6.8.1 (ck-sources).

Here is an extract of dmesg:

```
Freeing unused kernel memory: 180k freed

Adding 787144k swap on /dev/hda6.  Priority:-1 extents:1

ACPI: Power Button (FF) [PWRF]

ACPI: Processor [CPU0] (supports C1)

nvidia: module license 'NVIDIA' taints kernel.

ACPI: PCI interrupt 0000:01:00.0[A] -> GSI 11 (level, low) -> IRQ 11

```

Nothing more than the power button is detected...   :Sad: 

Any idea or help here?

----------

## metalPhantom

Hi.

Great Guide!

I am trying to use ACPI on an Acer Travelmate 291LCi laptop.

Everything works except for FAN and THERMAL_ZONE.

During boot-up all ACPI modules are loaded normally.

I fixed my DSDT and I am now using my custom version, but nothing seems to have changed.

Under /proc/acpi the fan and thermal_zone directories have nothing under them.

lsmod indicates that all ACPI modules are running.

acpi -V returns:

Battery 1: charging, 73%, charging at zero rate - will never fully charge.

No support for device type: thermal

  AC Adapter 1: on-line

Anybody have a clue on how to fix this?

Thanks.

----------

## Avatar1983

Hi all,

I have a problem with my Acer Extensa 3001WLMI laptop. I can't read battery and ac adaptor status, i.e. the /proc/acpi/battery and ac_adaptor directories are empty. Everything else works. I've googled and tried all sorts of things to try and diagnose the reason for this, but I've come up empty so far. I've investigated dsdt table, OS name and ecdt. My dsdt table, to be found here dsdt disasembled, had three warnings in it, which I've fixed, and then included the table in the kernel.  This makes no diffrence, nor does setting the acpi_os_name boot parameter, or applying the ecdt workaround. 

What I currently suspect is a seriously broken dsdt, since I can't find a battery device defenition in it at all. However, in windows everything works.

Any help would be greatly appreciated!

Avatar

----------

## truekaiser

well i went as far as extracting a copy and compiling it to see what errors it has and this is what i got.

```

Intel ACPI Component Architecture

ASL Optimizing Compiler / AML Disassembler version 20040715 [Sep 11 2004]

Copyright (C) 2000 - 2004 Intel Corporation

Supports ACPI Specification Revision 2.0c

dsdt.dsl   518:     Method (\_WAK, 1, NotSerialized)

Warning  2026 -                 ^ Reserved method must return a value (_WAK)

dsdt.dsl  1204:                 Method (_S0D, 0, NotSerialized)

Warning  2033 -      Unknown reserved name ^  (_S0D)

dsdt.dsl  1246:                 Method (_S0D, 0, NotSerialized)

Warning  2033 -      Unknown reserved name ^  (_S0D)

dsdt.dsl  1300:                 Method (_S0D, 0, NotSerialized)

Warning  2033 -      Unknown reserved name ^  (_S0D)

dsdt.dsl  1342:                 Method (_S0D, 0, NotSerialized)

Warning  2033 -      Unknown reserved name ^  (_S0D)

dsdt.dsl  2117:                     Return (Package (0x00) {})

Warning  2018 -    Effective AML package length is zero ^ 

ASL Input:  dsdt.dsl - 2362 lines, 67867 bytes, 996 keywords

AML Output: DSDT.aml - 9279 bytes 401 named objects 595 executable opcodes

Compilation complete. 0 Errors, 6 Warnings, 0 Remarks, 228 Optimizations
```

just wondering what to do here on the other five then the wak one(guesing that i should remove the \

----------

## YR

Thank's, BUT  need I KERNEL PATCH for "Read DSDT from initrd" enable in kernel config for THIS (BOOTSPLASH loading) method? Or in this case kernel recompiling is not necessarily?

 *phuber wrote:*   

> These here explain it
> 
> - https://forums.gentoo.org/viewtopic.php?p=1310340#1310340 (The blue text)
> 
> - http://gaugusch.at/kernel.shtml
> ...

 

----------

## Clansman

 *Avatar1983 wrote:*   

> Hi all,
> 
> I have a problem with my Acer Extensa 3001WLMI laptop. I can't read battery and ac adaptor status, i.e. the /proc/acpi/battery and ac_adaptor directories are empty. Everything else works. I've googled and tried all sorts of things to try and diagnose the reason for this, but I've come up empty so far. I've investigated dsdt table, OS name and ecdt. My dsdt table, to be found here dsdt disasembled, had three warnings in it, which I've fixed, and then included the table in the kernel.  This makes no diffrence, nor does setting the acpi_os_name boot parameter, or applying the ecdt workaround. 
> 
> What I currently suspect is a seriously broken dsdt, since I can't find a battery device defenition in it at all. However, in windows everything works.
> ...

 

hello!

i'm facing the EXACT SAME PROBLEM, no battery/ac readings. the difference is that mine is a travelmate 4001WLMi.

after solving the 3 warnings by dsdt had, the computer booted with no change EXCEPT for a very noisy fan (which i had never heard before) that was kept on at all times, even after reboots. (i had to power off and remove battery to get rid of it)

i'm out of ideas... can anybody help me/us?

[]

----------

## Avatar1983

I've now worked out what the problem is on Acer Extensa 3001 and TravelMate 4001. They have what is called a smart battery system, which linux does not support yet. This means that there is currently no way to read battery and ac adaptor status on these laptops. Here is an extract from an email I got in reply to my query on the acpi-devel list:

 *Quote:*   

> 
> 
> Hi, 
> 
> I did look at the spec. Basically we need two drivers for your issue.
> ...

 

So I guess there is nothing we can do for now.

Avatar

----------

## Clansman

ok. we're stuck then. thanks for the information.

[]

 *Avatar1983 wrote:*   

> I've now worked out what the problem is on Acer Extensa 3001 and TravelMate 4001. They have what is called a smart battery system, which linux does not support yet. This means that there is currently no way to read battery and ac adaptor status on these laptops. Here is an extract from an email I got in reply to my query on the acpi-devel list:
> 
>  *Quote:*   
> 
> Hi, 
> ...

 

----------

## kwenspc

hello,

I've tried this trick on a 2.6.8-r3 kernel and it seems to work (though it didn't change anything for me except that acpi_power_off is working now)

Inspiron 5100

BIOS A31 -> 6 warnings on dsdt

```

dsdt.dsl   518:     Method (\_WAK, 1, NotSerialized)

Warning  2026 -                 ^ Reserved method must return a value (_WAK)

                                

dsdt.dsl  1204:                 Method (_S0D, 0, NotSerialized)

Warning  2033 -      Unknown reserved name ^  (_S0D)

                                

dsdt.dsl  1246:                 Method (_S0D, 0, NotSerialized)

Warning  2033 -      Unknown reserved name ^  (_S0D)

                                

dsdt.dsl  1300:                 Method (_S0D, 0, NotSerialized)

Warning  2033 -      Unknown reserved name ^  (_S0D)

                                

dsdt.dsl  1342:                 Method (_S0D, 0, NotSerialized)

Warning  2033 -      Unknown reserved name ^  (_S0D)

                                

dsdt.dsl  2117:                     Return (Package (0x00) {})

Warning  2018 -    Effective AML package length is zero ^

```

first and last warnings are known.

For _S0D method i'v just put comments on these lines :

```

/*Method (_S0D, 0, NotSerialized)

                {

                    Store (SMI (0x85, 0x00), Local0)

                    And (Local0, 0x01, Local0)

                    If (LEqual (Local0, 0x00))

                    {

                        Return (0x03)

                    }

                    Else

                    {

                        Return (0x00)

                    }

                }*/

```

And then, after recompiling kernel and rebooting :

```

# dmesg | grep DSDT

ACPI: DSDT (v001 INT430 SYSFexxx 0x00001001 MSFT 0x0100000e) @ 0x00000000

    ACPI-0291: *** Info: Table [DSDT] replaced by host OS

```

Infortunetly, Inspiron 5100 (like 5150) doesn't have working ACPI 

i have these functions :

-power off  (new!)

- thermal 

- battery

- ac adapter

but always :

no Lid (it is the most important for me...snifff)

no sleep button 

no fan

It seems that the problem is not resolved already 

link : http://bugme.osdl.org/show_bug.cgi?id=1752

 :Confused: 

ps : my english is bad, i apologize. (i'm french)

----------

## hiroki

once upon a time... i HAD a running system with ACPI and corrected DSDT. I'm using an ASUS M6800N laptop. everything was fine until I (today) upgraded my RAM! so, does upgrading RAM (from 512 to 768) change the dsdt and make all my previous reparations useless? do i really have to redo all the stuff with correcting my dsdt???

by the way. i already started correcting.. but then the following kind of error appears severyl times, how can i fix it? (if possible...  :Rolling Eyes:  )

```
dsdt.dsl  3018:                                 If (BATS ())

Error    1031 -                Internal compiler error ^  (Missing alias link)

```

desperate hiroki

----------

## inode77

To jetblack:

The acpi patch 20040816 from acpi.sourceforge has a dsdt override patch already included next to some other benefits compared to std linux-2.6.8-gentoo-r3 acpi. Maybe it would be a good idea to add this to your howto section 9.

----------

## baeksu

I don't know if this issue has come up for anyone else, but there seems to be some problems with the static dsdt override and compiling acpi parts as modules.

 It seems that compiling acpi parts as modules works only when using dsdt override from the initrd. If you use static dsdt overrise (i.e. compiled into the kernel), at least I needed to change my config to compile the acpi parts into the kernel as well (meaning not as modules) to get a working acpi.

 I don't know if I'm the only one who encountered this issue, or even if I just made some mix up myself. I have a Samsung X10, and am using a vanilla 2.6.7 kernel.

----------

## Sgeorg

Hi folks!

Have curred my my Ibm R51 from it's dstd illness, three bugs/compiling errors in the dsdt, how could ibm compile that thing without noticing anything? 

But have one problem left, there is no fan, there was no fan and fan doesn't work right, not that it did ever before.

So does anybody now how to hack in a fan controll in the dsdt, since there is none!

Thanks

Georg

PS: had read a few threads in the forum about ibm fan controll, but none of them satisfied my needs.

----------

## spqr

Hi, I have two problems:

1. Finding the right initrd patch for my kernel

The list of initrd patches in the HOWTO does not include a 2.6.8 patch. Can I find one somewhere? If not, will either the 2.6.7 or 2.6.9 patches work on my 2.6.8 kernel? Finally, do I even need an initrd patch since I am using Mandrake (the initrd patch page mentions something about Mandrake 9.2. already having integrated the patch).

2. A "Looking in initrd for dsdt...not found!" error on boot

Yes, after having spent days installing acpi, acpid, the acpi patch, recompiling my kernel and debugging my dsdt, I suddenly realised that my system has never been able to find my dsdt in initrd.

1st question is: 

Does this error mean that dsdt hasn't been found at all, or that it has been found in another place (say in /proc/acpi/dsdt, which I can actually see). I'm saying this because my ACPI works almost completely except for the fan and it would seem odd for ACPI to work with no dsdt table.

2nd question:

If the error truly means that the system can't find the DSDT, how can Ihelp it find it. (as I said it's in proc/acpi: I can see it and I can manipulate it)

Thanks!

----------

## spqr

I think I've got the answer to part 2. Should go like this:

Normally, the BIOS provides the DSDT.

But if you compile "read dsdt from initrd" into the kernel, the system bypasses the BIOS and goes looking for the DSDT in initrd

However, if it does not find a DSDT in initrd, it goes back to the BIOS and gets it there.

If my reasoning is correct, I have a DSDT...I just need to find a way to get the corrected version into my initrd. If somebody has any info about the initrdpatch I am searching for that will help a bunch. Otherwise I think I will have to compile the new DSDT statically.    

Thanks again!

----------

## Sgeorg

Here's the link for the patches

http://gaugusch.at/kernel.shtml

btw it's in THIS tutorial (FIRST PAGE)!!!!!!!!!!!

as far as I'm aware of there are no other sites that provide this kind of patches, so use the kernels or the patches which match together.

the alternative is to try to patch the wrong versions together and be lucky or not --> patch works or it doesn't, give it a try!

but be warned the exact definition of the version of kernels and the patches isn't for nothing.  (but you only lose some time playing around)

but keep an working kernel, if you don't want to use the livecd to recompile an working one

GEorg

----------

## spqr

Thanks Sgeorg,

I was aware of the link but I was looking for the 2.6.8 version of the patch which unfortunately does not exist.

So I tried with the 2.6.7 and 2.6.9 patches. Neither of them compiled "out if the box", so I looked inside the patches and tried to apply the modifications manually to each of my  files. The modifications in the 2.6.9 patch would not compile, but the ones in the 2.6.7 patch did. 

I'm now able to use custom dsdts. 

The problem is that although I have a clean dsdt, my fan still won't work (and my proc/acpi/fan directory is still empty).

There are no references to Microsoft in my dsdt and no Embedded Controller errors on boot. The only error that I have in /var/log/messages is

evregion-0347: *** Error: Handler for [SystemMemory] returned AE_NO_MEMORY

psparse-1133: *** Error: Method execution failed [\_SB_.ACAD._PSR] (Node dbe97ea8), AE_N 

Could this be the cause of my problem?

It looks an awful lot like the ECDT error in the Howto, except that [Embedded Control] has been replaced by [System Memory]

The acpi.sourceforge page mentions something about  DSDTs only being abe to work for a specific System Memory. It says you should go inside your dsdt and apply the Sysytem Memory value relevant to your computer. I'm not sure how to do that: although "SystemMemory" appears a couple times in my dsdt, there is never anything like "SystemMemory=X". The value is never set, so how could I change it?

If System Memory is no the problem, I have one more idea. I could be missing a method for my fan in my dsdt. Indeed, the word "fan" only appears in the DSDT's initial list of "Embedded Control" values. There is no actual method that addreses it.

Please let me know if you have any ideas.

----------

## Sgeorg

the problem is, if there is no fan controll in dsdt than there is none in acpi!

that's the same problem on my ibm r51 there is no fan controll in dsdt.

(fan controll is HW, and scpi needs an interface, ports or mem adr. to interface the fan controll)

the sysmemory, don't know, don't have this problem, but since sysmem is changeable (at least in size) it would be read out from bios I think, so "sysmem = x"  wouldn't be the wisest idea.

hm, ideas, it's thing of testing probing and mainly a matter of time!

Georg

ps: don't really have a clue now, sorry!

----------

## spqr

Right, so you seem to agree: there's no method in the dsdt that  describes the fan, which explains why the latter does not get picked up by ACPI. 

I'm wondering how that can be since I took the dsdt from the list of "corrected" tables at acpi.sorceforge...but I guess the dsdts listed there have just been "improved", as opposed to perfected.

Anyway, at this point my question would be: are there ANY laptops whose fans work well with linux ACPI??  My fan is on at max speed all the time and the sound is just unbearable. Having tried everything I possibly could to get my fan to work on my laptop (short of creating a new method in my dsdt which I'm not qualified to do), I'm seriously considering selling it and buying another one...but which one?

Thanks again for your help Georg.

----------

## Neo_0815

Hi,  i also want to change my dsdt ... i patched my kernel, recompiled my dsdt and at next boot i only got:

```

PCI: Using configuration type 1

   tbget-0271: *** Info: Table [DSDT] replaced by host OS

```

But there are some lines missing ...  somthing like:

```

tbxface-0099 [03] Acpi_load_tables      : ACPI Tables successfully loaded

Parsing Methods:..........................................................................................................................................................................................................................

Table [DSDT] - 672 Objects with 58 Devices 218 Methods 23 Regions

ACPI Namespace successfully loaded at root c02f3dfc

evxfevnt-0076 [04] Acpi_enable           : Transition to ACPI mode successful

Executing all Device _STA and_INI methods:..........................................................

58 Devices found containing: 58 _STA, 5 _INI methods

Completing Region/Field/Buffer/Package initialization:.......................................................................

Initialized 15/23 Regions 0/0 Fields 28/28 Buffers 28/28 Packages (672 nodes)

```

Instead i only get ACPI enabled after that and all things going wrong - of cause, i think it isnt initialized all stuff - am i wrong or right?

And what to do now ? What have i done wrong ? 

best regards

----------

## X-Drum

hi,

are u sure that the recompiled DSDT it's working?

(that the stuff you have fixed in your DSDT is correct?)

----------

## Neo_0815

 *X-Drum wrote:*   

> hi,
> 
> are u sure that the recompiled DSDT it's working?
> 
> (that the stuff you have fixed in your DSDT is correct?)

 

Well lets give u some more infos.

I am still new to this field and still learning how to patch my dsdt in the right way, reading the acpi 2.0c spec takes a little bit, it a very big paper.

So well, i've go a Samsung P35 XVM 1600 rev3, and thats the original dsdt its shipped with:

http://www.imn.htwk-leipzig.de/~tkrah/dsdt.dsl

So throtteling doesnt work ( it show off in /proc when using my own dsdt - but thermal zone and other things are gone then ), and there are 3 errors in it:

```

Intel ACPI Component Architecture

ASL Optimizing Compiler / AML Disassembler version 20040715 [Nov 17 2004]

Copyright (C) 2000 - 2004 Intel Corporation

Supports ACPI Specification Revision 2.0c

dsdt.dsl   207:                     If (LOr (PWRS, Not (CondRefOf (_PSS, Local0))))

Error    1022 -                                 Object does not exist ^  (_PSS)

dsdt.dsl  2997:                     Method (_Q0D, 0, NotSerialized)

Warning  2019 -                                ^ Not all control paths return a value (_Q0D)

dsdt.dsl  4712:                         Notify (\_SB.PCI0.IDEC, 0x00)

Error    1078 -                       From ACPI CA Subsystem ^  (AE_BAD_PARAMETER Internalizing new NamePath)

ASL Input:  dsdt.dsl - 5021 lines, 170118 bytes, 2347 keywords

Compilation complete. 2 Errors, 1 Warnings, 0 Remarks, 499 Optimizations

```

So i looked for these erros and fixed the lines as following:

before line 207 i added a: 

```

  External (\_PSS)

               If (LOr (PWRS, Not (CondRefOf (\_PSS, Local0))))

```

Next Change was that on Line 2997 the warning, in first if statement there a return so i turned one return statement also in the non if block:

```
                        Store (SWSM (0x8F, Add (TNXT, 0x80)), TNXT)

                        Notify (\_SB.ATKD, Add (DNXT, 0x60))

                           Return (0x00)

```

And the second error i think can be solved, when changing Naming index to the right one, on adress 0x00 there the following:

```

 Notify (\_SB.PCI0.IDEC.PRID, 0x00)

```

 and not  Notify (\_SB.PCI0.IDEC, 0x00) - if u look this section a few lines after, u see what i am meaning.

Patched Version:

http://www.imn.htwk-leipzig.de/~tkrah/dsdt.dsl.patched

When i compile it there no errors and all does fine, but on reboot following errors are showing:

I think u read it for yourself - my dmesg 'Output:

http://www.imn.htwk-leipzig.de/~tkrah/dmesg.error

I hope u can help me  :Smile: .

best regards

----------

## KageKeeper

Hi all...

Trying to compile the iasl as per intels instructions. I cd into compiler and type make and I get this error: 

```

tux compiler # make

bison -v -d -y -pAslCompiler aslcompiler.y

conflicts: 57 shift/reduce, 50 reduce/reduce

aslcompiler.y:913.7-81: warning: rule never reduced because of conflicts: TermArg: Type2IntegerOpcode

aslcompiler.y:914.7-81: warning: rule never reduced because of conflicts: TermArg: Type2StringOpcode

aslcompiler.y:915.7-81: warning: rule never reduced because of conflicts: TermArg: Type2BufferOpcode

aslcompiler.y:916.7-81: warning: rule never reduced because of conflicts: TermArg: Type2BufferOrStringOpcode

aslcompiler.y:958.7-82: warning: rule never reduced because of conflicts: OptionalParameterTypePackage: ','

aslcompiler.y:981.7-82: warning: rule never reduced because of conflicts: OptionalParameterTypesPackage: ','

aslcompiler.y:1572.7-38: warning: rule never reduced because of conflicts: CaseTermList: CaseTerm

aslcompiler.y:1581.7-38: warning: rule never reduced because of conflicts: DefaultTermList: CaseTerm

aslcompiler.y:3062.37-48: warning: rule never reduced because of conflicts: OptionalResourceType: /* empty */

cp y.tab.c aslcompilerparse.c

cp y.tab.h aslcompiler.y.h

gcc -Wall -O2 -Wstrict-prototypes -D_LINUX -D_ACPI_ASL_COMPILER -I../include    -c -o aslcompilerparse.o aslcompilerparse.c

aslcompiler.y: In function `AslCompilerparse':

aslcompiler.y:953: error: parse error before '}' token

make: *** [aslcompilerparse.o] Error 1

```

Any ideas?

Thanks!

----------

## liber!

Got the same error...

Go looking to aslcompiler.y and add on line 953:

original code:

```

952        ParameterTypePackageList 

953      '}'                           {$$ = $2}

954 ;

```

add a ;

```

953      '}'                           {$$ = $2;}
```

Now it works... 

greets,

Nathan

----------

## liber!

I got also a problem: 

```

dsdt.dsl   536:                         If (LNot (LEqual (And (PDC1, 0x0A), 0x0A)))

Error    1022 -                             Object does not exist ^  (PDC1)

```

I first had 2 errors, but I fixed one allready, but I can't find a solution for this error.

I've looked for other instances of PDC1 and things that look like it, but found none....

This is on a Promedion M120W laptop. ACPI basicly works, except that the cpu throttle is set to 600MHz when using battery power and it isn't user controlable.... 

It contains  a Intel Pentium M 725 cpu.

Greets,

Nathan

----------

## KageKeeper

 *liber! wrote:*   

> Got the same error...
> 
> Go looking to aslcompiler.y and add on line 953:
> 
> original code:
> ...

 

Thanks! That did it!

----------

## KageKeeper

Ok..I am attempting to apply the patches and I decided to go with the initrd method. 

One problem. I am supposed to have this in my 2.6.9-r6 kernel:

```
Power management options (ACPI, APM) --->

    ACPI (Advanced Configuration and Power Interface) Support --->

        [*] Read DSDT from initrd 
```

And I do not. Can anyone tell me why? I am using gentoo-dev-sources.

Thanks.. :Smile: 

----------

## liber!

Got the same problem with nitro 2.6.9-r4 sources....

But when I look into Kconfig it's there...

maybe I should try a make clean???

Greets,

Nathan

----------

## liber!

Nope, make clean doesn't help.

----------

## KageKeeper

Well it has me baffled. I saw on another website concerning ACPI, someone was talking about kernel config, he was using 2.6.9 and he had some options I also did not have.

I have no idea where to get them, and I hesitate to post in the Kernel section as I do not want to get nailed for cross-posting. So yeah. Anyone have ANY ideas?

Thanks!

----------

## KageKeeper

 *liber! wrote:*   

> Got the same problem with nitro 2.6.9-r4 sources....
> 
> But when I look into Kconfig it's there...

 

And if I may ask, what is Kconfig?

----------

## liber!

Found it.

For initrd:

Enable CONFIG_BLK_DEV_INITRD

For in kernel (this patches're in the nitro patch set, you just have to set it in the kernel...):

Disable CONFIG_STANDALONE

Greets,

Nathan

----------

## liber!

 *KageKeeper wrote:*   

>  *liber! wrote:*   Got the same problem with nitro 2.6.9-r4 sources....
> 
> But when I look into Kconfig it's there... 
> 
> And if I may ask, what is Kconfig?

 

Kconfig is where make menuconfig gets the data from (the help, the options). But it doesn't matter, it's okay...

Greets,

Nathan

----------

## KageKeeper

 *liber! wrote:*   

> Found it.
> 
> For initrd:
> 
> Enable CONFIG_BLK_DEV_INITRD
> ...

 

This give me a different option, but not this:

```
Power management options (ACPI, APM) --->

    ACPI (Advanced Configuration and Power Interface) Support --->

        [*] Read DSDT from initrd
```

The options I get from your solution, I believe allows me to do the first option of including the dsdt in the kernel as opposed in the initrd. That presents a new problem as the link to the dsdt override patch is for a 2.4 series kernel.

----------

## liber!

 *KageKeeper wrote:*   

>  *liber! wrote:*   Found it.
> 
> For initrd:
> 
> Enable CONFIG_BLK_DEV_INITRD
> ...

 

If you get that option, the patches're already applied for you (by gentoo in your source)...

B.T.W. For the initrd to work, you still need to patch, there're patches from http://gaugusch.at/kernel.shtml that work with 2.6.9...

Greets,

Nathan

----------

## KageKeeper

Oy. Sometimes I wonder if my brain is fully engaged..  :Laughing: 

I applied the patch from  here, and THEN that option appeared. Doh!

Sorry for the needless posts....

Anyway, I am now compiling and we will see if my new and improved DSDT table fixes my ACPI probs..*keeps fingers crossed*

----------

## KageKeeper

Well...

I had to compile the DSDT statically as for some reason putting it in the initrd as per the instructions caused a kernel panic at boot.

I am not sure if it is loading the fixed DSDT as none of my previous issues are fixed. Here is some info:

```
tux ~ # dmesg | grep ACPI

 BIOS-e820: 000000001bef0000 - 000000001beff000 (ACPI data)

 BIOS-e820: 000000001beff000 - 000000001bf00000 (ACPI NVS)

ACPI: RSDP (v000 ARIMA                                 ) @ 0x000f7910

ACPI: RSDT (v001 PTLTD    RSDT   0x06040000  LTP 0x00000000) @ 0x1befb1c3

ACPI: FADT (v001 ARIMA  W730-K7  0x06040000 PTL_ 0x000f4240) @ 0x1befedf7

ACPI: SSDT (v001 PTLTD  POWERNOW 0x06040000  LTP 0x00000001) @ 0x1befee6b

ACPI: DSDT (v001 ARIMA  W730-K7  0x06040000 MSFT 0x0100000d) @ 0x00000000

ACPI: PM-Timer IO Port: 0x8008

ACPI: Overriding _OS definition Microsoft Windows XP

ACPI: Looking for DSDT in initrd... not found.

    ACPI-0291: *** Info: Table [DSDT] replaced by host OS

ACPI: IRQ9 SCI: Edge set to Level Trigger.

ACPI: Subsystem revision 20040816

ACPI: Interpreter enabled

ACPI: Using PIC for interrupt routing

ACPI: PCI Root Bridge [PCI0] (00:00)

ACPI: PCI Interrupt Routing Table [\_SB_.PCI0._PRT]

ACPI: PCI Interrupt Link [LNK0] (IRQs 3 4 5 6 7 10 11 12) *0, disabled.

ACPI: PCI Interrupt Link [LNK1] (IRQs 3 4 5 6 7 10 *11 12)

ACPI: PCI Interrupt Link [LNK2] (IRQs 3 4 5 6 7 *10 11 12)

ACPI: PCI Interrupt Link [LNK3] (IRQs 3 4 5 6 7 10 *11 12)

ACPI: PCI Interrupt Link [LNK4] (IRQs 3 4 5 6 7 10 11 12) *0, disabled.

ACPI: PCI Interrupt Link [LNK5] (IRQs 3 4 5 6 7 10 11 12) *0, disabled.

ACPI: PCI Interrupt Link [LNK6] (IRQs 3 4 *5 6 7 10 11 12)

ACPI: PCI Interrupt Link [LNK7] (IRQs 3 4 5 6 7 10 *11 12)

ACPI: PCI Interrupt Link [LNK8] (IRQs 3 4 5 6 7 10 11 12) *0, disabled.

ACPI: Embedded Controller [EC] (gpe 24)

ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.AGP_._PRT]

PCI: Using ACPI for IRQ routing

ACPI: PCI Interrupt Link [LNK7] enabled at IRQ 11

ACPI: PCI interrupt 0000:00:08.0[A] -> GSI 11 (level, low) -> IRQ 11

ACPI: PCI Interrupt Link [LNK6] enabled at IRQ 5

ACPI: PCI interrupt 0000:00:09.0[A] -> GSI 5 (level, low) -> IRQ 5

ACPI: PCI Interrupt Link [LNK2] enabled at IRQ 10

ACPI: PCI interrupt 0000:00:0a.0[A] -> GSI 10 (level, low) -> IRQ 10

ACPI: PCI interrupt 0000:00:0a.1[A] -> GSI 10 (level, low) -> IRQ 10

ACPI: PCI interrupt 0000:00:0c.0[A] -> GSI 10 (level, low) -> IRQ 10

ACPI: PCI Interrupt Link [LNK1] enabled at IRQ 11

ACPI: PCI interrupt 0000:00:0d.0[A] -> GSI 11 (level, low) -> IRQ 11

ACPI: PCI interrupt 0000:00:0d.1[B] -> GSI 11 (level, low) -> IRQ 11

ACPI: PCI interrupt 0000:00:0d.2[C] -> GSI 11 (level, low) -> IRQ 11

ACPI: PCI Interrupt Link [LNK3] enabled at IRQ 11

ACPI: PCI interrupt 0000:00:0e.0[A] -> GSI 11 (level, low) -> IRQ 11

ACPI: PCI interrupt 0000:00:10.0[A]: no GSI

ACPI: PCI interrupt 0000:01:05.0[A] -> GSI 10 (level, low) -> IRQ 10

apm: overridden by ACPI.

ACPI: PCI interrupt 0000:01:05.0[A] -> GSI 10 (level, low) -> IRQ 10

ACPI: PCI interrupt 0000:01:05.0[A] -> GSI 10 (level, low) -> IRQ 10

ACPI: AC Adapter [AC] (off-line)

ACPI: Battery Slot [BAT0] (battery present)

ACPI: Power Button (FF) [PWRF]

ACPI: Sleep Button (FF) [SLPF]

ACPI: Lid Switch [LID]

ACPI: Processor [CPU0] (supports C1 C2)

ACPI: Thermal Zone [THRM] (59 C)

ACPI: PCI interrupt 0000:00:09.0[A] -> GSI 5 (level, low) -> IRQ 5

ACPI: PCI interrupt 0000:00:10.0[A]: no GSI

powernow: Trying ACPI perflib

ACPI: PCI interrupt 0000:00:0e.0[A] -> GSI 11 (level, low) -> IRQ 11

ACPI: PCI interrupt 0000:00:08.0[A] -> GSI 11 (level, low) -> IRQ 11

ACPI: PCI interrupt 0000:00:0a.0[A] -> GSI 10 (level, low) -> IRQ 10

ACPI: PCI interrupt 0000:00:0a.1[A] -> GSI 10 (level, low) -> IRQ 10

ACPI: PCI interrupt 0000:00:0d.0[A] -> GSI 11 (level, low) -> IRQ 11

ACPI: PCI interrupt 0000:00:0d.1[B] -> GSI 11 (level, low) -> IRQ 11

ACPI: PCI interrupt 0000:00:0d.2[C] -> GSI 11 (level, low) -> IRQ 11

ACPI: PCI interrupt 0000:00:0c.0[A] -> GSI 10 (level, low) -> IRQ 10

```

Does this

```
ACPI-0291: *** Info: Table [DSDT] replaced by host OS
```

 mean that is is loading the 'fixed'DSDT?

If so, then it did not do any good as I still have the same issues as before.

Any thoughts?

[EDIT] Here is a link to the post describing my . [EDIT]

----------

## Neo_0815

My dsdt is working now, my changes are correct - but actual Version of iasl is broken, u have to use ol 2003 Version and all things doing fine - throtteling and some other things are working now - no errors anymore.

Now i can tune my thermal zone parameters  :Wink:  nice - lets c if it works ^^.

best regards

----------

## KageKeeper

No one has any thoughts on my issues eh? No one at all? Darn...

----------

## liber!

Hello,

Ok, I have solved my dsdt compile problems, incorporated it in the kernel, but it seems that acpi only can choose between two processor speeds: 600MHz and 1600Mhz, userspace governator stands standard on... But has anyone an idea how I can get other speeds to work?

Greets,

NathanLast edited by liber! on Mon Nov 29, 2004 4:52 pm; edited 1 time in total

----------

## Neo_0815

 *KageKeeper wrote:*   

> No one has any thoughts on my issues eh? No one at all? Darn...

 

youre right, this meant that table is replaced - i u still have problems, r u sure  u fixed all right? 

Try older compiler, not the 2k4 one.

best regards

----------

## liber!

The scaling_available_frequencies is read only, and when I change it to rw, and I echo something to this, my terminal freezes (the rest still works)... 

When I later check what's in scaling_available_frequencies it's the same value as before (1600000 600000).

Greets,

Nathan

----------

## KageKeeper

 *Neo_0815 wrote:*   

>  *KageKeeper wrote:*   No one has any thoughts on my issues eh? No one at all? Darn... 
> 
> youre right, this meant that table is replaced - i u still have problems, r u sure  u fixed all right? 
> 
> Try older compiler, not the 2k4 one.
> ...

 

Any idea where to get an older compiler? All I can find is the latest version...

Thanks:)

----------

## Neo_0815

 *KageKeeper wrote:*   

>  *Neo_0815 wrote:*    *KageKeeper wrote:*   No one has any thoughts on my issues eh? No one at all? Darn... 
> 
> youre right, this meant that table is replaced - i u still have problems, r u sure  u fixed all right? 
> 
> Try older compiler, not the 2k4 one.
> ...

 

Look there:

http://de.wikibooks.org/wiki/Asus_M6N-Kompendium:_ACPI

There u find this Link: 

http://developer.intel.com/technology/iapc/acpi/downloads/iasl-linux-20030918.tar.gz

Have Fun, it works for me.

best regards

----------

## KageKeeper

Well, I tried that compiler, loaded the new DSDT table, and still no help. I have the same issues... :Sad: 

Maybe if someone looked at this they might see something I don't?:

```
tux ~ # dmesg | grep ACPI

ACPI: RSDP (v000 ARIMA                                 ) @ 0x000f7910

ACPI: RSDT (v001 PTLTD    RSDT   0x06040000  LTP 0x00000000) @ 0x1befb1c3

ACPI: FADT (v001 ARIMA  W730-K7  0x06040000 PTL_ 0x000f4240) @ 0x1befedf7

ACPI: SSDT (v001 PTLTD  POWERNOW 0x06040000  LTP 0x00000001) @ 0x1befee6b

ACPI: DSDT (v001 ARIMA  W730-K7  0x06040000 MSFT 0x0100000d) @ 0x00000000

ACPI: PM-Timer IO Port: 0x8008

ACPI: Overriding _OS definition Microsoft Windows XP

    ACPI-0291: *** Info: Table [DSDT] replaced by host OS

ACPI: IRQ9 SCI: Edge set to Level Trigger.

ACPI: Subsystem revision 20040816

ACPI: Interpreter enabled

ACPI: Using PIC for interrupt routing

ACPI: PCI Root Bridge [PCI0] (00:00)

ACPI: PCI Interrupt Routing Table [\_SB_.PCI0._PRT]

ACPI: PCI Interrupt Link [LNK0] (IRQs 3 4 5 6 7 10 11 12) *0, disabled.

ACPI: PCI Interrupt Link [LNK1] (IRQs 3 4 5 6 7 10 *11 12)

ACPI: PCI Interrupt Link [LNK2] (IRQs 3 4 5 6 7 *10 11 12)

ACPI: PCI Interrupt Link [LNK3] (IRQs 3 4 5 6 7 10 *11 12)

ACPI: PCI Interrupt Link [LNK4] (IRQs 3 4 5 6 7 10 11 12) *0, disabled.

ACPI: PCI Interrupt Link [LNK5] (IRQs 3 4 5 6 7 10 11 12) *0, disabled.

ACPI: PCI Interrupt Link [LNK6] (IRQs 3 4 *5 6 7 10 11 12)

ACPI: PCI Interrupt Link [LNK7] (IRQs 3 4 5 6 7 10 *11 12)

ACPI: PCI Interrupt Link [LNK8] (IRQs 3 4 5 6 7 10 11 12) *0, disabled.

ACPI: Embedded Controller [EC] (gpe 24)

ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.AGP_._PRT]

PCI: Using ACPI for IRQ routing

ACPI: PCI Interrupt Link [LNK7] enabled at IRQ 11

ACPI: PCI interrupt 0000:00:08.0[A] -> GSI 11 (level, low) -> IRQ 11

ACPI: PCI Interrupt Link [LNK6] enabled at IRQ 5

ACPI: PCI interrupt 0000:00:09.0[A] -> GSI 5 (level, low) -> IRQ 5

ACPI: PCI Interrupt Link [LNK2] enabled at IRQ 10

ACPI: PCI interrupt 0000:00:0a.0[A] -> GSI 10 (level, low) -> IRQ 10

ACPI: PCI interrupt 0000:00:0a.1[A] -> GSI 10 (level, low) -> IRQ 10

ACPI: PCI interrupt 0000:00:0c.0[A] -> GSI 10 (level, low) -> IRQ 10

ACPI: PCI Interrupt Link [LNK1] enabled at IRQ 11

ACPI: PCI interrupt 0000:00:0d.0[A] -> GSI 11 (level, low) -> IRQ 11

ACPI: PCI interrupt 0000:00:0d.1[B] -> GSI 11 (level, low) -> IRQ 11

ACPI: PCI interrupt 0000:00:0d.2[C] -> GSI 11 (level, low) -> IRQ 11

ACPI: PCI Interrupt Link [LNK3] enabled at IRQ 11

ACPI: PCI interrupt 0000:00:0e.0[A] -> GSI 11 (level, low) -> IRQ 11

ACPI: PCI interrupt 0000:00:10.0[A]: no GSI

ACPI: PCI interrupt 0000:01:05.0[A] -> GSI 10 (level, low) -> IRQ 10

apm: overridden by ACPI.

ACPI: PCI interrupt 0000:01:05.0[A] -> GSI 10 (level, low) -> IRQ 10

ACPI: PCI interrupt 0000:01:05.0[A] -> GSI 10 (level, low) -> IRQ 10

ACPI: AC Adapter [AC] (on-line)

ACPI: Battery Slot [BAT0] (battery present)

ACPI: Power Button (FF) [PWRF]

ACPI: Sleep Button (FF) [SLPF]

ACPI: Lid Switch [LID]

ACPI: Processor [CPU0] (supports C1 C2)

ACPI: Thermal Zone [THRM] (59 C)

ACPI: PCI interrupt 0000:00:09.0[A] -> GSI 5 (level, low) -> IRQ 5

ACPI: PCI interrupt 0000:00:10.0[A]: no GSI

powernow: Trying ACPI perflib

ACPI: PCI interrupt 0000:00:0e.0[A] -> GSI 11 (level, low) -> IRQ 11

ACPI: PCI interrupt 0000:00:08.0[A] -> GSI 11 (level, low) -> IRQ 11

ACPI: PCI interrupt 0000:00:0a.0[A] -> GSI 10 (level, low) -> IRQ 10

ACPI: PCI interrupt 0000:00:0a.1[A] -> GSI 10 (level, low) -> IRQ 10

ACPI: PCI interrupt 0000:00:0d.0[A] -> GSI 11 (level, low) -> IRQ 11

ACPI: PCI interrupt 0000:00:0d.1[B] -> GSI 11 (level, low) -> IRQ 11

ACPI: PCI interrupt 0000:00:0d.2[C] -> GSI 11 (level, low) -> IRQ 11

ACPI: PCI interrupt 0000:00:0c.0[A] -> GSI 10 (level, low) -> IRQ 10

```

Any help would be most appreciated..

Thanks so much!

----------

## jsivak

I see in kernel 2.6.9 changelogs there are 2 new config options:

CONFIG_ACPI_CUSTOM_DSDT

CONFIG_ACPI_CUSTOM_DSDT_FILE

which allow for a custom DSDT to be specified when compiling the kernel. This removes the need for the kernel patch listed in the Howto.

But these options don't show up in "make menuconfig", and when I manually add them to my .config they are removed by "make && make modules_install".

Anyone know why?

----------

## KageKeeper

 *jsivak wrote:*   

> I see in kernel 2.6.9 changelogs there are 2 new config options:
> 
> CONFIG_ACPI_CUSTOM_DSDT
> 
> CONFIG_ACPI_CUSTOM_DSDT_FILE
> ...

 

Yup.. :Smile: 

To get these options to show in your menuconfig you need to ensure that:

```

Device Drivers  --->

Generic Driver Options  --->

[ ] Select only drivers that don't need compile-time external firmware  

```

is NOT enabled.

Then those DSDT options will show in the ACPI section!

Good luck!

Rob

----------

## jsivak

 *KageKeeper wrote:*   

> 
> 
> ```
> 
> Device Drivers  --->
> ...

 

DOH! I was looking at 

```
Code maturity level options -->

[*] Prompt for development and/or incomplete code/drivers

[ ]   Select only drivers expected to compile cleanly..

```

thinking this was where I needed to "clear" the checkbox.

Thanx!

----------

## dementer

Been having trouble with getting the isal compiler to compile. Doesnt seem to be the upercase/lowercase problem listed in the forum already any help please?

As an alternative is there a place I can get a precompiled version for x86?

[edit] one possibility is that I have a too recent bison version? someone on a debian list recomended 1.3ish might be the way to go... but its not in portage. 

[/edit]

```

bison -v -d -y -pAslCompiler aslcompiler.y

conflicts: 57 shift/reduce, 50 reduce/reduce

aslcompiler.y:913.7-81: warning: rule never reduced because of conflicts: TermArg: Type2IntegerOpcode

aslcompiler.y:914.7-81: warning: rule never reduced because of conflicts: TermArg: Type2StringOpcode

aslcompiler.y:915.7-81: warning: rule never reduced because of conflicts: TermArg: Type2BufferOpcode

aslcompiler.y:916.7-81: warning: rule never reduced because of conflicts: TermArg: Type2BufferOrStringOpcode

aslcompiler.y:958.7-82: warning: rule never reduced because of conflicts: OptionalParameterTypePackage: ','

aslcompiler.y:981.7-82: warning: rule never reduced because of conflicts: OptionalParameterTypesPackage: ','

aslcompiler.y:1572.7-38: warning: rule never reduced because of conflicts: CaseTermList: CaseTerm

aslcompiler.y:1581.7-38: warning: rule never reduced because of conflicts: DefaultTermList: CaseTerm

aslcompiler.y:3062.37-48: warning: rule never reduced because of conflicts: OptionalResourceType: /* empty */

cp y.tab.c aslcompilerparse.c

cp y.tab.h aslcompiler.y.h

gcc -Wall -O2 -Wstrict-prototypes -D_LINUX -D_ACPI_ASL_COMPILER -I../include    -c -o aslcompilerparse.o aslcompilerparse.c

aslcompiler.y: In function `AslCompilerparse':

aslcompiler.y:953: error: syntax error before '}' token

make: *** [aslcompilerparse.o] Error 1

```

----------

## KageKeeper

 *dementer wrote:*   

> Been having trouble with getting the isal compiler to compile. Doesnt seem to be the upercase/lowercase problem listed in the forum already any help please?
> 
> As an alternative is there a place I can get a precompiled version for x86?
> 
> [edit] one possibility is that I have a too recent bison version? someone on a debian list recomended 1.3ish might be the way to go... but its not in portage. 
> ...

 

This has already been addressed on page 7.

But here is the answer:

Go looking to aslcompiler.y and add on line 953:

original code:

```

952        ParameterTypePackageList

953      '}'                           {$$ = $2}

954 ;

```

add a ;

```

953      '}'                           {$$ = $2;}
```

Good luck!  :Smile: 

----------

## dementer

Nice one...   :Embarassed:   I even looked at that line too.

Thanks for your help, and i'll remember to read more thouroughly too

----------

## bongfish

hey everyone just in case you like to know, i got the dsdt working for the asus m6bne (my brand spanking new notebook).

I used the asus m6800n(custom) dsdt from acpi.sourceforge.net and the very 

helpful docs from the start of this thread.

2 things i had to comment out a little bit of code in aslcompiler.y for the iasl compiler to compile (man thats a tounge twister).

and i edited osl.c to add support for a custom dsdt (since i didn't see an option in menuconfig)... these are the quick changes i made to osl.c:

--comment out ifdef and endif

/*#ifdef CONFIG_ACPI_CUSTOM_DSDT*/

#include <acpi/asus.h>

/*#endif*/

--comment out ifdef and endif here too

/*#ifdef CONFIG_ACPI_CUSTOM_DSDT*/

        if (strncmp(existing_table->signature, "DSDT", 4) == 0)

                *new_table = (struct acpi_table_header*)AmlCode;

        else

                *new_table = NULL;

/*#else

        *new_table = NULL;

#endif*/

        return AE_OK;

this if for kernel 2.6.9-r6 btw.

Thanks for all the help with the wonderful forums,

bongfish   :Very Happy: 

----------

## bongfish

oops, i guess i should have read this page before posting. i didn't know about that kernel option to enable those sub config options, though i did already have the semi-colon in aslcompiler.y and it didn't compile until i commented that little bit out. also i don't think all the acpi stuff is working, but the battery level is working and thats all i really wanted to get going.

sorry i was just excited.

----------

## sibov

Hi Guys,

since kernel-2.6.9-... my system stopped powering off after shutdown

and I would like to know if that will be a good indication to start with 

building my own dsdt for my mother fu  :Twisted Evil:   :Evil or Very Mad:   :Twisted Evil:   :Evil or Very Mad:   :Twisted Evil:   MSI bios Mainboard.

Thanks in advance for any kind of replay.

----------

## Lokheed

Added to wiki: http://gentoo-wiki.com/HOWTO_Fix_Common_ACPI_Problems

----------

## richk449

I modified the wiki to describe how to use the built in custom dsdt option for kernel 2.6.9 or later.  If you know what you are doing, please look it over and make sure I didn't make any mistakes.

----------

## mglukhovsky

The M6000N series of Asus laptops have a faulty DSDT table on the BIOS, requiring the user to manually edit the DSDT table to allow ACPI to function.

A petition to fix the DSDT table, among other serious issues, has been started by Herman (of the famed Linux on M6N forums).

If you're interested in helping out by signing it, go to http://www.petitiononline.com/M6NBIOS/petition.html and let Asus know you want a fix now!

Regards,

Mike Glukhovsky

----------

## hiroki

 *mglukhovsky wrote:*   

> The M6000N series of Asus laptops have a faulty DSDT table on the BIOS, requiring the user to manually edit the DSDT table to allow ACPI to function.
> 
> A petition to fix the DSDT table, among other serious issues, has been started by Herman (of the famed Linux on M6N forums).
> 
> If you're interested in helping out by signing it, go to http://www.petitiononline.com/M6NBIOS/petition.html and let Asus know you want a fix now!
> ...

 

yeah, sign that petition!

come on guys, all the people owning an asus (m6n-series) laptop, go to that site and sign the petition! [@ seen my sig]

go go GO  :Exclamation: 

----------

## Treo

Hi,

I've got a Fujitsu T4010 and just fixed a couple (7) 1022 errors in the DSDT. The iasl compiler runs without errors now, however, none of my functionality has changed.

Basically, ACPI has everything working but thermal zone and FAN support. Speedstepping and everything else is great, but dmesg sees no thermal zone or FAN, neither can I access it in /proc/acpi .

Also, my batteries are seen as CMB1 and CMB2... that's somewhat odd, but they report fine.

Anyone any ideas?

Treo

----------

## krzysiek

Hi

I have similar problem as KageKeeper. I installed new, fixed dsdt.h in kernel basing on description that I found here: http://www.gentoo-wiki.com/HOWTO_Fix_Common_ACPI_Problems#Repairing_the_DSDT. I also applied kernel patch from acpi.sf.net.

Now, I can do: echo -n disk > /sys/power/state and everything is OK but when I substitute "disk" with "mem" my laptop powers off ( suspends -> power light is blinking ) and when I try to resume my screen remains blank  :Sad: . Almost all drivers are compiled as modules which I am unloading before suspending.

Info:

Laptop: Compaq Presario 2500 (2568CL)

Bios ver: PhoenixBIOS KH.F.24

Kernel: 2.6.10-ck5

Kernel patch: acpi-20050309-2.6.10 form [url]http://acpi.sf.net [/url]

```

dmesg |grep -i acpi

ACPI-0294: *** Info: Table [DSDT] replaced by host OS

ACPI: setting ELCR to 0200 (from 0420)

ACPI: Subsystem revision 20050309

ACPI: Interpreter enabled

ACPI: Using PIC for interrupt routing

ACPI: PCI Root Bridge [PCI0] (0000:00)

ACPI: PCI Interrupt Routing Table [\_SB_.PCI0._PRT]

ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.AGPB._PRT]

ACPI: PCI Interrupt Link [LNK0] (IRQs 7 10) *0, disabled.

ACPI: PCI Interrupt Link [LNK1] (IRQs 7 *10)

ACPI: PCI Interrupt Link [LNK2] (IRQs 7 *10)

ACPI: PCI Interrupt Link [LNK3] (IRQs 7 *10)

ACPI: PCI Interrupt Link [LNK4] (IRQs 7 10) *0, disabled.

ACPI: PCI Interrupt Link [LNK5] (IRQs 7 *11)

ACPI: PCI Interrupt Link [LNK6] (IRQs 7 10) *0, disabled.

ACPI: PCI Interrupt Link [LNK7] (IRQs *5)

ACPI: PCI Interrupt Link [LNK8] (IRQs 7 10) *0, disabled.

ACPI: Embedded Controller [EC0] (gpe 24)

pnp: PnP ACPI init

pnp: PnP ACPI: found 13 devices

PnPBIOS: Disabled by ACPI PNP

PCI: Using ACPI for IRQ routing

ACPI: PCI Interrupt Link [LNK7] enabled at IRQ 5

ACPI: PCI Interrupt 0000:00:06.0[A] -> Link [LNK7] -> GSI 5 (level, low) -> IRQ 5

ACPI: PCI Interrupt Link [LNK6] enabled at IRQ 10

ACPI: PCI Interrupt 0000:00:08.0[A] -> Link [LNK6] -> GSI 10 (level, low) -> IRQ 10

ACPI: PCI Interrupt Link [LNK3] enabled at IRQ 10

ACPI: PCI Interrupt 0000:00:09.0[A] -> Link [LNK3] -> GSI 10 (level, low) -> IRQ 10

ACPI: PCI Interrupt Link [LNK5] enabled at IRQ 11

ACPI: PCI Interrupt 0000:00:0a.0[A] -> Link [LNK5] -> GSI 11 (level, low) -> IRQ 11

ACPI: PCI Interrupt Link [LNK2] enabled at IRQ 10

ACPI: PCI Interrupt 0000:00:0b.0[A] -> Link [LNK2] -> GSI 10 (level, low) -> IRQ 10

ACPI: PCI Interrupt 0000:00:0b.1[B] -> Link [LNK3] -> GSI 10 (level, low) -> IRQ 10

ACPI: PCI Interrupt 0000:00:0b.2[C] -> Link [LNK5] -> GSI 11 (level, low) -> IRQ 11

ACPI: PCI Interrupt 0000:00:0c.0[A] -> Link [LNK2] -> GSI 10 (level, low) -> IRQ 10

ACPI: PCI Interrupt 0000:00:10.0[A]: no GSI - using IRQ 0

ACPI: PCI Interrupt Link [LNK1] enabled at IRQ 10

ACPI: PCI Interrupt 0000:00:12.0[A] -> Link [LNK1] -> GSI 10 (level, low) -> IRQ 10

ACPI: PCI Interrupt Link [LNK0] enabled at IRQ 10

ACPI: PCI Interrupt 0000:01:05.0[A] -> Link [LNK0] -> GSI 10 (level, low) -> IRQ 10

ACPI: AC Adapter [ACAD] (on-line)

ACPI: Battery Slot [BAT1] (battery absent)

ACPI: Power Button (FF) [PWRF]

ACPI: Lid Switch [LID]

ACPI: Video Device [VGA] (multi-head: yes  rom: no  post: no)

ACPI: CPU0 (power states: C1[C1] C2[C2])

ACPI: Thermal Zone [THRM] (49 C)

ibm_acpi: ec object not found

ACPI: PCI Interrupt 0000:00:08.0[A] -> Link [LNK6] -> GSI 10 (level, low) -> IRQ 10

ACPI: PCI Interrupt 0000:00:12.0[A] -> Link [LNK1] -> GSI 10 (level, low) -> IRQ 10

ACPI: PCI Interrupt 0000:00:10.0[A]: no GSI - using IRQ 0

ACPI: PCI Interrupt 0000:00:0c.0[A] -> Link [LNK2] -> GSI 10 (level, low) -> IRQ 10

ACPI: PCI Interrupt 0000:00:06.0[A] -> Link [LNK7] -> GSI 5 (level, low) -> IRQ 5

ACPI wakeup devices:

ACPI: (supports S0 S3 S4 S5)

ACPI: PCI Interrupt 0000:00:0b.0[A] -> Link [LNK2] -> GSI 10 (level, low) -> IRQ 10

ACPI: PCI Interrupt 0000:00:0b.1[B] -> Link [LNK3] -> GSI 10 (level, low) -> IRQ 10

ACPI: PCI Interrupt 0000:00:0b.2[C] -> Link [LNK5] -> GSI 11 (level, low) -> IRQ 11

ACPI: PCI Interrupt 0000:00:09.0[A] -> Link [LNK3] -> GSI 10 (level, low) -> IRQ 10

ACPI: PCI Interrupt 0000:01:05.0[A] -> Link [LNK0] -> GSI 10 (level, low) -> IRQ 10

ACPI: Please implement acpi_video_bus_ROM_seq_show

ACPI: Please implement acpi_video_bus_ROM_seq_show 

```

----------

## Legoguy

I think this is a problem with the HP/Compaq notebook BIOSes/DSDT. Not sure if we can fix it unless we have an AML wizard around. I have an HP ze4560us, same behavior - using 'fixed' compaq 2100 (identical model, different sticker) dsdt for the same bios version (KAM1.59) from acpi.sf.net.

----------

## djpenguin

Great guide!

I'm trying to sort out ACPI issues on a brand-new ASUS Z71A notebook.

Here's the error message I get when trying to re-compile the DSDT:

```

Intel ACPI Component Architecture

ASL Optimizing Compiler / AML Disassembler version 20050309 [Apr  2 2005]

Copyright (C) 2000 - 2005 Intel Corporation

Supports ACPI Specification Revision 3.0

dsdt.dsl  5879:                                 \_SB.PCI0.IDE0.SPWR (0x00)                                

Error    1022 -                             Object does not exist ^  (\_SB.PCI0.IDE0.SPWR)

ASL Input:  dsdt.dsl - 9108 lines, 310610 bytes, 4639 keywords

Compilation complete. 1 Errors, 0 Warnings, 0 Remarks, 1208 Optimizations

```

Here's the section of the file it's referencing:

```

                        Method (SWBX, 1, NotSerialized)

                        {

                            If (Arg0)

                            {

                                \_SB.PCI0.IDE0.SPWR (0x00)

                            }

                        }

```

Any thoughts on what I should be doing to fix this?  I've tried a number of slight changes to the above format, and always get an error related to that particular object

----------

## carpman

Hello, ok have gone through steps to diagnose acpi bios with these results:

```

Intel ACPI Component Architecture

ASL Optimizing Compiler / AML Disassembler version 20050309 [Apr  4 2005]

Copyright (C) 2000 - 2005 Intel Corporation

Supports ACPI Specification Revision 3.0

dsdt.dsl  2768:     Method (_WAK, 1, NotSerialized)

Warning  2026 -                ^ Reserved method must return a value (_WAK)

ASL Input:  dsdt.dsl - 2796 lines, 95336 bytes, 1541 keywords

AML Output: DSDT.aml - 11600 bytes 353 named objects 1188 executable opcodes

Compilation complete. 0 Errors, 1 Warnings, 0 Remarks, 444 Optimizations

```

This seems to indicate that all is well, however i am having problems with acpi getting following on boot:

```

ACPI: RSDP (v000 PTLTD                                 ) @ 0x000f7fe0

ACPI: RSDT (v001 PTLTD    RSDT   0x06040000  LTP 0x00000000) @ 0x1befbcce

ACPI: FADT (v001 NEC    ND000080 0x06040000 MSTF 0x0100000e) @ 0x1befee74

ACPI: SSDT (v001 PTLTD  POWERNOW 0x06040000  LTP 0x00000001) @ 0x1befeee8

ACPI: DSDT (v001    NEC ND000080 0x06040000 MSFT 0x0100000e) @ 0x00000000

ACPI: setting ELCR to 0200 (from 06b8)

ACPI: Subsystem revision 20050211

ACPI: Interpreter enabled

ACPI: Using PIC for interrupt routing

ACPI: PCI Root Bridge [PCI0] (00:00)

ACPI: PCI Interrupt Routing Table [\_SB_.PCI0._PRT]

ACPI: PCI Interrupt Link [LNKA] (IRQs 3 4 5 *7 10)

ACPI: PCI Interrupt Link [LNKB] (IRQs 3 4 5 7 10) *9

ACPI: PCI Interrupt Link [LNKC] (IRQs 3 4 *5 7 10)

ACPI: PCI Interrupt Link [LNKD] (IRQs 3 *4 5 7 10)

ACPI: PCI Interrupt Link [LNKE] (IRQs 3 4 5 7 10) *9

ACPI: PCI Interrupt Link [LNKF] (IRQs 3 4 5 7 *10)

ACPI: PCI Interrupt Link [LNKG] (IRQs 3 4 5 7 10) *0, disabled.

ACPI: PCI Interrupt Link [LNKH] (IRQs *3 4 5 7 10)

ACPI: Embedded Controller [EC0] (gpe 27)

ACPI: Power Resource [QFAN] (off)

Linux Plug and Play Support v0.97 (c) Adam Belay

pnp: PnP ACPI init

pnp: PnP ACPI: found 7 devices

ACPI: PCI Interrupt Link [LNKC] enabled at IRQ 5

PCI: setting IRQ 5 as level-triggered

ACPI: PCI interrupt 0000:00:02.6[C] -> GSI 5 (level, low) -> IRQ 5

ACPI: PCI Interrupt Link [LNKD] enabled at IRQ 4

PCI: setting IRQ 4 as level-triggered

ACPI: PCI interrupt 0000:00:04.0[A] -> GSI 4 (level, low) -> IRQ 4

ACPI: PCI Interrupt Link [LNKA] enabled at IRQ 7

PCI: setting IRQ 7 as level-triggered

ACPI: PCI interrupt 0000:00:02.5[A] -> GSI 7 (level, low) -> IRQ 7

ACPI: PCI Interrupt Link [LNKB] enabled at IRQ 10

PCI: setting IRQ 10 as level-triggered

ACPI: PCI interrupt 0000:00:0a.0[A] -> GSI 10 (level, low) -> IRQ 10

ACPI: PCI Interrupt Link [LNKH] enabled at IRQ 3

PCI: setting IRQ 3 as level-triggered

ACPI: PCI interrupt 0000:00:03.2[D] -> GSI 3 (level, low) -> IRQ 3

ACPI: PCI Interrupt Link [LNKE] enabled at IRQ 10

ACPI: PCI interrupt 0000:00:03.0[A] -> GSI 10 (level, low) -> IRQ 10

ACPI: PCI Interrupt Link [LNKF] enabled at IRQ 10

ACPI: PCI interrupt 0000:00:03.1[B] -> GSI 10 (level, low) -> IRQ 10

ACPI: PCI interrupt 0000:00:02.7[C] -> GSI 5 (level, low) -> IRQ 5

powernow: PowerNOW! Technology present. Can scale: frequency and voltage.

powernow: No PST tables match this cpuid (0x7a0)

powernow: This is indicative of a broken BIOS.

powernow: Trying ACPI perflib

powernow: no support for ACPI processor found.  Please recompile your kernel with ACPI processor

powernow: ACPI and legacy methods failed

```

Of interest is last bit about powernow and broken bios. Now i do have acpi compiled in kernel and have double checked this, so is this a bios issue that i might be able to fix following this guide or should i be looking else where for problem?

this is on Packard Bell EasyNote C3 255 notebook

cheers

----------

## Crazor

Hello,

I am trying to fix the DSDT of my Gericom EGO notebook.

On recompiling the DSL source, I get:

```
dsdt.dsl  3492:     If (SS1)

Error    1037 -      ^ syntax error, unexpected PARSEOP_IF
```

The relevant part of the source:

```
    If (SS1)

    {

        Name (\_SB.PCI0._S1D, 0x02)

        Name (\_SB.PCI0.P0P1._S1D, 0x02)

        Name (\_SB.PCI0.USB1._S1D, 0x02)

        Name (\_SB.PCI0.USB2._S1D, 0x02)

        Name (\_SB.PCI0.USB3._S1D, 0x02)

    }

    If (SS3)

    {

        Name (\_SB.PCI0._S3D, 0x02)

        Name (\_SB.PCI0.P0P1._S3D, 0x02)

        Name (\_SB.PCI0.USB1._S3D, 0x02)

        Name (\_SB.PCI0.USB2._S3D, 0x02)

        Name (\_SB.PCI0.USB3._S3D, 0x02)

    }

    If (SS4)

    {

        Name (\_SB.PCI0._S4D, 0x02)

        Name (\_SB.PCI0.P0P1._S4D, 0x02)

    }
```

The block is indented by one tab and is contained directly inside

```
DefinitionBlock ("DSDT.aml", "DSDT", 1, "1003", "10036700", 26368)
```

which is at the very beginning of the file.

I guess that IF is only allowed inside METHOD blocks or something like that. So how do I fix this error?

edit: view the whole dsdt.dsl

----------

## mrsteven

There are also some interesting kernel parameters:

acpi_serialize: This is may help if acpi causes trouble after some uptime. My Asus M6700N had a bug in the BIOS that confused the AML interpreter, resulting in a never stopping fan, because some ACPI actions where executed at the same time though they caused problems when executed at the same time. This parameter makes the ACPI execute all methods consecutively, so my problem disappeared.

acpi_fake_ecdt: This creates a faked ecdt so that it makes the hack described in 10b) of the howto unnecessary. Works in kernel 2.6.11 and newer, as far as I know.

Acording to the Changelog of kernel 2.6.12-rc2 the acpi developers improved the "impicit return value" support. That will elude a very common problem in DSDTs:

 *Quote:*   

> 	The "implicit return" support was rewritten to a new
> 
> 	algorithm that solves the general case. Rather than
> 
> 	attempt to determine when a method is about to exit,
> ...

 

----------

## Mason

 *|Crazor| wrote:*   

> Hello,
> 
> I am trying to fix the DSDT of my Gericom EGO notebook.
> 
> On recompiling the DSL source, I get:
> ...

 

same problem here with a sim2000 medion, md95150

```
dsdt.dsl  2965:     If (SS1)

Error    1037 -      ^ syntax error, unexpected PARSEOP_IF

```

also here the if is in main Definition block.

did you make some steps toward soltion?

i'm going to look into acpi spec, in the hope to find out some hints

----------

## Crazor

 *Quote:*   

> did you make some steps toward soltion?
> 
> i'm going to look into acpi spec, in the hope to find out some hints

 

No, Im afraid not.

Probably some other genius can help on this?

----------

## Mason

i've stripped out the if statement around names definition, and it compiles without warning.

i'm gonna this evening, but i don't think it will solve my problems with pci through acpi (i've got a sis 900 that don't go without appending pci=noacpi to kernel and the power button and lid button don't generate any acpi event).

```
  

   2987 //    If (SS4)

   2988 //    {

   2989         Name (\_S4, Package (0x04)

   2990         {

   2991             0x04,

   2992             0x00,

   2993             0x00,

   2994             0x00

   2995         })

   2996 //    }

```

for the spec of asl is at page 150 (near there, i've reached 157 with not all clear around its function, but syntax is the only important thingh for me i suppose) of acip spec.

From what i found is that if statement could be only in a method body, and there is no signed around ss1 in tables of definitions, only _s1 that define a acpi state.

is it right? is it wrong?, hoping to not blow up the laptop

----------

## maxithron

Hallo @ all. After reading a lot of readme, and all post of this topic, i hope someone can help me for:

I've an Acer Travelmate 2702, this is my dmesg for ACPI:

```

 dmesg | grep ACPI

 BIOS-e820: 000000001bf70000 - 000000001bf7b000 (ACPI data)

 BIOS-e820: 000000001bf7b000 - 000000001bf80000 (ACPI NVS)

ACPI: RSDP (v000 PTLTD                                 ) @ 0x000f69b0

ACPI: RSDT (v001 PTLTD    RSDT   0x06040000  LTP 0x00000000) @ 0x1bf77862

ACPI: FADT (v001 COMPAL ELW80    0x06040000 ATI  0x00000003) @ 0x1bf7af24

ACPI: MADT (v001 PTLTD           APIC   0x06040000  LTP 0x00000000) @ 0x1bf7af98

ACPI: DSDT (v001 COMPAL    ELW80 0x06040000 MSFT 0x0100000e) @ 0x00000000

ACPI: Local APIC address 0xfee00000

ACPI: LAPIC (acpi_id[0x00] lapic_id[0x00] enabled)

ACPI: LAPIC (acpi_id[0x01] lapic_id[0x01] enabled)

ACPI: LAPIC_NMI (acpi_id[0x00] high edge lint[0x1])

ACPI: LAPIC_NMI (acpi_id[0x01] high edge lint[0x1])

Using ACPI for processor (LAPIC) configuration information

ACPI: Looking for DSDT in initrd... not found.

ACPI: setting ELCR to 0200 (from 0800)

ACPI: Subsystem revision 20050211

    ACPI-0352: *** Error: Looking up [Z00B] in namespace, AE_NOT_FOUND

ACPI: Interpreter enabled

ACPI: Using PIC for interrupt routing

ACPI: PCI Root Bridge [PCI0] (00:00)

ACPI: PCI Interrupt Routing Table [\_SB_.PCI0._PRT]

ACPI: PCI Interrupt Link [LNK0] (IRQs 10 *11)

ACPI: PCI Interrupt Link [LNK1] (IRQs 10 *11)

ACPI: PCI Interrupt Link [LNK2] (IRQs 10 *11)

ACPI: PCI Interrupt Link [LNK3] (IRQs 10 *11)

ACPI: Embedded Controller [EC0] (gpe 6)

ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.P2P_._PRT]

ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.AGP_._PRT]

pnp: PnP ACPI init

pnp: PnP ACPI: found 10 devices

PCI: Using ACPI for IRQ routing

ACPI: AC Adapter [ACAD] (on-line)

ACPI: Power Button (FF) [PWRF]

ACPI: Lid Switch [LID]

ACPI: PCI Interrupt Link [LNK1] enabled at IRQ 11

ACPI: PCI interrupt 0000:00:14.6[B] -> GSI 11 (level, low) -> IRQ 11

ACPI: PCI interrupt 0000:02:03.0[A]: no GSI - using IRQ 11

ACPI: PCI Interrupt Link [LNK0] enabled at IRQ 11

ACPI: PCI interrupt 0000:00:14.1[A] -> GSI 11 (level, low) -> IRQ 11

ACPI: PCI Interrupt Link [LNK3] enabled at IRQ 11

ACPI: PCI interrupt 0000:00:13.2[A] -> GSI 11 (level, low) -> IRQ 11

ACPI: PCI interrupt 0000:00:13.0[A] -> GSI 11 (level, low) -> IRQ 11

ACPI: PCI interrupt 0000:00:13.1[A] -> GSI 11 (level, low) -> IRQ 11

ACPI: PCI interrupt 0000:00:14.5[B] -> GSI 11 (level, low) -> IRQ 11

ACPI wakeup devices: 

ACPI: (supports S0 S3 S4 S5)

ACPI: PCI interrupt 0000:01:05.0[A] -> GSI 11 (level, low) -> IRQ 11

    ACPI-0352: *** Error: Looking up [Z00B] in namespace, AE_NOT_FOUND

    ACPI-1138: *** Error: Method execution failed [\_SB_.PCI0.LPC0.BAT1._BIF] (Node c13ff800), AE_NOT_FOUND

```

and this is my dmesg for DSDT:

```

ACPI: DSDT (v001 COMPAL    ELW80 0x06040000 MSFT 0x0100000e) @ 0x00000000

ACPI: Looking for DSDT in initrd... not found.

```

I have already installed patch for initrd, and i have already fix my DSDT.aml.

My problem is that i chose the initrd procedure, in combination with bootsplash like indicated at begin of this topic. But after reboot i got a kernel panic.

On another topic i have read that there is a problem with initramfs, and after that, i have patched my kernel (2.6.11-r6) to work with initramfs, but nothing change. Someone can help?

Thx. Maxithron.[/code]

----------

## maxithron

Ok, i simply re-made all, following line-per-line the instruction and now all works fine  :Smile: 

----------

## Mason

laptop vs human 1-0  :Embarassed: 

don't buy a medion 95150 if you plan a linux installation. :Twisted Evil: 

----------

## iacopo_i

I resolve all the problem:

visit htt://www.whoopy.it/linux to find a guide step by step

Bye

Iacopo_I

----------

## ihtruelsen

I think I am probably an idiot, but I followed the instructions at the beginning of this thread and everything is fine until I try to get the initrd support to work. I have patched the kernel, with no errors and got the option to load dsdt from initrd and have enabled initrd support into the kernel. However, no matter what I do, I can't get the dsdt to load from initrd. 

Here is my grub.conf:

```

default 0

timeout 10

splashimage=(hd0,2)/grub/splash.xpm.gz

title=Linux

root (hd0,2)

kernel (hd0,2)/boot/bzImage root=/dev/hda6 resume2=swap:/dev/hda5 initrd=/boot/DSDT.aml

```

And from my .config:

```

CONFIG_ACPI_CUSTOM_DSDT_INITRD=y

CONFIG_BLK_DEV_INITRD=y

```

So, any ideas on what I have missed here?

----------

## ihtruelsen

Okay, my bad. Apparently, the initrd line has to be on its own line in grub.conf. 

Now, my battery state and ac adapter state are working, but the cpu frequency module can no longer be loaded.

```

mercury ian # modprobe acpi_cpufreq

FATAL: Error inserting acpi_cpufreq (/lib/modules/2.6.12-gentoo/kernel/arch/i386/kernel/cpu/cpufreq/acpi-cpufreq.ko): No such device

```

I guess I can live without knowing the cpu speed, but I would like to know if it is actually stepping based on load.

Any thoughts on this one?

----------

## eleven

Well, i signed up and im posting this as a last resort.  I have been googling and working on this for almost a month now..  I have finally corrected all 19 errors in my DSDT file, and have managed to figure everything out until now.  I have run into 4 warnings in the smbus-cm.asl files that come with the sbs-cm-20050328 patch set from sourceforge.  I am running gentoo (obviously) kernel 2.6.12-r6 (although i get the same issues with the 2.6.11-r* kernels).  Its all running on an Acer Travelmate 3200 which uses the SMBus that has tourchered many of us..  The DSDT is being recognized at boot in initrd (viewed in dmesg) but it still is disfunctional due to these errors...

THE ERRORS:

# iasl dsdt.dsl

Intel ACPI Component Architecture

ASL Optimizing Compiler / AML Disassembler version 20050309 [Jul 23 2005]

Copyright (C) 2000 - 2005 Intel Corporation

Supports ACPI Specification Revision 3.0

smbus-cm.asl    87:         Method (_SBI, 0, NotSerialized)

Warning  2033 -  Unknown reserved name ^  (_SBI)

smbus-cm.asl   147:         Method (_SBR, 3, NotSerialized)

Warning  2033 -  Unknown reserved name ^  (_SBR)

smbus-cm.asl   237:         Method (_SBW, 5, NotSerialized)

Warning  2033 -  Unknown reserved name ^  (_SBW)

smbus-cm.asl   314:         Method (_SBA, 0, NotSerialized)

Warning  2033 -  Unknown reserved name ^  (_SBA)

ASL Input:  dsdt.dsl - 5200 lines, 231138 bytes, 2869 keywords

AML Output: DSDT.aml - 23621 bytes 684 named objects 2185 executable opcodes

Compilation complete. 0 Errors, 4 Warnings, 0 Remarks, 789 Optimizations

         I am at a loss on how to go about fixing these issues, i have googled every search result for every combination of keywords i can think of.  I have annoyed anyone who has ever seen my nick on IRC that i thought might have a clue.  So, in last hopes of actually being able to see how much battery power i left im going public..   help..

Im known as elevenabroad on yahoo messenger, and i can be found as eleven or nevele on EFnet.   Thanks a bunch.

----------

## swebb99

Hi I've followed all the instructions for ACPI and SBS, patched the kernel for initrd, created a dsdt and so and and I still have a few issues.

1) I still get some warnings when compiling the dsdt, as it happens the same ones as the previous message on here

2) It takes ages to boot when ACPI is being used. I don't see any errors in dmesg and when the system is finally up and running it detects the battery and show me the charge and when the power is connected. I seems to halt for about 2 minutes after the initial detection of ACPI on the boot text then after this takes about 200-300% longer to boot from there on.

3) KLaptop when run says that the acpi checksum doesn't line up !!!

4) Any idea's how I configure scaling/throttling on the CPU so that the fan doesn't come on 50% of the time ?

Thanks for any help

Steve

----------

## eleven

I am still working on this issue..  Ive posted a few emails out to folks whom might know more than me.  As soon as i resolve any issues with these errors, ill post the fixes and my DSDT to sourceforge.  It seems that these errors are still not allowing my battery to be recognized..  So..  If anyone can lend a hint, im all ears..

thanks..

----------

## swebb99

Right I eventually got the battery to work using initrd however the machine took ages to boot so instead I rebuilt the kernel to include the dsdt.hex and now the battery detection works great. My outstanding problem is the speedstep on my Centrino(Dohan). dmesg shows the cpu supports speedstep, ive edited cpuspeed.conf for speedstep for the centrino and as far as I can tell i have built to kernel with all the right opions but when i add the cpu scalling monitor applet to gnome it says scalling is not supported. Also if I try and look in /sys/devices/system/cpu/cpu0/ the directory is empty  :Sad: 

Has anyone any idea's at all ?

Thanks

Steve

----------

## rhill

the FF power button patch is no longer needed as of kernel 2.6.13-rc3

http://bugzilla.kernel.org/show_bug.cgi?id=1920

----------

## eleven

Well, finally got acpi and cpu clock speed to work, however, when my battery is fully charged linux reports that i have 2 hours and 10 minutes of life, while windows reports 5 hours.  I can see the battery monitor and the cpu clockspeed monitor and dmesg detects the new dsdt, but, it eats power quick...  Any ideas?

Im running jackass! gentoo, optimized for pentium-m, kernel 2.6.12-r9.  Used the sbs patches to get acpi working, everything is updated to the newest version (which may be the problem..)  Any idea why windows reports (and gives) 5 hours while gentoo only can kick out a little over 2?

Thanks a bunch for the help from this forum...

----------

## ihtruelsen

How did you get the speed step and the battery detection working simultaneously? I can only get one or the other.

----------

## retupmoca

I have a Dell I5150, and AFAICT, everything in /proc/acpi is correct.  However, I am not getting any ACPI interrupts:

```

 $ cat /proc/interrupts 

           CPU0       CPU1       

  0:    2946081          0    IO-APIC-edge  timer

  1:       2903          0    IO-APIC-edge  i8042

  9:          0          0   IO-APIC-level  acpi

 12:       3194          0    IO-APIC-edge  i8042

 14:         77          0    IO-APIC-edge  ide0

 15:      11299          0    IO-APIC-edge  ide1

 16:          3          0   IO-APIC-level  ohci1394, uhci_hcd:usb2, yenta

 17:    1143625          0   IO-APIC-level  Intel 82801DB-ICH4, Intel 82801DB-ICH4 Modem

 18:        132          0   IO-APIC-level  uhci_hcd:usb4, ndiswrapper

 19:      85448          0   IO-APIC-level  uhci_hcd:usb3

 20:     175906          0   IO-APIC-level  nvidia

 23:          2          0   IO-APIC-level  ehci_hcd:usb1

NMI:          0          0 

LOC:    2946124    2946124 

ERR:          0

MIS:          0

```

My dsdt is available at http://www.calvin.edu/~ade2/dsdt.dsl

Any help would be much appreciated.

----------

## eleven

i got cpu scaling and acpi to work through the acer-tm patches that i found through a link on a forum..  (acer-tm32xx-sbs-cm.diff)  after rebuilding the kernel and putting everything in place it works..  however, it doesnt work very well..  i can see the battery and everything is recognized, but, i miss ticks like crazy (which i notice in keystrokes being skipped..)  So, now i can see my battery and scale the cpu, but, typing is a pain since it misses alot of keys...  i tried the acpi-ec-nospinlock.diff patch that is supposed to fix this problem, and it did, but it made a lot of new problems..  problems with bash, not being able to read and write to files when i own them, everything seems to work ok as root, but as a user your locked out of half of you own files...  so, not sure what is better..  no acpi, or a broken implementation of it...   any ideas on how to stop missing ticks?   thoughts?

----------

## joker

hi guys, I need your help!

I have Acer Aspire 5024 laptop and I can't monitor my battery  :Sad: 

here's the info:

kernel gentoo-sources-2.6.12-r10

I tried to fix my dsdt.dsl file but I still have 1 error:

```
Intel ACPI Component Architecture

ASL Optimizing Compiler version 20050902 [Sep 18 2005]

Copyright (C) 2000 - 2005 Intel Corporation

Supports ACPI Specification Revision 3.0

No back ptr to Op: type 8

No back ptr to Op: type 8

No back ptr to Op: type 8

 d.dsl   347:     Method (_WAK, 1, NotSerialized)

Warning  2078 -              ^ Reserved method must return a value (_WAK)

 d.dsl   738:             Name (_HID, "*pnp0c14")

*pnp0c14

 d.dsl   742:             Name (_WDG, Buffer (0x3C)

Warning  2097 -                    ^ Unknown reserved name (_WDG)

 d.dsl   761:             Method (_WED, 1, NotSerialized)

Warning  2085 -                      ^ Not all control paths return a value (_WED)

 d.dsl   761:             Method (_WED, 1, NotSerialized)

Warning  2097 -                      ^ Unknown reserved name (_WED)

 d.dsl  3360:                     Release (MTIO)

Warning  2098 -      Statement is unreachable ^ 

ASL Input:  d.dsl - 5691 lines, 198881 bytes, 2372 keywords

Compilation complete. 1 Errors, 5 Warnings, 0 Remarks, 3 Optimizations
```

I used this dsdt with 1 error to my kernel (static) but still my /proc/acpi/battery/ directory is empty  :Sad:  AC adapter is ok

```
cat /proc/acpi/ac_adapter/ADP1/state 

state:                   on-line
```

my dmesg:

```
BIOS-e820: 000000001fea0000 - 000000001feae000 (ACPI data)

 BIOS-e820: 000000001feae000 - 000000001ff00000 (ACPI NVS)

ACPI: RSDP (v000 PTLTD                                 ) @ 0x00000000000f6db0

ACPI: RSDT (v001 PTLTD    RSDT   0x06040000  LTP 0x00000000) @ 0x000000001fea81ad

ACPI: FADT (v001 ATI    Piranha  0x06040000 ATI  0x000f4240) @ 0x000000001feade20

ACPI: SSDT (v001 PTLTD  POWERNOW 0x06040000  LTP 0x00000001) @ 0x000000001feade94

ACPI: MADT (v001 PTLTD      APIC   0x06040000  LTP 0x00000000) @ 0x000000001feadf6a

ACPI: MCFG (v001 PTLTD    MCFG   0x06040000  LTP 0x00000000) @ 0x000000001feadfc4

ACPI: DSDT (v001    ATI    SB400 0x06040000 MSFT 0x0100000e) @ 0x0000000000000000

ACPI: PM-Timer IO Port: 0x8008

ACPI: Local APIC address 0xfee00000

ACPI: LAPIC (acpi_id[0x00] lapic_id[0x00] enabled)

ACPI: LAPIC_NMI (acpi_id[0x00] high edge lint[0x1])

ACPI: Skipping IOAPIC probe due to 'noapic' option.

Using ACPI for processor (LAPIC) configuration information

ACPI: Overriding _OS definition to 'Microsoft Windows XP'

    ACPI-0307: *** Info: Table [DSDT] replaced by host OS

ACPI: setting ELCR to 0200 (from 0c00)

ACPI: bus type pci registered

ACPI: Subsystem revision 20050729

ACPI: Interpreter enabled

ACPI: Using PIC for interrupt routing

ACPI: PCI Root Bridge [PCI0] (0000:00)

ACPI: Assume root bridge [\_SB_.PCI0] segment is 0

ACPI: PCI Interrupt Routing Table [\_SB_.PCI0._PRT]

ACPI: PCI Interrupt Link [LNKA] (IRQs *10 11)

ACPI: PCI Interrupt Link [LNKB] (IRQs 10 *11)

ACPI: PCI Interrupt Link [LNKC] (IRQs 10 *11)

ACPI: PCI Interrupt Link [LNKD] (IRQs 10 *11)

ACPI: PCI Interrupt Link [LNKE] (IRQs 10 *11), disabled.

ACPI: PCI Interrupt Link [LNKF] (IRQs *10 11)

ACPI: PCI Interrupt Link [LNKG] (IRQs 10 *11)

ACPI: PCI Interrupt Link [LNKH] (IRQs 10 *11)

ACPI: Embedded Controller [EC0] (gpe 3)

    ACPI-0423: *** Error: Handler for [EmbeddedControl] returned AE_TIME

    ACPI-0509: *** Error: Method execution failed [\_SB_.PCI0.LPC0.EC0_.BAT0._STA] (Node ffff81001fd03800), AE_TIME

    ACPI-0171: *** Error: Method execution failed [\_SB_.PCI0.LPC0.EC0_.BAT0._STA] (Node ffff81001fd03800), AE_TIME

ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PB6_._PRT]

ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PB7_._PRT]

ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.EXP1._PRT]

ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.P2P_._PRT]

pnp: PnP ACPI init

pnp: PnP ACPI: found 10 devices

PCI: Using ACPI for IRQ routing

acpiphp: ACPI Hot Plug PCI Controller Driver version: 0.4

ACPI: AC Adapter [ADP1] (on-line)

    ACPI-0423: *** Error: Handler for [EmbeddedControl] returned AE_TIME

    ACPI-0509: *** Error: Method execution failed [\_SB_.PCI0.LPC0.EC0_.BAT0._STA] (Node ffff81001fd03800), AE_TIME

ACPI: Power Button (FF) [PWRF]

ACPI: Lid Switch [LID0]

ACPI: Sleep Button (CM) [SLPB]

ACPI: Video Device [VGA] (multi-head: yes  rom: no  post: no)

ACPI: Video Device [VGA] (multi-head: yes  rom: no  post: no)

ACPI: CPU0 (power states: C1[C1] C2[C2] C3[C3])

    ACPI-0423: *** Error: Handler for [EmbeddedControl] returned AE_TIME

    ACPI-0509: *** Error: Method execution failed [\_TZ_.TZS0._TMP] (Node ffff81000181b1c0), AE_TIME

ACPI: Thermal Zone [TZS0] (59 C)

    ACPI-0423: *** Error: Handler for [EmbeddedControl] returned AE_TIME

    ACPI-0509: *** Error: Method execution failed [\_TZ_.TZS1._TMP] (Node ffff810001819f00), AE_TIME

ACPI: Thermal Zone [TZS1] (50 C)

    ACPI-0423: *** Error: Handler for [EmbeddedControl] returned AE_TIME

    ACPI-0509: *** Error: Method execution failed [\_TZ_.TZSV._TMP] (Node ffff810001819cc0), AE_TIME

ACPI: Thermal Zone [TZSV] (55 C)

ACPI: PCI Interrupt Link [LNKB] enabled at IRQ 11

ACPI: PCI Interrupt 0000:00:14.6[B] -> Link [LNKB] -> GSI 11 (level, low) -> IRQ 11

ACPI: PCI interrupt for device 0000:00:14.6 disabled

ACPI: PCI Interrupt Link [LNKH] enabled at IRQ 11

ACPI: PCI Interrupt 0000:04:07.0[A] -> Link [LNKH] -> GSI 11 (level, low) -> IRQ 11

ACPI: PCI Interrupt Link [LNKA] enabled at IRQ 10

ACPI: PCI Interrupt 0000:00:14.1[A] -> Link [LNKA] -> GSI 10 (level, low) -> IRQ 10

ACPI: PCI Interrupt Link [LNKG] enabled at IRQ 11

ACPI: PCI Interrupt 0000:04:06.2[C] -> Link [LNKG] -> GSI 11 (level, low) -> IRQ 11

ACPI: PCI Interrupt Link [LNKE] disabled and referenced, BIOS bug.

ACPI: PCI Interrupt Link [LNKE] enabled at IRQ 11

ACPI: PCI Interrupt 0000:04:06.0[A] -> Link [LNKE] -> GSI 11 (level, low) -> IRQ 11

ACPI: PCI Interrupt Link [LNKD] enabled at IRQ 11

ACPI: PCI Interrupt 0000:00:13.2[A] -> Link [LNKD] -> GSI 11 (level, low) -> IRQ 11

ACPI: PCI Interrupt 0000:00:13.0[A] -> Link [LNKD] -> GSI 11 (level, low) -> IRQ 11

ACPI: PCI Interrupt 0000:00:13.1[A] -> Link [LNKD] -> GSI 11 (level, low) -> IRQ 11

ACPI: PCI Interrupt 0000:00:14.5[B] -> Link [LNKB] -> GSI 11 (level, low) -> IRQ 11

ACPI wakeup devices: 

ACPI: (supports S0 S3 S4 S5)

ACPI: PCI Interrupt Link [LNKC] enabled at IRQ 11

ACPI: PCI Interrupt 0000:01:00.0[A] -> Link [LNKC] -> GSI 11 (level, low) -> IRQ 11

acer_acpi: Acer Laptop ACPI Extras version 0.2

acer_acpi: Acer Laptop ACPI Extras version 0.2

ACPI: PCI Interrupt Link [LNKF] enabled at IRQ 10

ACPI: PCI Interrupt 0000:04:05.0[A] -> Link [LNKF] -> GSI 10 (level, low) -> IRQ 10
```

and my grub:

```
title  Gentoo 64-bit

root (hd0,2)/boot/

kernel (hd0,2)/boot/kernel-2.6.12-dst vga=0x318 root=/dev/hda3 acpi_os_name="Microsoft Windows XP" noapictimer pci=assign-busses video=vesafb:mtrr,ywrap,1024x768-32@60 splash=silent,theme:livecd-2005.1 CONSOLE=/dev/tty1

initrd /boot/splash
```

----------

## eleven

i have an acer travelmate 3200 and had the same issues..  the only way i was able to get everything working (cpu scaling, battery display, fan, etc) and not have issues with lost events (noticed through missing keystrokes) was to use a fixed dsdt on kernel 2.6.11.5 using the initrd patch and the nospinlock-ec patch.  now, everything works great.  But, couldnt get anything saine on 2.6.12 and up...

if anyone has a newer idea, maybe the experimental ramfs way, gimmie your thoughts!

----------

## Chewi

Many thanks to jetblack! I wasn't even aware this was possible. I'm hoping this will cure (or at least help to cure) the really irritating random crashes I've been experiencing since April. It seems to have had some effect because enabling local APIC used to crash my machine very quickly but now it seems to work fine. Time will tell if it's fixed everything. If anyone has a Sony Vaio PCG-K195HP then head over here to get the custom DSDT I made.

The HOWTO desperately needs updating though. There is an ebuild for the Intel compiler now (emerge iasl) so you don't need to have to manually install it anymore. It is also no longer necessary to patch the kernel for DSDT override. The missing ECDT patch badly needs updating as well - or rather it did because... ARRGH!!  :Evil or Very Mad: 

----------

## Chewi

Errm sorry about that. I had gone to the huge trouble of updating the patch myself (wasn't easy) and it worked nicely. So what's the problem? The missing ECDT problem has already since been tackled in another part of the kernel! You just put acpi_fake_ecdt on the kernel command line! All that effort for nothing!  :Sad:  Oh well.

As if that weren't enough, my machine crashed again and it turns out it wasn't local APIC causing the frequent crashing but irqpoll. Ho hum.

----------

## joker

ok thanks to my friend Bartek I solved my problem with Acer Aspire 5024.

I put ec_burst=1 as a kernel parameter and now battery status works and ACPI don't show errors  :Smile: 

gut luck!

----------

## Hokage-dono

hello !

I followed this tutorial and I have un a strange problem (for me :p) : during the boot I don't have any message like "Looking for dsdt in initrd..." 

So It doesn't load the fixed dsdt ...

Here is my grub file : 

```

title           Debian GNU/Linux, kernel 2.6.13.4

root            (hd0,2)

kernel          /boot/vmlinuz-2.6.13.4 root=/dev/hda3 ro

initrd          /boot/DSDT.aml

savedefault

boot

title           Debian GNU/Linux, kernel 2.6.13.4 (recovery mode)

root            (hd0,2)

kernel          /boot/vmlinuz-2.6.13.4 root=/dev/hda3 ro single

savedefault

boot

```

and here is my dmesg : 

```

2.128000] PCI: Probing PCI hardware (bus 00)

[17179572.132000] PCI: Ignoring BAR0-3 of IDE controller 0000:00:1f.1

[17179572.132000] Boot video device is 0000:01:00.0

[17179572.132000] PCI: Transparent bridge - 0000:00:1e.0

[17179572.132000] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0._PRT]

[17179572.136000] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.AGP_._PRT]

[17179572.136000] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PCIB._PRT]

[17179572.136000] ACPI: PCI Interrupt Link [LNKA] (IRQs *6)

[17179572.136000] ACPI: PCI Interrupt Link [LNKB] (IRQs *10)

[17179572.136000] ACPI: PCI Interrupt Link [LNKC] (IRQs *6)

[17179572.136000] ACPI: PCI Interrupt Link [LNKD] (IRQs *6)

[17179572.136000] ACPI: PCI Interrupt Link [LNKE] (IRQs *10)

[17179572.136000] ACPI: PCI Interrupt Link [LNKF] (IRQs 10) *0, disabled.

[17179572.136000] ACPI: PCI Interrupt Link [LNKG] (IRQs 6) *0, disabled.

[17179572.136000] ACPI: PCI Interrupt Link [LNKH] (IRQs *10)

[17179572.140000] ACPI: Embedded Controller [EC0] (gpe 29)

[17179572.156000] ACPI: Power Resource [PFN0] (off)

[17179572.156000] ACPI: Power Resource [PFN1] (off)

[17179572.156000] Linux Plug and Play Support v0.97 (c) Adam Belay

[17179572.156000] pnp: PnP ACPI init

[17179572.160000] pnp: PnP ACPI: found 9 devices

[17179572.160000] SCSI subsystem initialized

[17179572.160000] usbcore: registered new driver usbfs

[17179572.160000] usbcore: registered new driver hub

[17179572.160000] PCI: Using ACPI for IRQ routing

[17179572.160000] PCI: If a device doesn't work, try "pci=routeirq".  If it helps, post a report

[17179572.164000] NET: Registered protocol family 23

[17179572.164000] pnp: 00:03: ioport range 0x164e-0x164f has been reserved

[17179572.164000] PCI: Bridge: 0000:00:01.0

[17179572.164000]   IO window: 3000-3fff

[17179572.164000]   MEM window: d0100000-d01fffff

[17179572.164000]   PREFETCH window: d8000000-dfffffff

[17179572.164000] PCI: Bus 3, cardbus bridge: 0000:02:06.0

[17179572.164000]   IO window: 00004000-00004fff

[17179572.164000]   IO window: 00005000-00005fff

[17179572.164000]   PREFETCH window: 20000000-21ffffff

[17179572.164000]   MEM window: 24000000-25ffffff

[17179572.164000] PCI: Bridge: 0000:00:1e.0

[17179572.164000]   IO window: 4000-4fff

[17179572.164000]   MEM window: d0200000-d05fffff

[17179572.164000]   PREFETCH window: 20000000-22ffffff

[17179572.164000] PCI: Setting latency timer of device 0000:00:1e.0 to 64

[17179572.164000] PCI: Enabling device 0000:02:06.0 (0104 -> 0107)

[17179572.168000] ACPI: PCI Interrupt Link [LNKE] enabled at IRQ 10

[17179572.168000] PCI: setting IRQ 10 as level-triggered

[17179572.168000] ACPI: PCI Interrupt 0000:02:06.0[A] -> Link [LNKE] -> GSI 10 (level, low) -> IRQ 10

[17179572.168000] Simple Boot Flag at 0x37 set to 0x1

[17179572.168000] Machine check exception polling timer started.

[17179572.168000] audit: initializing netlink socket (disabled)

[17179572.168000] audit(1130001879.168:1): initialized

[17179572.168000] Installing knfsd (copyright (C) 1996 okir@monad.swb.de).

[17179572.168000] Initializing Cryptographic API

[17179572.168000] ACPI: PCI Interrupt Link [LNKA] enabled at IRQ 6

[17179572.168000] PCI: setting IRQ 6 as level-triggered

[17179572.168000] ACPI: PCI Interrupt 0000:01:00.0[A] -> Link [LNKA] -> GSI 6 (level, low) -> IRQ 6

[17179572.168000] radeonfb: Retreived PLL infos from BIOS

[17179572.168000] radeonfb: Reference=27.00 MHz (RefDiv=6) Memory=450.00 Mhz, System=210.00 MHz

[17179572.168000] radeonfb: PLL min 20000 max 35000

[17179572.768000] Non-DDC laptop panel detected

[17179573.536000] radeonfb: Monitor 1 type LCD found

[17179573.536000] radeonfb: Monitor 2 type no found

[17179573.536000] radeonfb: panel ID string: QDS                     

[17179573.536000] radeonfb: detected LVDS panel size from BIOS: 1280x800

[17179573.536000] radeondb: BIOS provided dividers will be used

[17179573.536000] radeonfb: Dynamic Clock Power Management enabled

[17179573.580000] Console: switching to colour frame buffer device 160x50

[17179573.580000] radeonfb (0000:01:00.0): ATI Radeon NP 

[17179573.580000] ACPI: Power Button (FF) [PWRF]

[17179573.580000] ACPI: Lid Switch [LID]

[17179573.580000] ACPI: Sleep Button (CM) [SLPB]

[17179573.580000] ACPI: Fan [FAN0] (off)

[17179573.580000] ACPI: Fan [FAN1] (off)

[17179573.580000] ACPI: CPU0 (power states: C1[C1] C2[C2] C3[C3])

[17179573.580000] ACPI: Processor [CPU0] (supports 8 throttling states)

[17179573.584000] ACPI: Thermal Zone [THRM] (53 C)

[17179573.596000] lp: driver loaded but no devices found

[17179573.596000] hw_random: cannot enable RNG, aborting

[17179573.596000] Linux agpgart interface v0.101 (c) Dave Jones

[17179573.596000] agpgart: Detected an Intel 855GM Chipset.

[17179573.616000] agpgart: AGP aperture is 256M @ 0xe0000000

[17179573.616000] [drm] Initialized drm 1.0.0 20040925

[17179573.616000] ACPI: PCI Interrupt 0000:01:00.0[A] -> Link [LNKA] -> GSI 6 (level, low) -> IRQ 6

[17179573.616000] [drm] Initialized radeon 1.16.0 20050311 on minor 0: ATI Technologies Inc RV350 [Mobility Radeon 9600 M10]

[17179573.616000] PNP: PS/2 Controller [PNP0303:KBC,PNP0f13:MOU2] at 0x60,0x64 irq 1,12

[17179573.620000] i8042.c: Detected active multiplexing controller, rev 1.1.

[17179573.620000] serio: i8042 AUX0 port at 0x60,0x64 irq 12

[17179573.620000] serio: i8042 AUX1 port at 0x60,0x64 irq 12

[17179573.620000] serio: i8042 AUX2 port at 0x60,0x64 irq 12

[17179573.620000] serio: i8042 AUX3 port at 0x60,0x64 irq 12

[17179573.620000] serio: i8042 KBD port at 0x60,0x64 irq 1

[17179573.620000] Serial: 8250/16550 driver $Revision: 1.90 $ 4 ports, IRQ sharing disabled

[17179573.624000] ttyS1 at I/O 0x2f8 (irq = 3) is a NS16550A

[17179573.628000] ACPI: PCI Interrupt Link [LNKB] enabled at IRQ 10

[17179573.632000] ACPI: PCI Interrupt 0000:00:1f.6[B] -> Link [LNKB] -> GSI 10 (level, low) -> IRQ 10

[17179573.636000] ACPI: PCI interrupt for device 0000:00:1f.6 disabled

[17179573.640000] io scheduler noop registered

[17179573.644000] io scheduler anticipatory registered

[17179573.644000] io scheduler deadline registered

[17179573.648000] io scheduler cfq registered

[17179573.652000] RAMDISK driver initialized: 16 RAM disks of 4096K size 1024 blocksize

[17179573.656000] Uniform Multi-Platform E-IDE driver Revision: 7.00alpha2

[17179573.660000] ide: Assuming 33MHz system bus speed for PIO modes; override with idebus=xx

[17179573.664000] ICH4: IDE controller at PCI slot 0000:00:1f.1

[17179573.668000] PCI: Enabling device 0000:00:1f.1 (0005 -> 0007)

[17179573.668000] ACPI: PCI Interrupt Link [LNKC] enabled at IRQ 6

[17179573.672000] ACPI: PCI Interrupt 0000:00:1f.1[A] -> Link [LNKC] -> GSI 6 (level, low) -> IRQ 6

[17179573.676000] ICH4: chipset revision 3

[17179573.680000] ICH4: not 100% native mode: will probe irqs later

[17179573.684000]     ide0: BM-DMA at 0x1860-0x1867, BIOS settings: hda:DMA, hdb:pio

[17179573.688000]     ide1: BM-DMA at 0x1868-0x186f, BIOS settings: hdc:DMA, hdd:pio

[17179573.688000] Probing IDE interface ide0...

[17179573.980000] hda: IC25N060ATMR04-0, ATA DISK drive

[17179574.652000] ide0 at 0x1f0-0x1f7,0x3f6 on irq 14

[17179574.652000] Probing IDE interface ide1...

[17179575.392000] hdc: Slimtype DVDRW SOSW-852S, ATAPI CD/DVD-ROM drive

[17179576.064000] ide1 at 0x170-0x177,0x376 on irq 15

[17179576.064000] hda: max request size: 1024KiB

[17179576.096000] hda: 117210240 sectors (60011 MB) w/7884KiB Cache, CHS=16383/255/63, UDMA(100)

[17179576.100000] hda: cache flushes supported

[17179576.104000]  hda: hda1 hda2 < hda5 hda6 hda7 > hda3

[17179576.196000] hdc: ATAPI 24X DVD-ROM DVD-R CD-R/RW drive, 2048kB Cache, UDMA(33)

[17179576.200000] Uniform CD-ROM driver Revision: 3.20

[17179576.208000] libata version 1.12 loaded.

[17179576.208000] ACPI: PCI Interrupt 0000:02:06.0[A] -> Link [LNKE] -> GSI 10 (level, low) -> IRQ 10

[17179576.212000] Yenta: CardBus bridge found at 0000:02:06.0 [1025:0064]

[17179576.344000] Yenta: ISA IRQ mask 0x08b8, PCI irq 10

[17179576.348000] Socket status: 30000006

[17179576.352000] pcmcia: parent PCI bridge I/O window: 0x4000 - 0x4fff

[17179576.356000] cs: IO port probe 0x4000-0x4fff: clean.

[17179576.360000] pcmcia: parent PCI bridge Memory window: 0xd0200000 - 0xd05fffff

[17179576.364000] pcmcia: parent PCI bridge Memory window: 0x20000000 - 0x22ffffff

[17179576.624000] usbmon: debugfs is not available

[17179576.628000] ACPI: PCI Interrupt Link [LNKH] enabled at IRQ 10

[17179576.632000] ACPI: PCI Interrupt 0000:00:1d.7[D] -> Link [LNKH] -> GSI 10 (level, low) -> IRQ 10

[17179576.636000] PCI: Setting latency timer of device 0000:00:1d.7 to 64

[17179576.636000] ehci_hcd 0000:00:1d.7: Intel Corporation 82801DB/DBM (ICH4/ICH4-M) USB2 EHCI Controller

[17179576.640000] ehci_hcd 0000:00:1d.7: debug port 1

[17179576.644000] ehci_hcd 0000:00:1d.7: new USB bus registered, assigned bus number 1

[17179576.648000] ehci_hcd 0000:00:1d.7: irq 10, io mem 0xd0000000

[17179576.656000] PCI: cache line size of 32 is not supported by device 0000:00:1d.7

[17179576.656000] ehci_hcd 0000:00:1d.7: USB 2.0 initialized, EHCI 1.00, driver 10 Dec 2004

[17179576.660000] hub 1-0:1.0: USB hub found

[17179576.664000] hub 1-0:1.0: 6 ports detected

[17179576.692000] hub 1-0:1.0: over-current change on port 1

[17179576.696000] USB Universal Host Controller Interface driver v2.3

[17179576.700000] ACPI: PCI Interrupt 0000:00:1d.0[A] -> Link [LNKA] -> GSI 6 (level, low) -> IRQ 6

[17179576.704000] PCI: Setting latency timer of device 0000:00:1d.0 to 64

[17179576.704000] uhci_hcd 0000:00:1d.0: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #1

[17179576.708000] uhci_hcd 0000:00:1d.0: new USB bus registered, assigned bus number 2

[17179576.712000] uhci_hcd 0000:00:1d.0: irq 6, io base 0x00001800

[17179576.716000] hub 2-0:1.0: USB hub found

[17179576.720000] hub 1-0:1.0: over-current change on port 2

[17179576.724000] hub 2-0:1.0: 2 ports detected

[17179576.736000] ACPI: PCI Interrupt Link [LNKD] enabled at IRQ 6

[17179576.740000] ACPI: PCI Interrupt 0000:00:1d.1[B] -> Link [LNKD] -> GSI 6 (level, low) -> IRQ 6

[17179576.744000] PCI: Setting latency timer of device 0000:00:1d.1 to 64

[17179576.744000] uhci_hcd 0000:00:1d.1: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #2

[17179576.748000] uhci_hcd 0000:00:1d.1: new USB bus registered, assigned bus number 3

[17179576.752000] uhci_hcd 0000:00:1d.1: irq 6, io base 0x00001820

[17179576.756000] hub 3-0:1.0: USB hub found

[17179576.760000] hub 3-0:1.0: 2 ports detected

[17179576.772000] ACPI: PCI Interrupt 0000:00:1d.2[C] -> Link [LNKC] -> GSI 6 (level, low) -> IRQ 6

[17179576.776000] PCI: Setting latency timer of device 0000:00:1d.2 to 64

[17179576.776000] uhci_hcd 0000:00:1d.2: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #3

[17179576.780000] uhci_hcd 0000:00:1d.2: new USB bus registered, assigned bus number 4

[17179576.784000] uhci_hcd 0000:00:1d.2: irq 6, io base 0x00001840

[17179576.788000] hub 4-0:1.0: USB hub found

[17179576.792000] hub 4-0:1.0: 2 ports detected

[17179576.804000] Initializing USB Mass Storage driver...

[17179576.928000] hub 2-0:1.0: over-current change on port 1

[17179576.932000] usbcore: registered new driver usb-storage

[17179576.936000] USB Mass Storage support registered.

[17179576.940000] hub 2-0:1.0: over-current change on port 2

[17179576.948000] usbcore: registered new driver usbhid

[17179576.952000] drivers/usb/input/hid-core.c: v2.01:USB HID core driver

[17179577.148000] usb 3-1: new low speed USB device using uhci_hcd and address 2

[17179577.324000] input: USB HID v1.10 Mouse [Cypres Fullcolor Mouse?0008001?HIDMou] on usb-0000:00:1d.1-1

[17179577.328000] usbcore: registered new driver usbserial

[17179577.332000] drivers/usb/serial/usb-serial.c: USB Serial support registered for Generic

[17179577.336000] usbcore: registered new driver usbserial_generic

[17179577.340000] drivers/usb/serial/usb-serial.c: USB Serial Driver core v2.0

[17179577.344000] mice: PS/2 mouse device common for all mice

[17179577.348000] Advanced Linux Sound Architecture Driver Version 1.0.9b (Thu Jul 28 12:20:13 2005 UTC).

[17179577.352000] ACPI: PCI Interrupt 0000:00:1f.5[B] -> Link [LNKB] -> GSI 10 (level, low) -> IRQ 10

[17179577.356000] PCI: Setting latency timer of device 0000:00:1f.5 to 64

[17179577.520000] input: AT Translated Set 2 keyboard on isa0060/serio0

[17179577.672000] intel8x0_measure_ac97_clock: measured 53129 usecs

[17179577.676000] intel8x0: clocking to 48000

[17179577.680000] ALSA device list:

[17179577.684000]   #0: Intel 82801DB-ICH4 with unknown codec at 0xd0000c00, irq 10

[17179577.688000] oprofile: using timer interrupt.

[17179577.696000] NET: Registered protocol family 2

[17179577.736000] IP route cache hash table entries: 4096 (order: 2, 16384 bytes)

[17179577.740000] TCP established hash table entries: 16384 (order: 5, 131072 bytes)

[17179577.744000] TCP bind hash table entries: 16384 (order: 4, 65536 bytes)

[17179577.748000] TCP: Hash tables configured (established 16384 bind 16384)

[17179577.752000] TCP reno registered

[17179577.756000] ip_conntrack version 2.1 (4087 buckets, 32696 max) - 212 bytes per conntrack

[17179577.856000] ip_tables: (C) 2000-2002 Netfilter core team

[17179578.028000] ipt_recent v0.3.1: Stephen Frost <sfrost@snowman.net>.  http://snowman.net/projects/ipt_recent/

[17179578.032000] arp_tables: (C) 2002 David S. Miller

[17179578.072000] TCP bic registered

[17179578.076000] NET: Registered protocol family 1

[17179578.080000] NET: Registered protocol family 17

[17179578.084000] acpi-cpufreq: CPU0 - ACPI performance management activated.

[17179578.088000] Using IPI Shortcut mode

[17179578.092000] swsusp: Resume From Partition /dev/hda7

[17179578.092000] PM: Checking swsusp image.

[17179578.116000] swsusp: Suspend partition has wrong signature?

[17179578.136000] swsusp: Error -22 check for resume file

[17179578.136000] PM: Resume from disk failed.

[17179578.136000] ACPI wakeup devices: 

[17179578.140000] GLAN MPCI T394 MDM0 USB1 USB2 USB3 

[17179578.144000] ACPI: (supports S0 S3 S4 S5)

[17179578.152000] RAMDISK: Couldn't find valid RAM disk image starting at 0.

[17179578.192000] EXT3-fs: mounted filesystem with ordered data mode.

[17179578.196000] VFS: Mounted root (ext3 filesystem) readonly.

[17179578.200000] Freeing unused kernel memory: 172k freed

[17179578.204000] kjournald starting.  Commit interval 5 seconds

[17179578.296000] Synaptics Touchpad, model: 1, fw: 5.9, id: 0x126eb1, caps: 0xa04713/0x4000

[17179578.380000] input: SynPS/2 Synaptics TouchPad on isa0060/serio4

[17179583.004000] Adding 425680k swap on /dev/hda7.  Priority:-1 extents:1

[17179583.168000] EXT3 FS on hda3, internal journal

[17179587.436000] b44.c:v0.95 (Aug 3, 2004)

[17179587.440000] ACPI: PCI Interrupt 0000:02:02.0[A] -> Link [LNKD] -> GSI 6 (level, low) -> IRQ 6

[17179587.448000] eth0: Broadcom 4400 10/100BaseT Ethernet 00:c0:9f:50:94:ff

[17179588.800000] ohci1394: $Rev: 1299 $ Ben Collins <bcollins@debian.org>

[17179588.804000] ACPI: PCI Interrupt 0000:02:06.2[A] -> Link [LNKE] -> GSI 10 (level, low) -> IRQ 10

[17179588.872000] ohci1394: fw-host0: OHCI-1394 1.1 (PCI): IRQ=[10]  MMIO=[d020a000-d020a7ff]  Max Packet=[2048]

[17179590.148000] ieee1394: Host added: ID:BUS[0-00:1023]  GUID[00c09f000023d777]

[17179593.420000] b44: eth0: Link is up at 100 Mbps, full duplex.

[17179593.420000] b44: eth0: Flow control is off for TX and off for RX.

[17179602.432000] cs: IO port probe 0x100-0x4ff: excluding 0x4d0-0x4d7

[17179602.436000] cs: IO port probe 0x800-0x8ff: excluding 0x800-0x807

[17179602.440000] cs: IO port probe 0xc00-0xcff: clean.

[17179602.444000] cs: IO port probe 0xa00-0xaff: clean.

```

I have an Acer travelmate 4001WLMI (with a smart battery...).

please help me !!!!  :Sad:  :Sad: 

thanks a lot !!

----------

## pfourtz

First of all big thx for this how-to   :Very Happy: 

Now I have a little problem: I have an acer travelmate 8100, so I fixed my dsdt as explained in the article and now I use it with the initrd override method but I can't read the battery status. I also tried the static override method, without any success.However I have the file /proc/acpi/battery/BAT1 but its content is : 

```

present:                                           yes

ERROR:Unable to read battery status

```

Can anyone help??

thx

----------

## Hokage-dono

hello

I tried to compile my dsdt.dsl but a got 3 error

```

dsdt.dsl  5342: INCLUDE ("smbus-cm.asl")

Error    1028 -                       ^ Could not open include file (smbus-cm.asl (No such file or directory))

dsdt.dsl  5344: INCLUDE ("sbs-cm-2b.asl")

Error    1028 -                        ^ Could not open include file (sbs-cm-2b.asl (No such file or directory))

dsdt.dsl  5347: }

Error    1094 - ^ syntax error, unexpected '}'

ASL Input:  dsdt.dsl - 5350 lines, 202709 bytes, 2532 keywords

Compilation complete. 3 Errors, 0 Warnings, 0 Remarks, 0 Optimizations

```

here are de lines around :

```

Device (SLPB)

        {

            Name (_HID, EisaId ("PNP0C0E"))

        }

        OperationRegion (EXCO, SystemIO, 0x72, 0x02)

        Field (EXCO, ByteAcc, NoLock, Preserve)

        {

            INDX,   8, 

            DATA,   8

        }

        IndexField (INDX, DATA, ByteAcc, NoLock, Preserve)

        {

            Offset (0x20), 

            ACST,   1, 

            ECOK,   1, 

            WLES,   1, 

            BTES,   1, 

            W2KF,   2, 

            S4WP,   1, 

            FLA7,   1, 

            LSFG,   1, 

            LD10,   1, 

            PS2M,   1, 

            DISD,   3, 

            OVRL,   1, 

            Offset (0x22), 

            SLEE,   8, 

            BPFG,   8, 

            PWST,   8, 

            DATS,   8, 

            CM26,   8, 

            CM27,   8, 

            CM28,   16, 

            CM2A,   16, 

            F4FG,   1, 

            Offset (0x30), 

            CM30,   8, 

            CM31,   8, 

            CM32,   8

        }

    }

INCLUDE ("smbus-cm.asl")                             #line 5342

INCLUDE ("sbs-cm-2b.asl")

                                                                          #line 5344

}

                                                                           #line 5347

```

how can I fixe de 2 firts error ?? I thinks its 2 library of iasl that are missing no ??

And I don't understand the last error :s (there is nothing at this line :s)

thanks for your answer.

----------

## Hokage-dono

yeah !!!! it works !!!!!!

But I have still a problem with the fan of my acer TM 4001wlmi : the fan is turned on every X minutes. This not depends on the cpu load  :Sad:  :Sad: 

anyone can tell me how to fix thi problem ??

----------

## Hokage-dono

It seems to be solved with "powernowd" (i had the problem with cpudyn...).

But I observe a strange problem with the stepping frequecies of my pentium M dothan 1.5 ghz : for example, the max speed frequencies must be 1.5 ghz but here it's 1.6 ghz !! how is it possible ?? I don't know if the other stepping frequencies are good (does anyone have the right frequencies to compare ?).

----------

## djpharoah

how upto date is this HOW TO??

im asking as ACPI doesnt seem to work for my IBM A31 Laptop.

anyone seem to know of any other HOW TOs for ACPI

----------

## G2k

I have a Sony Vaio VGN-FS660/W and prety much only followed this guide: http://www.beyondabstraction.net/sonyfs660/

I compiled my kernel with the dsdt file that he provided and set the kernel comand line parameter to  acpi_os_name="Windows Windows XP" as he says. However, this looked like a typo on his behalf. Anyways, my pc booted up fine but I was not sure how to actually...make the computer suspend. What do I have to type/click?

So I found this guide and tried setting the same kernel parameter to acpi_os_name="Microsoft Windows XP". My kernel didn't boot up and I got the following error message:

```
ACPI: Overriding _OS definition to "Microsoft Windows XP"

    ACPI-0294: *** Info: Table [DSDT] repaced by host OS

CPU0: Intel(R) Pentium(R) M processor 1.73 GHz stepping 08

Total of 1 processors activated (261.63 Bogo MIPS).

ENABLING IO-APIC IRQs

..TIMER: vector=0x31 pin1=2 pin2=-1

..MP-BIO bug: 8254 timer not connected to IO_APIC

...trying to set up timer (IRQ0) through the 8259A ... failed.

...trying to set up timer as Virtual Wire IRQ ... failed

...trying to set up timer as ExtINT IRQ ... failed  :(.

Kernel panic not syncing: IO_APIC + timer doesn't work!

Boot with apic=debug and send a report. Then try booting with the 'noapic' option.
```

...so I don't know what's up. As I said, I followed the Vaio guide and used the guy's dsdt.h file compiling it into the kernel and passing in acpi_os_name="Windows Windows XP" in my grub.conf. What should I do?

EDIT: I read that using 'acpi_skip_timer_override' could fix the problem, which would enable me to use acpi_os_name="Microsoft Windows XP" ...but is that what I really want? I just want to be able to suspend lile the guy in the guide does   :Sad: 

----------

## kiddo_23

Hi,

I would like to access CMOS NVRAM using acpi. I have the following codes:

    Device(RTC)

    {

	Name(_HID,EISAID("PNP0B00"))

	Name(_CRS,ResourceTemplate()

	{

	    IO(Decode16,0x70,0x70,0x1,0x2)

	    IRQ(Edge,ActiveHigh,Exclusive) {0x8}

	})

	  OperationRegion(TOCN, CMOS, 0, 0x7D)		

	  Field(TOCN, ByteAcc, NoLock, Preserve)	

	  {	

		CM00, 8,

		,272,

		CM01, 8,

		CM02, 8,

		,696,

		CM03, 8

	  }	

    }

And i trying to read a offset frm CM01 using the below codes:

                Method(_STA)

                {

	   Store(CM01, local0)	

	   And(Local0, 0x40,local1)

	   if(LEqual(Local1, 0x40)) {			

	         Store(_DS_NORMAL, Local0)

	         Return(Local0)

	 }

	   else{

	  	Store(0x00,Local0)

	   	Return(Local0)

	 }

The values that i have read back is always '1' regardless of the changes i made to it at BIOS setup. Can any1 tell me if i have written the codes correctly...thks  :Smile: 

----------

## happydude

Awesome post - I had problems with my clevo D900T overheating resulting in persistant shutdowns but its fixed now!   :Very Happy: 

One thing I did find is it's best to apply the initrd patch to a vanilla or gentoo kernel - I had issues using kernel-2-6-14-nitro2 which (theoretically) already had the patch applied.

Thanks again for making it possible for me to compile large files once again!

----------

## wlchase

I read through most of this thread, thought I'd try to get my Toshiba Satellite L15-S104 fully functional, then d/l'd the generic Satellite DSDT from the repository, went through the compile, adding to my initramfs, rebooted, and couldn't tell any change.

I was going to reconnect to the 'net and troubleshoot some more when the beast froze solid. Now I appear to have a flat form factor doorstop.   :Sad: 

I powered off, keyboard and mouse were unresponsive, no screen updates, and when I this power button now, I get a flash of LED's, and nothing. No POST, no BIOS, no screen, no keyboard response to caps- or numlock, nada.

I've tried attaching to an external monitor and keyboard, but it's dead, Jim!

Just exercise caution, folks!

Bill

----------

## Noven

I'm trying to edit my broken dsdt, and the only errors I have left are "error 1061- Object does not exist". This doesn't get fixed by applying the various solutions for "error 1022 - Object does not exist". Google has very very few results for error 1061, and none of them were any help. Anyone fixed an error of this type and have some pointers for me?

----------

## fruk

i have an Acer Travelmate 2413 laptop, acpi 2.0 and gentoo-sources 2.6.14-r5 kernel. I corrected my DSDT (there were only some warnings left), added ec_burst=1 to my kernel commandline and now I'm able to see the battery status correctly.

it took me a while, but was a great lesson for me.. thanks

----------

## sandeen

"Microsoft Windows XP" is not a proper thing to set for the acpi_os_name boot parameter, near as I can tell.

Linux by default sets _OS as "Microsoft Windows NT" - see include/acpi/acconfig.h:

```
/*

 * OS name, used for the _OS object.  The _OS object is essentially obsolete,

 * but there is a large base of ASL/AML code in existing machines that check

 * for the string below.  The use of this string usually guarantees that

 * the ASL will execute down the most tested code path.  Also, there is some

 * code that will not execute the _OSI method unless _OS matches the string

 * below.  Therefore, change this string at your own risk.

 */

#define ACPI_OS_NAME                    "Microsoft Windows NT"

```

XP and above uses the string "Windows 2001" and the _OSI (not _OS) method; see:

http://www.microsoft.com/whdc/system/pnppwr/powermgmt/_OSI-method.mspx for example...

Near as I can tell, you can query the _OSI method with any strings & see if that support is there.  Linux

advertises all of these strings:

```

/*

 * Strings supported by the _OSI predefined (internal) method.

 * When adding strings, be sure to update ACPI_NUM_OSI_STRINGS.

 */

const char *acpi_gbl_valid_osi_strings[ACPI_NUM_OSI_STRINGS] = {

        /* Operating System Vendor Strings */

        "Linux",

        "Windows 2000",

        "Windows 2001",

        "Windows 2001.1",

        "Windows 2001 SP0",

        "Windows 2001 SP1",

        "Windows 2001 SP2",

        "Windows 2001 SP3",

        "Windows 2001 SP4",

        /* Feature Group Strings */

        "Extended Address Space Descriptor"

};
```

so when a DSDT does, for example:

```
                           If (\_OSI ("Windows 2001"))

```

then it will match for Linux.

Setting acpi_os_string to anything other than the default will probably break more bioses than it fixes, I'd think.

----------

## pasi

FYI:

If you get errors about unknown reserved name etc. from _WED and _WDG methods, try commenting them out completely... they are windows only thingys, used by the Windows WMI (Windows Instrumentation), which afaik, are not used in Linux in any way   :Wink: 

----------

## Aonoa

I came to think that my ACPI was unstable and decided to do some tests. Whenever the DSDT is absent from dmesg output my system is stable, and whenever it is present it is unstable. At least that is my conclusion so far. When trying to compile my dsdt.dat I get these errors:

```
dsdt.dsl   513:             If (LEqual (And (PDC0, 0x0A), 0x0A))

Error    1061 -           Object does not exist ^  (PDC0)

dsdt.dsl   518:             If (LEqual (And (PDC1, 0x0A), 0x0A))

Error    1061 -           Object does not exist ^  (PDC1)

dsdt.dsl   560:                         If (LNot (LEqual (And (PDC1, 0x0A), 0x0A)))

Error    1061 -                             Object does not exist ^  (PDC1)
```

The relevant section looks like this:

```
Method (PNOT, 0, Serialized)

    {

        If (HTTE)

        {

            If (LEqual (And (PDC0, 0x0A), 0x0A))

            {

                Notify (\_PR.CPU0, 0x80)

            }

            If (LEqual (And (PDC1, 0x0A), 0x0A))

            {

                Notify (\_PR.CPU1, 0x80)

            }

        }
```

```
Method (_TMP, 0, Serialized)

            {

                If (ECON)

                {

                    Store (\_SB.PCI0.LPCB.EC.TS1R, Local0)

                    If (LAnd (LAnd (LEqual (OSYS, 0x07D1), GPIC), LAnd (HTTE, PSVT)))

                    {

                        If (LNot (LEqual (And (PDC1, 0x0A), 0x0A)))

                        {

                            If (LGreater (Local0, PSVT))

                            {

                                If (LEqual (WTHT, Zero))

                                {

                                    Store (One, WTHT)

                                    Store (0x34, SMIF)

                                    Store (Zero, TRP0)

                                }

                            }
```

The maker of my DSDT is Sony, and the machine in question is a Sony VAIO VGN-FS115Z. I'm hoping for some hints as to what I could do to fix my DSDT. Thanks in advance.  :Smile: 

----------

## secretz

Am I understanding the guide right: You dont have to apply any patches with the bootsplash technique? 

I followed the 9B - initrd until I noticed I should probably follow the bootsplash techinque. I had already applied the patch though. 

ATM dmesg gives me "ACPI: Looking for DSDT in initrd... not found." altough I have surely set the DSDT correctly.

Does it matter that I use genkernel? The initrd I use is initramfs-genkernel-x86_64-2.6.15-gentoo-r1.

Thanks for any help.

----------

## secretz

Nevermind, I got it fixed.

It could be something else but I did it again and consciously only changed 

```
echo "INITRDDSDT123DSDT123" >> /boot/initrd-1024x768-dsdt
```

from 9C step 2 to this:

```
echo -n "INITRDDSDT123DSDT123" >> /boot/initrd-1024x768-dsdt
```

It's like that in http://gaugusch.at/kernel.shtml so should it be changed here too?[/code]

----------

## pargilo

I have a strange problem because I can't make acpi work. I followed the first post word by word. My laptop is a Acer Aspire 1680 with gentoo kernel 2.6.15-r1 . I followed all choosing to use the initrd option. The dmesg output says there are no problems with ACPI. Any suggestions?

Thanks a lot

Giancarlo (Italy)

----------

## passshok

ACPI problem on Acer Aspire 1683WLMi (solved)

1. First we need to download:

http://sourceforge.net/projects/sbs-linux/

http://developer.intel.com/technology/iapc/acpi/downloads.htm

2. Compile iasl:

```
# cd acpica-unix-20050930/compiler

# make

```

3. Now we need to cat our dsdt and patch it with the patch from http://sourceforge.net/projects/sbs-linux/.

```
# cd sbs-cm-20051112

# cat /proc/acpi/dsdt > dsdt.dat

# ../acpica-unix-20050930/compiler/iasl -d dsdt.dat

# patch < acer-tm32xx-sbs-cm.diff

# ../acpica-unix-20050930/compiler/iasl dsdt.dsl

```

4. There are some more ways to use our new dsdt, but I have decided to include it into my kernel, as I have already patched kernel. Let's enable the “Read Custom DSDT”.

```
- Power Management support --->

      ACPI ... --->

            [*] Read Custom DSDT

```

This option depends on the following:

```
Device Drivers ---> 

     Generic Driver Options ---> 

          [ ] Select only drivers that don't need compile-time external firmware

```

5. Everything seems good, but here comes another problem. If you recompile your kernel and reboot you will see, that some of your keystrokes are missed. To prevent this, the patch is needed. This patch can be found here http://www.arakhne.org/IMG/gz/nospinlock_patches.tar.gz.

```
# patch -p1 -d /usr/src/linux < acpi-ec-nospinlock-2.6.11.diff

```

6. You probably need to set “ec_burst” option to 0, as I read in one of the readme's. This option was included to add some ac functionality to kernel. Add this kernel option to your bootloader config file:

```
ec_burst=0

```

7.

```
# make && make install
```

and reboot your system.

Some disadvantages of this method.

Everything works good, but approximately every 5 seconds my touchpad stops till a moment and this is annoying. I don't know how to fix solve this problem. If you have any ideas, you are welcome!   :Very Happy: 

----------

## metalshark

@passshok

Look up the Toshiba Satellite A30 pages - 2 issues plague them:

1) The synaptics touch pad when even lightly touched jams up keyboard entry - adding psmouse.rate=40 to your grub boot line or adding "psmouse rate=40" to your /etc/modules.d/synaptics (for using an after compiled module - if you don't know what I'm on about then try the first one).

2) Unknown keys when struck (and randomly even when they are not) cause the kernel to take time out. These are the multimedia keys - the solutions are few and far between.

Good luck.

----------

## Legoguy

 *joker wrote:*   

> hi guys, I need your help!
> 
> I have Acer Aspire 5024 laptop and I can't monitor my battery 
> 
> here's the info:
> ...

 

Similar problems here. Everything is in /proc/acpi/ dir, such as thermal_zone, but it does not report the value (it's always 0) and the same thing happens with the battery's present rate of discharge.

Relevant messages in dmesg:

```
ACPI: PCI interrupt for device 0000:00:14.6 disabled

    ACPI-0412: *** Error: Handler for [EmbeddedControl] returned AE_TIME

    ACPI-0508: *** Error: Method execution failed [\_TZ_.THRM._TMP] (Node ffff810001de9d40), AE_TIME

    ACPI-0412: *** Error: Handler for [EmbeddedControl] returned AE_TIME

    ACPI-0508: *** Error: Method execution failed [\_SB_.PCI0.LPC0.EC0_._Q1C] (Node ffff810001dec680), AE_TIME
```

HP Pavilion dv8000z, with AMD Turion ML-44 2.4ghz, amd64. 

Warnings from iasl:

```
dsdt.dsl   561:             Name (_WDG, Buffer (0x50)

Warning  2096 -                      ^ Unknown reserved name (_WDG)

dsdt.dsl  1042:             Method (_WED, 1, NotSerialized)

Warning  2096 -  Unknown reserved name ^  (_WED)

ASL Input:  dsdt.dsl - 5884 lines, 233362 bytes, 2492 keywords

AML Output: DSDT.aml - 28222 bytes 584 named objects 1908 executable opcodes

Compilation complete. 0 Errors, 2 Warnings, 0 Remarks, 882 Optimizations
```

Any help here would be appreciated, I have no idea where to start with these unknown reserved name things.Last edited by Legoguy on Sat Feb 25, 2006 1:06 am; edited 1 time in total

----------

## MattJ

Many years on since this post... But THANK YOU! Finally solved problems (i think) on my toshiba equium... Suspend to ram paps out on resume... but it wasnt even recognising i had ACPI before... so now i can actually see when by batteries about to die.. and do processor throttleing.

Cheers again *virtual pint*

----------

## linxsam

having some minor acpi problems under linux with my MD95500 laptop, i tryed to recompile my dsdt

i finaly have have warnings left :

 #./isal -tc dsdt.dsl 

```

dsdt.dsl   877:             Method (_BIF, 0, NotSerialized)

Warning  2085 -                        ^ Not all control paths return a value (_BIF)

dsdt.dsl   877:             Method (_BIF, 0, NotSerialized)

Warning  2078 -                        ^ Reserved method must return a value (_BIF)

ASL Input:  dsdt.dsl - 5602 lines, 203371 bytes, 2075 keywords

AML Output: DSDT.aml - 19229 bytes 590 named objects 1485 executable opcodes

Compilation complete. 0 Errors, 2 Warnings, 0 Remarks, 2 Optimizations

```

and the code for the method :

 to warnings related code 

```

            Method (_BIF, 0, NotSerialized)

            {

                If (LEqual (^^PCI0.LPCB.EC.ECOK, Zero))

                {

                    Store (One, Index (BIFB, Zero))

                    Store (0x0514, Index (BIFB, One))

                    Store (0x0514, Index (BIFB, 0x02))

                    Store (One, Index (BIFB, 0x03))

                    Store (0x2A30, Index (BIFB, 0x04))

                    Store (0x0138, Index (BIFB, 0x05))

                    Store (0x9C, Index (BIFB, 0x06))

                    Store (0x0D, Index (BIFB, 0x07))

                    Store (0x0D, Index (BIFB, 0x08))

                    Store ("CA54200", Index (BIFB, 0x09))

                    Store ("1", Index (BIFB, 0x0A))

                    Store (" ", Index (BIFB, 0x0B))

                    Store (" ARIMA  ", Index (BIFB, 0x0C))

                }

                Else

                {

                    Acquire (^^PCI0.LPCB.EC.MTX0, 0xFFFF)

                    Store (Zero, Index (BIFB, Zero))

                    Store (^^PCI0.LPCB.EC.BDV, Local1)

                    Store (^^PCI0.LPCB.EC.BDC, Local0)

                    Multiply (Local0, Local1, Local0)

                    Divide (Local0, 0x03E8, Local2, Local0)

                    Store (Local0, Index (BIFB, One))

                    Store (^^PCI0.LPCB.EC.BFC, Local0)

                    Multiply (Local0, Local1, Local0)

                    Divide (Local0, 0x03E8, Local2, Local0)

                    Store (Local0, Index (BIFB, 0x02))

                    Store (^^PCI0.LPCB.EC.BTC, Index (BIFB, 0x03))

                    Store (^^PCI0.LPCB.EC.BDV, Index (BIFB, 0x04))

                    Store (^^PCI0.LPCB.EC.BCW, Local0)

                    Multiply (Local0, Local1, Local0)

                    Divide (Local0, 0x03E8, Local2, Local0)

                    Store (Local0, Index (BIFB, 0x05))

                    Store (^^PCI0.LPCB.EC.BCL, Local0)

                    Multiply (Local0, Local1, Local0)

                    Divide (Local0, 0x03E8, Local2, Local0)

                    Store (Local0, Index (BIFB, 0x06))

                    Store (^^PCI0.LPCB.EC.BCG, Local0)

                    Multiply (Local0, Local1, Local0)

                    Divide (Local0, 0x03E8, Local2, Local0)

                    Store (Local0, Index (BIFB, 0x07))

                    Store (^^PCI0.LPCB.EC.BG2, Local0)

                    Multiply (Local0, Local1, Local0)

                    Divide (Local0, 0x03E8, Local2, Local0)

                    Store (Local0, Index (BIFB, 0x08))

                    Store (" LI4403A  ", Index (BIFB, 0x09))

                    Store ("W810", Index (BIFB, 0x0A))

                    Store (^^PCI0.LPCB.EC.BSN0, Local0)

                    Store (^^PCI0.LPCB.EC.BSN1, Local1)

                    Store (^^PCI0.LPCB.EC.BTY0, Local0)

                    Store (^^PCI0.LPCB.EC.BTY1, Local1)

                    Store (^^PCI0.LPCB.EC.BTY2, Local2)

                    Store (^^PCI0.LPCB.EC.BTY3, Local3)

                    Store (Buffer (0x05) {}, Local4)

                    PBFE (Local4, Zero, Local0)

                    PBFE (Local4, One, Local1)

                    PBFE (Local4, 0x02, Local2)

                    PBFE (Local4, 0x03, Local3)

                    PBFE (Local4, 0x04, Zero)

                    Name (STRI, "xxxxxxxx")

                    Store (Local4, STRI)

                    Store (STRI, Index (BIFB, 0x0B))

                    If (^^PCI0.LPCB.EC.BATP)

                    {

                        Store (" ARIMA  ", Index (BIFB, 0x0C))

                    }

                    Else

                    {

                        Store (" ", Index (BIFB, 0x0C))

                    }

                    Release (^^PCI0.LPCB.EC.MTX0)

                    Return (BIFB)

                }

            }

```

any idea how to get rid of this warnings ?

----------

## metalshark

Is it possible for you to click on the email link below this post and send your dsdt file - can't promise anything - but it won't take long for me to have a look.

----------

## linxsam

well don't see any email link... but instead uploaded it here : dsdt.dsl.

thx for the fast answer.

----------

## metalshark

Ok it's an if statement in the function that is causing the problem. Only the else part actually returns anything - so I moved the return from the else statement and put it at the end so both the if and the else actually return something - think this'll do the trick.

Uploaded it to http://www.metalshark.co.uk/dsdt.dsl - good luck!

The bottom four lines

```
                    Release (^^PCI0.LPCB.EC.MTX0)

                    Return (BIFB)

                }

            } 
```

become

```
                    Release (^^PCI0.LPCB.EC.MTX0)

                }

                Return (BIFB)

            } 
```

PS - I'm not taking the mickey (just being clear) but if you look below this post to the left it says "Back to top" now follow the line to the right and you'll see a button labelled email, yet somehow you found it - as I got your message.

----------

## linxsam

arg, i'm a blind fool....

thanks, i moved the return statement on it compiled without any problem...

> i read it over 10 times, but didn't notice the return statement was one braket to hight.

thanks  :Wink: 

----------

## metalshark

Just a tip - but I have to edit loads of DSDT's, never actually "fix" them - just remove errors till they work (to fix them you need to know lots about ACPI not just debugging syntax errors). I use kate or jedit (if on a windoze pc *shivers*) as it makes it REALLY easy to see the brackets and even indents code nicely - I used to have the same issues of aml code blindness as you have just had. It's not a pretty language. Kate has a nice terminal thing (for recompiling aml) at the bottom - and allows you to split the screen to see your original and your new one - plus you can edit the highlighting to change colour when you forget returns, etc. Makes it a simple case of open the file up and see what comes up in red (my colour of choice for messed up code). Still don't know how to include a skull and cross bones next to OS = "Microsoft Windows*" anyone got any ideas?  :Razz:  - maybe highlighting in Kate just isn't that advanced yet...

----------

## Gremo

hi, i'm reading this thread because i have no ac_adapter events shown.

i have successfully patched my dsdt, however when i boot with the kernel patched (method: initrd DSDT override) iasl show me the same errors...

any ideas?

kernel version: 2.6.15-gentoo-r7

notebook: sony vaio fs115b

patch taken from: http://gaugusch.at/kernel.shtml (2.6.14 to 2.6.15 (by Eric Piel))

----------

## theRealMorpheu5

Hi guys, I'm still having some troubles with my beloved Aspire 1652WLMi. I did all the stuff in the first post and everything went ok except for a single, countless, particular: the kernel stops booting at a certain point. I'm transcribing here what I'm seeing (the most relevant part, at least):

```
ACPI: Looking for DSDT in initrd... found (at offset 0x00).

    ACPI-0284: *** Info: Table [DSDT] replaced by host OS

ACPI: setting ELCR to 0e00 (from 0c00)

    [... infos on the CPU...]

checking if image is initramfs...it isn't (bad gzip magic numbers); looks like an initrd

    [... things about freeing RAM, NET and EISA...]

ACPI: bus type pci registered

PCI: PCI BIOS revision 2.10 entry at 0xfd7be, last bus=7

PSI: Using MMCONFIG

ACPI: Subsystem revision 20050902
```

Stops here and doesn't respond to INTs like keystrokes, CTRL+ALT+DEL... nothing seems to perturbate its interior peace...  :Smile:  Any ideas?

EDIT: Forgetting to give the kernel options: acpi=noirq irqpoll. Is it really necessary? Isn't there another way? IRQ polling must slow down my machine...

EDIT 2: The problem seemed to be the DSDT that I downloaded from acpi.sf.net... editing by hand let me compile and reading SANYO battery status (hopefully) correctly. Now I'm facing another problem: if I try to recompile the same file I get 200+ errors... and I can't see why.

----------

## theRealMorpheu5

This seems to be solved, I'm now booting with noapictimer instead of acpi=noirq irqpoll... does anybody have some suggestions more? I'm looking forward to write an howto in the next days on this issue.

----------

## MickKi

Hi All,

Like a previous poster I am getting a lot of 1061 errors.  Any suggestions for fixes?

```
# iasl -tc dsdt.dsl

 

Intel ACPI Component Architecture

ASL Optimizing Compiler version 20060127 [Apr  9 2006]

Copyright (C) 2000 - 2006 Intel Corporation

Supports ACPI Specification Revision 3.0a

 

dsdt.dsl    75:              If (LEqual (\C001, 0x00))

Error    1061 -       Object does not exist ^  (\C001)

 

dsdt.dsl  3951:   Method (_OFF, 0, NotSerialized)

Warning  2085 -   Not all control paths return a value ^  (_OFF)

 

dsdt.dsl  5359:       \_SB.C03E.C052.C19E

Error    1061 -   Object does not exist ^  (\_SB.C03E.C052.C19E)

 

dsdt.dsl  6589:                 \_PR.C000

Error    1061 -   Object does not exist ^  (\_PR.C000)

 

dsdt.dsl  6645:         Notify (\_PR.C000, 0x80)

Error    1061 -   Object does not exist ^  (\_PR.C000)

 

dsdt.dsl  6718:         Notify (\_PR.C000, 0x80)

Error    1061 -   Object does not exist ^  (\_PR.C000)

 

ASL Input:  dsdt.dsl - 6976 lines, 246688 bytes, 3919 keywords

Compilation complete. 5 Errors, 1 Warnings, 0 Remarks, 1119 Optimizations
```

Unfortunately googling has not helped on this occasion, so your pointers would be much appreciated.

----------

## dgaffuri

I solved 1061 errors with CPU0 adding an external declaration

```
DefinitionBlock ("DSDT.aml", "DSDT", 1, "TOSHIB", "A000B   ", 537199409)

{

    External (\_PR.CPU0)
```

Hope this may help.

----------

## MickKi

Thanks dgaffuri,

. . . but I don't know what is an "external declaration", or which external declaration would be appropriate in my case.  Any suggestions?

----------

## dgaffuri

 *MickKi wrote:*   

> Thanks dgaffuri,
> 
> . . . but I don't know what is an "external declaration", or which external declaration would be appropriate in my case.  Any suggestions?

 

Looking at the error I would say

```
External (\_PR.C000)
```

----------

## MickKi

Wow!  It worked!    :Very Happy: 

Thank you dgaffuri.  I managed to fix at least some of these 1061 errors.  I entered the following two lines:

```
DefinitionBlock ("DSDT.aml", "DSDT", 1, "COMPAQ", "EVON600C", 0x00010000)

{

  External (\C001)                    <--------

  External (\_PR.C000)                <--------

    Name (C002, Package (0x04)

    {

        0x03,
```

which got rid of the errors:

dsdt.dsl    75:              If (LEqual (\C001, 0x00)) 

Error    1061 -       Object does not exist ^  (\C001)

and:

dsdt.dsl  6589:                 \_PR.C000 

Error    1061 -   Object does not exist ^  (\_PR.C000) 

dsdt.dsl  6645:         Notify (\_PR.C000, 0x80) 

Error    1061 -   Object does not exist ^  (\_PR.C000) 

dsdt.dsl  6718:         Notify (\_PR.C000, 0x80) 

Error    1061 -   Object does not exist ^  (\_PR.C000)

Here's where I am now:

```
# iasl -tc dsdt.dsl

Intel ACPI Component Architecture

ASL Optimizing Compiler version 20060127 [Apr  9 2006]

Copyright (C) 2000 - 2006 Intel Corporation

Supports ACPI Specification Revision 3.0a

dsdt.dsl  3953:                             Method (_OFF, 0, NotSerialized)

Warning  2085 -   Not all control paths return a value ^  (_OFF)

dsdt.dsl  5361:                         \_SB.C03E.C052.C19E

Error    1061 -                     Object does not exist ^  (\_SB.C03E.C052.C19E)

ASL Input:  dsdt.dsl - 6978 lines, 246730 bytes, 3919 keywords

Compilation complete. 1 Errors, 1 Warnings, 0 Remarks, 1120 Optimizations
```

I tried to enter an external declaration for \_SB.C03E.C052.C19E and the compiler came back with more than 200 errors!

What should I try next?

[EDIT:]  I also tried to inc. the modified dsdt.hex into my kernel and it now fails as follows:

```
# make && make modules_install

  CHK     include/linux/version.h

  SPLIT   include/linux/autoconf.h -> include/config/*

  CHK     include/linux/compile.h

  CHK     usr/initramfs_list

  CC      drivers/acpi/osl.o

drivers/acpi/osl.c:57:38: dsdt_table.h: No such file or directory

drivers/acpi/osl.c: In function `acpi_os_table_override':

drivers/acpi/osl.c:256: error: `AmlCode' undeclared (first use in this function)

drivers/acpi/osl.c:256: error: (Each undeclared identifier is reported only once

drivers/acpi/osl.c:256: error: for each function it appears in.)

make[2]: *** [drivers/acpi/osl.o] Error 1

make[1]: *** [drivers/acpi] Error 2

make: *** [drivers] Error 2
```

The dsdt_table.h file is there alright, I checked:

```
]# ls -la /usr/src/linux-2.6.15-gentoo-r1/include/acpi/dsdt_table.h

-rw-r--r-- 1 root root 252490 Apr 15 19:33 /usr/src/linux-2.6.15-gentoo-r1/include/acpi/dsdt_table.h
```

I am not sure what's wrong.  Is it meant to have zero errors or warnings for it to compile?

[EDIT/] 

Thank you again for all your help.

----------

## TheRuler

Hello,

my DSDT is also broken can you help me?

 *Quote:*   

> Intel ACPI Component Architecture
> 
> ASL Optimizing Compiler version 20060127 [Apr 15 2006]
> 
> Copyright (C) 2000 - 2006 Intel Corporation
> ...

 

1. warning:

 *Quote:*   

> 
> 
> [...]
> 
> DefinitionBlock ("DSDT.aml", "DSDT", 1, "P50CA", "P50CA001", 0x00000001)
> ...

 

2. warning and 3. error

 *Quote:*   

> 
> 
> [...]
> 
> Method (WFZF, 1, NotSerialized) 
> ...

 

Please help me, very big thanks.

----------

## ale-X

Hi to all,

I have succesfully recompiled the DSDT but my system says "battery is absent" and the dmesg says:

```

search_node c146ca00 start_node c146ca00 return_node 00000000

    ACPI-0508: *** Error: Method execution failed [\_SB_.BAT1._BST] (Node c146b900), AE_NOT_FOUND

    ACPI-0339: *** Error: Looking up [Z00B] in namespace, AE_NOT_FOUND

search_node c146ca00 start_node c146ca00 return_node 00000000

    ACPI-0508: *** Error: Method execution failed [\_SB_.BAT1._BST] (Node c146b900), AE_NOT_FOUND

    ACPI-0339: *** Error: Looking up [Z00B] in namespace, AE_NOT_FOUND

search_node c146ca00 start_node c146ca00 return_node 00000000

    ACPI-0508: *** Error: Method execution failed [\_SB_.BAT1._BST] (Node c146b900), AE_NOT_FOUND

    ACPI-0339: *** Error: Looking up [Z00B] in namespace, AE_NOT_FOUND

search_node c146ca00 start_node c146ca00 return_node 00000000

    ACPI-0508: *** Error: Method execution failed [\_SB_.BAT1._BST] (Node c146b900), AE_NOT_FOUND

    ACPI-0339: *** Error: Looking up [Z00B] in namespace, AE_NOT_FOUND

search_node c146ca00 start_node c146ca00 return_node 00000000

    ACPI-0508: *** Error: Method execution failed [\_SB_.BAT1._BST] (Node c146b900), AE_NOT_FOUND

alex@Laptop ~ $                                                                                        

```

How can I solve this problem? Thanks to all.

----------

## hakbeest

I have a buggy DSDT too, unfortunately /proc/acpi doesn't exist, so I can't cat /proc/acpi/dsdt. I get the following acpi related messages during boot:

 BIOS-e820: 000000003bfd0000 - 000000003bfde000 (ACPI data)

 BIOS-e820: 000000003bfde000 - 000000003c000000 (ACPI NVS)

ACPI: RSDP (v000 ACPIAM                                ) @ 0x00000000000f96e0

ACPI: RSDT (v001 A M I  OEMRSDT  0x10000514 MSFT 0x00000097) @ 0x000000003bfd0000

ACPI: FADT (v002 A M I  OEMFACP  0x10000514 MSFT 0x00000097) @ 0x000000003bfd0200

ACPI: MADT (v001 A M I  OEMAPIC  0x10000514 MSFT 0x00000097) @ 0x000000003bfd0390

ACPI: MCFG (v001 A M I  OEMMCFG  0x10000514 MSFT 0x00000097) @ 0x000000003bfd03f0

ACPI: OEMB (v001 A M I  AMI_OEM  0x10000514 MSFT 0x00000097) @ 0x000000003bfde040

ACPI: DSDT (v001  1ABZR 1ABZRB49 0x00000b49 INTL 0x02002026) @ 0x0000000000000000

ACPI: PM-Timer IO Port: 0x808

ACPI: Local APIC address 0xfee00000

ACPI: LAPIC (acpi_id[0x01] lapic_id[0x00] enabled)

ACPI: LAPIC (acpi_id[0x02] lapic_id[0x81] disabled)

ACPI: Skipping IOAPIC probe due to 'noapic' option.

Using ACPI for processor (LAPIC) configuration information

 tbxface-0109 [02] load_tables           : ACPI Tables successfully acquired

ACPI Error (nssearch-0311): Bad character in ACPI Name: 43035350 [20060127]

ACPI Error (dswload-0305): [0x43035350] (NON-ASCII) Namespace lookup failure, AE_BAD_CHARACTER

ACPI Exception (psloop-0281): AE_BAD_CHARACTER, During name lookup/catalog [20060127]

ACPI Exception (tbxface-0115): AE_BAD_CHARACTER, Could not load namespace [20060127]

ACPI Exception (tbxface-0122): AE_BAD_CHARACTER, Could not load tables [20060127]

ACPI: Unable to load the System Description Tables

ACPI: Subsystem revision 20060127

ACPI: Interpreter disabled.

----------

## hakbeest

By using a patch that accepts the illegal 0x03 character (http://bugzilla.kernel.org/show_bug.cgi?id=6522) I was able to get ACPI working. It turned out that there were no other errors. My DSDT was compiled by the Intel compiler, according to MSI this one:

Intel ACPI Component Architecture ASL Compiler X2026 [Aug 31 2001]

Supports ACPI Specification Revision 2.0

which seems a bit dated as my version says:

Intel ACPI Component Architecture ASL Optimizing Compiler version 20060127 [May  8 2006]

Supports ACPI Specification Revision 3.0a

By replacing the illegal character by an 'S' I was able to decompile and recompile. I'm trying to get something definate on this illegal character from MSI, but their technical support seem to lack the requisite English and technical skills.

----------

## Augur

Hi, 

I just bought an new laptop, and i am trying to fix some acpi problems but I don't understand 

iasl errors

```

dsdt.dsl     1: ACPI And (Local1, 0xFF, Local1)

Error    4094 -    ^ syntax error, unexpected PARSEOP_NAMESEG, expecting PARSEOP_DEFINITIONBLOCK

```

The code seems correct, for exemple here is one method extract form a device section

```

            Method (SMBK, 1, Serialized)

            {

                ShiftRight (Arg0, 0x08, Local0)

                And (Local0, 0xFF, Local0)

                If (Local0)

                {

                    ShiftRight (Arg0, 0x10, Local0)

                    And (Local0, 0xFF, Local0)

                    ShiftRight (Arg0, 0x18, Local1)

                    And (Local1, 0xFF, Local1)

                    And (Arg0, 0x0F, Local3)

                    If (And (Local1, 0x01))

                    {

                        RBLK (Local1, Local0, Local3)

                    }

                    Else

                    {

                        WBLK (Local1, Local0, Local3)

                    }

                    Return (0x00)

                }

                Else

                {

                    ShiftRight (Arg0, 0x10, Local2)

                    And (Local2, 0xFF, Local2)

                    ShiftRight (Arg0, 0x18, Local1)

                    If (And (Local1, 0x01))

                    {

                        Return (DerefOf (Index (RBUF, Local2)))

                    }

                    Else

                    {

                        And (Arg0, 0xFF, Local1)

                        Store (Local1, Index (RBUF, Local2))

                        Return (0x00)

                    }

                }

            }

```

any ideas ?

Thanks in advance

----------

## screening

Please, anyone can help me with this warnings?, i don't have idea what can i do.

Intel ACPI Component Architecture

ASL Optimizing Compiler version 20051216 [Jan  9 2006]

Copyright (C) 2000 - 2005 Intel Corporation

Supports ACPI Specification Revision 3.0

dsdt.dsl  2589:                         Method (RVLT, 1, NotSerialized)

Warning  2085 -                                    ^ Not all control paths retur n a value (RVLT)

dsdt.dsl  3623:                         Method (OCOP, 1, NotSerialized)

Warning  2085 -                                    ^ Not all control paths retur n a value (OCOP)

dsdt.dsl  4010:                         Method (PROC, 3, NotSerialized)

Warning  2085 -                                    ^ Not all control paths retur n a value (PROC)

dsdt.dsl  4505:                             Store (PROC (Local0, Local1, 0x00), Local2)

Warning  2090 -                                       ^ Called method may not al ways return a value

dsdt.dsl  6142:                             Release (SMBA)

Warning  2097 -                Statement is unreachable ^

ASL Input:  dsdt.dsl - 8425 lines, 297000 bytes, 3224 keywords

AML Output: DSDT.aml - 26244 bytes 708 named objects 2516 executable opcodes

Compilation complete. 0 Errors, 5 Warnings, 0 Remarks, 835 Optimizations

My computer is a desktop, mother ASUS P5GDC Deluxe. If anyone can help... i appreciate.

PS: sorry 4 my bad english.

----------

## Moderato

Hey guys,

though, the last real answer is a little longer ago, I try to ask a little question in here.  :Razz: 

This IASL now reports "Compilation complete. 0 Errors, 0 Warnings, 0 Remarks, 36 Optimizations". I'm wondering, what it does mean by "36 Optimizations". The Code should now be "fixed" (I had just this _WAK-bug), but IASL still reports this message. Can I turn on the optimization somehow? I did not find any option, but a option to disable it. I'm not sure, this message is showing up every time and just after recompiling the table, too. However, I'm using the new, recompiled table and thought the optimizations would stuck just in there. It seem they aren't.

Any suggestions?

----------

## Gremo

different version of iasl produce different errors or NO ERRORS, what does it mean, try yourself

----------

## spindle

 *Gremo wrote:*   

> different version of iasl produce different errors or NO ERRORS, what does it mean, try yourself

 

I see the same thing happen for my board's dsdt (ABIT GD8). I used to get errors but now the acpica-unix-20060707 version gets

```
dedeX compiler # ./iasl -tc dsdt.dsl  

Intel ACPI Component Architecture

ASL Optimizing Compiler version 20060707 [Jul 15 2006]

Copyright (C) 2000 - 2006 Intel Corporation

Supports ACPI Specification Revision 3.0a

ASL Input:  dsdt.dsl - 5129 lines, 165330 bytes, 1842 keywords

AML Output: dsdt.aml - 15881 bytes 608 named objects 1234 executable opcodes

Compilation complete. 0 Errors, 0 Warnings, 0 Remarks, 36 Optimizations

```

Older version of the iasl compiler was getting a few errors.

So would this generally be consistant with the current kernel and be working now?

----------

## Moderato

I'd rather say yes, but keep in mind that the ACPI implementation in the Kernel is still somewhat experimental and far from being complete, though. Even if your DSDT is clean, there might remain some errors.

For me, Kernel 2.6.17 was changing the behavior when shutting down my Notebook - it's still not powering down properply, when I started a Desktop Environment like GNOME, KDE, FluxBox, BlackBox, XFCE (I'd rather say "when I did log-on in GDM"), but it's powering down, when I did not start any DE. X and GDM or the nVidia driver can't be the problems since it's powering down, when only X w/ GDM is running (but I don't have to log-in).

However, keep another thing in mind: modifing your firmware (-> your DSDT) can have unwanted "side effects", too. So, you might fixed one problem but this may _produced_ a lot more.

Also, no Kernel developer will help you with your problems, if you changed your DSDT since they may cannot locate the bug in the Kernel when it's hidden by an own DSDT.

You should try the following everytime before modifing anything:

Get the latest Kernel (development there is quite fast)

Get the latest video card drivers

Get the latest BIOS from your manufactor - don't try changing anything in it

Check, whether there are known issues with your version of X and the computer configuration looks similar to yours, or

Get the latest version of X

These are things, that _can_ help with those issues.

spindle: I'm not sure about this, but if your mobo/your BIOS was quite new, it's common that older version of the IASL show errors, because there might be some ACPI calls the old IASL didn't know. Check this line:

```
Supports ACPI Specification Revision 3.0a
```

If this is also "3.0a" at the older compiler, it's time to worry.  :Razz: 

But I think the supported ACPI version will be just lower then you might have.

And please, don't forget -> this guys are also just humans, errors might happen also to them.

Keep ACPI'ng.Last edited by Moderato on Sun Jul 16, 2006 3:53 pm; edited 1 time in total

----------

## spindle

Moderato: thanks for the helpful tips. 

I just reverted to the default dsdt that the kernel gets from the mobo (kernel 2.6.16-gentoo-r12). I'll run like this for a while, and see if it fixes my possible overheating problem (I was seeing  this issue before). I was running a modified dsdt, from an earlier attempt to fix a problem using the older 2005 IASL version. A while ago, I was trying to fix a problem with the termal reading on the CPU. It always said 40.0C and it still does anyway. I think your suspicion could be right, in trying to fix this problem I could have messed up some other important things in there.

The board is a fairly new model I think, from around summer 2005 I'm guessing (ABIT GD8). I'll check for a new BIOS too.

----------

## Moderato

Hi spindle,

interesting issue. Are you running a Laptop?

You could also change to Kernel 2.6.17.6 for instance (as I said - for me better ACPI features and the new exploit got fixed, too).

Make sure you activited all the ACPI features in the Kernel, and, if you own a Laptop, double check whether you have implemented the thermal_zone (Symbol ACPI_THERMAL) and also check for those AMD processor "hacks" for detecting overheating, soft lockups and so on. Don't forget to enable verbose ACPI debugging in the Kernel. Even if you don't have a Laptop, enable them all.

If this still didn't help subscribe to the ACPI Mailinglist, search the ACPI bugzilla (it's also a Mailinglist) for the symptoms you observed.

In the case nothing helped and the bug is not known, send a bug report the Kernel development team or the Kernel ACPI team. (If you know, what you are doing, have really a lot of _useful_ informations towards this, also compiled your Kernel with frame pointers and unwind informations, have debug stacks, straces etc pp you could also directly send a bug report to the ACPI maintainer, but I discourage you from doing this, sending it to the Kernel guys will be fine, too, and quite more useful.)

So long, good luck.

[EDIT] By the way: I know this strange behavior of showing only "40.0C" as temperature from my Desktop, too. I'm not sure whether this is a DSDT bug or a Kernel/ACPI bug, I didn't fixed it, because I never had "real" thermal problems. I checked the DSDT of my Desktop computer and freaked out a little bit when I saw all these errors. Although, I never had problems with ACPI, so an error doesn't mean automagically that everything is b0rken in the ACPI implementation.  :Smile: 

I also do not know how this bug behaves towards the THERMAL_ZONE which seems elementary. I'm worrying about this, now. But however, there might be some informative debug messages. [/EDIT]

----------

## spindle

 *Moderato wrote:*   

> interesting issue. Are you running a Laptop?

 

No it's a desktop, also it's an Intel chip. The interesting thing about the 40 degree thing is that even though it's always at 40 degrees is the kernel (I think it's the kernel) is kicking out messages when the CPU core goes above a threshold and says it's throttling the CPU. But I think this is a signal or something that is coming from the BIOS.

Also it's interesting that when I'm running ut2004 that while I do get these messages oftentimes while playing but I never see unstability there or anywhere else in the system, for that matter. I only see this issue when I'm doing a emerge (and I think I've only seen it when it does a lot of packages in one shot). But doing a lot of compilation is probably even more cpu intensive that ut2004 or anything else I do on my system for long stretches so I guess that can still make sense.

I'm not completely sure this is a thermal issue, just seems the most likely at this point. It's pretty hard to tell if I can't read the temp on the CPU.

I think I'm going to take it slow and try the default dsdt for while and see what happens. I'll probably turn on those debug statements soon. If i still see the issue, I'll probably try that newer kernel.

----------

## Moderato

Hi spindle,

ah, so I can assume we have ~the same CPU. (I got an Intel P IV 2998MHz in the Desktop and thus, the same issue.)

Yeah, playing UT2004 is NOT that CPU stressing - it's the GPU/your video card that might get really hot in this case, but the CPU is not under a real lot of load - in opposite to compiling...

Right, the BIOS is sending some messages about thermal throttling and it seems like you compiled this feature into the Kernel correctly. The bad news, however, is that this is REALLY bad. You should really search for a better cooling system. Your CPU is definitly way too hot. (Let me explain it like this... the BIOS needn't the Kernel for checking the temperature and therefore it's working fine just without it, although you cannot check the temperature via ACPI.)

I don't know whether the THERMAL_ZONE is working in Kernel 2.6.17.x correctly, but I assume the P IV just hasn't such ACPI informations.

For looking at the CPU temperature, I'd rather try lm_sensors. You need the I2C subsystem in the Kernel, if I remember correctly. Play with this program; it relates directly on the thermal sensor on your CPU.

In any case: I wish you good luck. And please, get a better cooling system.  :Smile: 

[By the way: I also have some thermal issues on my Desktop with the P IV when playing games. In fact, the graphic card (ATI Radeon 9800 XT) is getting too hot and because my computer's case is almost small, freezes of the computer are happening, too. Even if I soft restart the computer it won't boot at all. Only after I let the computer cooling down everything works again. I think this happens because of the BIOS' thermal check.]

----------

## spindle

 *Moderato wrote:*   

> In any case: I wish you good luck. And please, get a better cooling system. 

 

Yeah that doesn't sound good. I think I may try and re-apply the thermal compound on my current fan first. That fixed an overheating problem on an old box of mine a few years ago (with a cheap Intel fan). The fan on this box is a pretty nice zalman one. Hopefully that's the issue. I'd hate to buy another one, that one was pretty expensive.

Thanks again Moderato!

----------

## topper_harley

I'm using a Toshiba Satellite M40-141. I have never had the fan working with any Linux distro.

 The DSTD was horribly broken, I couldn't even recompile it.

I found in the DSDT repository a good DSDT for my laptop (which has a Phoenix Bios, instead of a Toshiba one). I compiled it with no errors and no warnings.

It works greatly and now I can make the fan work.

But I have a REALLY BIG problem. If I try to play a sound (any sound) the computer hags (neither the mouse cursor moves) and I have to poweroff manually.

When I reboot I cannot find any useful logs about the crash.

Now I removed alsasound from my init scripts, and I'm using a soundless computer. But I'd really like to fix this.

Any ideas?

----------

## Moderato

Are there even in dmesg no hints about Interrupts or somethings like this? Any conflicts?

I'd suggest trying the "noapic" and "nolapic" boot option first -- if it still crashes, we have to wait for other poeple and their ideas.  :Smile: 

As an example: kernel /boot/vmlinuz-$something root=/dev/$yourdev noapic nolapic $theotheroptionsyouhave

Have a nice day.

----------

## topper_harley

 *Moderato wrote:*   

> Are there even in dmesg no hints about Interrupts or somethings like this? Any conflicts?
> 
> I'd suggest trying the "noapic" and "nolapic" boot option first -- if it still crashes, we have to wait for other poeple and their ideas. 
> 
> As an example: kernel /boot/vmlinuz-$something root=/dev/$yourdev noapic nolapic $theotheroptionsyouhave
> ...

 

Noapic and nolapic weren't useful. But I partially solved with acpi=noirq or irqpoll.

I don't know exactly what do those parameter mean, but now sound works. Anyway they give me some problems when I unplug and replug my ttyACM modem...

----------

## Yak

I'm trying to fix a dsdt on an Averatec 1020-ED1. My main reason for mucking around with this is that it seems the fan isn't running at all, nothing in /proc/acpi/fan. I followed the Howto but I can't get it to recognize my new DSDT.aml, dmesg keeps saying 

```
ACPI: Looking for DSDT in initramfs... error, file /DSDT.aml not found.
```

I tried copying DSDT.aml directly into /boot, and also tried making an image using cpio and gzip, same result. Tried to use mkinitrd but couldn't get it to work. I know that the patch says it now requires an initramfs image, but how do I create one and get it to recognize it? 

Btw also tried the other patch for including dsdt in kernel and it wouldn't patch. Perhaps it is out of date or both can't be applied at the same time? This is on kernel version 2.6.16-gentoo-r13

----------

## Yak

Seems I was on the right track about the initramfs, so guess I'll answer my own question. Thanks go to Rob for his Tech Tip: How to use initramfs

Howto put DSDT.aml into an initrd image: 

Make a directory, this will be the root of the image. Move the DSDT.aml file into this directory and change to it. Use find to list the files and pipe through cpio and gzip and output to the image file. For example:

```

mkdir image

cp DSDT.aml image/

cd image

find . | cpio -o -H newc | gzip > ../initrd-DSDT.cpio.gz

mount /boot

cp ../initrd-DSDT.cpio.gz /boot

```

Add this line to grub.conf after the kernel line

```

initrd /boot/initrd-DSDT.cpio.gz

```

Note that the line I put grub.conf doesn't have an = unlike the original howto. After I removed the equal sign and rebooted dmesg showed the image had loaded.  

So now I have a slightly modified dsdt loaded. Still have yet to fix all the compile warnings. Not sure about the fan. Think messing with all this will fix it?

----------

## Moderato

This could be possible, but I'd rather wouldn't say "yes" at this time.

----------

## cradlebin

Hmm I tried all the things outlined in this tutorial, and on the official page of the DSDT-patch, but I always get this when I boot with the changed initrd file (created using the tool on the official page (initrd-add-dsdt.sh):

```

UDF-fs: no partition found

XFS: bad magic number

XFS: SB validate failed

No filesystem could mount rout, tried: reiserfs ext3 ... (a whole list)

kernel panic - not syncing: VFS: Unable to mount root fs on unknown_block(1,0)

```

My grub conf looks like this:

```

title=Gentoo Linux (kernel 2.6.17-r4)

root (hd0,1)

kernel (hd0,1)/boot/kernel-genkernel-x86-2.6.17-gentoo-r4 root=/dev/ram0 init=/linuxrc ramdisk=8192 real_root=/dev/sda2 doscsi video=vesafb:ywrap,mtrr:3,1280x800-32@75

initrd (hd0,1)/boot/initramfs-genkernel-x86-2.6.17-gentoo-r4

```

My kernel is 2.6.17-r4 (gentoo-sources), I applied the 	acpi-dsdt-initrd-v0.8.2-2.6.17.patch found at http://gaugusch.at/kernel.shtml, I also tried patching the kernel with the acpi-dsdt-initramfs-fix-2.6.10-cleanup.patch patch, but that didn't help.

I even tried to add DSDT.aml the old way, with the echo thing, but to no avail as well.

In Dmesg i do get:

```
ACPI: DSDT (v001  255EI 255EI008 0x00000008 INTL 0x02002026) @ 0x00000000

ACPI: Looking for DSDT in initramfs... error, file /DSDT.aml not found.

```

So the patch should be applied just fine.

Anyone has any thoughts on how I can put it in my initrd?

----------

## juangamnik

I have the following output of iasl:

```
Intel ACPI Component Architecture

ASL Optimizing Compiler version 20060512 [Aug  4 2006]

Copyright (C) 2000 - 2006 Intel Corporation

Supports ACPI Specification Revision 3.0a

dsdt.dsl  4220:             Acquire (MUTE, 0x03E8)

Warning  1103 -                                 ^ Possible operator timeout is ignored

dsdt.dsl  4234:             Acquire (MUTE, 0x03E8)

Warning  1103 -                                 ^ Possible operator timeout is ignored

dsdt.dsl  4249:             Acquire (MUTE, 0x03E8)

Warning  1103 -                                 ^ Possible operator timeout is ignored

dsdt.dsl  4264:             Acquire (MUTE, 0x0FFF)

Warning  1103 -                                 ^ Possible operator timeout is ignored

dsdt.dsl  4278:             Acquire (MUTE, 0x03E8)

Warning  1103 -                                 ^ Possible operator timeout is ignored

dsdt.dsl  4293:             Acquire (MUTE, 0x03E8)

Warning  1103 -                                 ^ Possible operator timeout is ignored

dsdt.dsl  4308:             Acquire (MUTE, 0x03E8)

Warning  1103 -                                 ^ Possible operator timeout is ignored

dsdt.dsl  4506:     Method (WFZF, 1, NotSerialized)

Warning  1086 -                ^ Not all control paths return a value (WFZF)

dsdt.dsl  4521:                 Return (Stall (0x0F))

Error    4094 -                             ^ syntax error, unexpected PARSEOP_STALL

ASL Input:  dsdt.dsl - 4793 lines, 147191 bytes, 2014 keywords

Compilation complete. 1 Errors, 8 Warnings, 0 Remarks, 638 Optimizations

```

Ideas how to solve? I have an MSI S262 with T2500 core duo processor. Are there any fixed DSDTs out there?

----------

## cradlebin

The warnings can be easily solved by replacing all the 0xXXXX (with XXXX different from FFFF) by 0xFFFF.

The reason is that when one wants to release a Mutex, one has to be sure he got it, and that's only going to happen if the wait-loop-time is set to infinity (=FFFF).

That's the explanation I've got from some google page anyhow.

With the "Not all control paths return a value (WFZF)", you should just check for things like if-else-clauses that don't return a value.

----------

## juangamnik

Thank you very much. Do you know what the syntax error means? There is no method called Stall, so it must be somehow part of the environment? If it is a method, there's no syntax error, is there? It might be a macro... I removed the Stall(0xXXXX) and the syntax error was gone, but I don't know if that's right...!

----------

## anz

[SOLVED] Before my useless stumble begins: Thank you for that fine howto!

Dear juangamnik,

I also have a MSI S262, patched the kernel (2.6.17-gentoo-r4) with the acpi-patch from gaugusch.

The dsdt.sdl outputs are similar - I also removed the Stall(0x0F), put the DSTD.aml in the initramfs.

But: after rebooting, dmesg shows me:

 *Quote:*   

> dmesg | grep DSDT
> 
> ACPI: DSDT (v001 MSI    1057     0x06212006 INTL 0x02002026) @ 0x00000000
> 
> ACPI: Looking for DSDT in initramfs... successfully read 16642 bytes from /DSDT.aml.
> ...

 

... but no battery, AC-adaptor, power button, sleep states etc. are found ...

Any hints?

a very usefull link:

howto decompress/compress initramfs - Thanks alot to widan

-----------------------------

UPDATE:

I am such an idiot - I forgot to compile "AC Adaptor" and "Battery" into the kernel (not as module).

Now a

```
dmesg | grep ACPI | grep batter
```

shows

 *Quote:*   

> ACPI: Battery Slot [BAT1] (battery present)

 

----------

## justcme

Does this look, umm... problematic?

```
Intel ACPI Component Architecture

ASL Optimizing Compiler version 20060912 [Dec 18 2006]

Copyright (C) 2000 - 2006 Intel Corporation

Supports ACPI Specification Revision 3.0a

ACPI Error (nsaccess-0531): ACPI path has too many parent prefixes (^) - reached beyond root node [20060912]

Maximum error count (200) exceeded

dsdt.dsl    24:     External (^^^PEGP.EGFX._PSC)

Error    4014 -         From ACPI CA Subsystem ^  (AE_NOT_FOUND Failure from lookup %s

)

dsdt.dsl    26:     OperationRegion (XNTI, SystemMemory, 0x000F3261, 0x0062)

Error    4062 -   Object does not exist ^  (XNTI)

...

... * lots more "Object does not exist ^ (FOO)" *

...

dsdt.dsl   294:         RP2D,   1,

Error    4062 -            ^ Object does not exist (RP2D)

Maximum error count (200) exceeded

ASL Input:  dsdt.dsl - 9061 lines, 320827 bytes, 3510 keywords

Compilation complete. 201 Errors, 0 Warnings, 0 Remarks, 7 Optimizations
```

201 Errors? error count exceeded???

any have any ideas?

in particular, this error:

ACPI Error (nsaccess-0531): ACPI path has too many parent prefixes (^) - reached beyond root node [20060912]

hope someone has a solution / potential solution.

thanks

----------

## colchaodemola

I have a pavillion dv8230us and i get only one warning when i try to compile dsdt 

# iasl -tc dsdt.dsl

Intel ACPI Component Architecture

ASL Optimizing Compiler version 20061109 [Jan  5 2007]

Copyright (C) 2000 - 2006 Intel Corporation

Supports ACPI Specification Revision 3.0a

dsdt.dsl  4818:                                             And (Local0, One)

Warning  1104 -            Result is not used, operator has no effect ^ 

ASL Input:  dsdt.dsl - 5881 lines, 231305 bytes, 2171 keywords

AML Output: dsdt.aml - 25312 bytes 504 named objects 1667 executable opcodes

Compilation complete. 0 Errors, 1 Warnings, 0 Remarks, 32 Optimizations

Anyone know how to fix that ?

Is it possible that just one warning lead to so much errors like 

Jan  6 00:30:19 localhost kernel: ACPI Error (psargs-0355): [PBST] Namespace lookup failure, AE_NOT_FOUND

Jan  6 00:30:19 localhost kernel: ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.PCI0.LPCB.BAT1._BST] (Node c1910770), AE_NOT_FOUND

Jan  6 00:30:19 localhost kernel: ACPI Exception (acpi_battery-0207): AE_NOT_FOUND, Evaluating _BST [20060707]

in the syslog... I have big problems in battery power detection

----------

## SDark

Hi guys.

I've been using using a custom DSDT table for Acer Aspire 1694LMi for quite some time.

So far everything works fine but one thing seems to be working "way too fine".  :Shocked: 

The problem is the LID button. It is working but it generates about 4~5 events per second. This is a pain for cpufreq if the configuration is to read the acpid socket (the default behaviour) causing huge CPU loads when the lid is closed (definitely not idle). This can be solved by setting a non existing address for the socket but can also prevent other features...

But this is not the main problem. The fact is that if I keep my lid closed for some time the acpid logs get huge. +10~15Mb per hour.

My questions to the more experienced ones are:

Does the DSDT table has something to do with this  :Question: 

if so,

Is it possible to change the number of events to something like 1 event per 10 seconds or so, instead of the 4~5 per second  :Question: 

Thanks in advance to everyone.

----------

## Crono81

same lid problem here, with an asus a6tc.

----------

## Crono81

Ok, i'm trying to fix it. I really know nothing about acpi, dsdt, but it seems that i can still do better than the asus crew.

1) You have to edit the DSDT, search for the LID device definitions and similar things, and.. DELETE them  :Smile: 

2) Compile it. After you've fixed all the stupid syntax errors.

3) You have to just ignore all that bullshit about simply copying the dsdt in /boot etc, and use cpio to create the image, here is an example: (thanks to widan)

```

# find . -print | cpio -o -H newc > ../initramfs

# cd ..

(if you want)

# gzip initramfs

```

In our case, we only have the DSDT.aml (caps) file.

4) add the initrd=/boot/initramfs in grub.

5) Useless lid events bye bye (useless because in my laptop the screen is turned off by hardware)

----------

## SDark

That can be a solution, but I would prefer keeping the LID events to activate some scripts like toggle for ATI POWERplay...

I just want to reduce the number of events generated... The ideal would be 1 event on LID close and 1 event on LID open.

The sleep button generates only 1 event, but it's only on keypress, not on release. So copying this part wouldn't be enough.

The AC adapter is probably the closest to the behavior I want. It generates 1 AC_adapter event and 2 Battery events (1 for BAT1 and 1 for BAT2). It does this only once on AC unplugging and again on AC plugging. With a total of 6 events on a possible power failure  :Razz: .

I want that with the LID too. 1 for close and 1 for open...

Is it possible? by messing around with the DSDT? I haven't tried it yet because I don't know if this can be arranged by changing the DSDT...

----------

## Crono81

I really don't know what i'm doing, but it seems to work.

I replaced

```

Device (LID)

                    {

                        Name (_HID, EisaId ("PNP0C0D"))

                        Method (_LID, 0, NotSerialized)

                        {

                            Store (0x00, LIDP)

                            Sleep (0x0A)

                            Store (LIDS, Local0)

                            Store (0x08, LIDP)

                            Return (Local0)

                        }

                    }

```

with (sorry for bad indenting)

```

Device (LID)

                    {

                        Name (_HID, EisaId ("PNP0C0D"))

                        Method (_LID, 0, NotSerialized)

                        {

            Store (0x01, LIDS)

                       If (LIDS)

                        {

                               If (LIDP)

                                 {

                                    Store (0x00, Local0)

                              }

                           Else

                             {

                              Store (0x01, Local0)

                                }

                         }

                      Else

                        {

                          Store (LIDP, Local0)

                        }

                   Return (Local0)

                        }

                    }

```

And now i get a SINGLE lid event when i open and when i close. I still have to figure out if i get the same lid event, or two different lid events.

----------

## lcld

 *Crono81 wrote:*   

> 
> 
> ```
> Method (_LID, 0, NotSerialized)
> 
> ...

 Ouch! Did you copy this code from SDark's dsdt? That won't help him.  :Wink: 

Anyway, this code is strange. And I think that on A6T(c) laptops, the LIDS variable is read-only.

In fact, your code does nothing else but returning 1:

```
Method (_LID, 0, NotSerialized)

{

   Return (One)

}
```

 *Quote:*   

> I still have to figure out if i get the same lid event, or two different lid events.

 There's /proc/acpi/button/lid/LID/state for that, but its value is the value returned by _LID: you have lid events but state will always be 'open'.

Note that if _LID returns 0, acpi hot keys are disabled.

I tried a lot of things but without success. The LIDP variable is a mystery.

----------

## SDark

Actually after messing around with the dsdt that I linked above I simply got boot hangs. I thought that was the custom dsdt I was using but it's not. After diffing this dsdt with the original one there where a lot of differences. So I gave up on this one.

I tried to apply manually some of the dsdt entries to the original one and got better results, however the LID saw no changes. I did the changes based on some links I found in the web that related to my laptop model (acer aspire 1694 LMi or WLMI).

Here you can get a copy of what I've been working on...

The current dsdt solves the BAT issues, as well as the noapic at boot need. Not using this usually hanged the system at boot. However the LID problem is still there.

lcld you seem a bit more experienced that us, could you take a look at the custom dsdt file and see if something jumps out of the code and you put some light in this darkness?

Thanks

----------

## lcld

I am just discovering AML (ACPI Machine Language) and I have the feeling that even if I knew the ACPI specs by heart, I couldn't help because of the lack of hardware documentation. Anyway, I read several people destroyed their machines by making mistakes in the dsdt so there are modifications I won't try.

About the lid, to summary the situation of my laptop :

- With the original dsdt, I have the same problem as you (with a higher rate: 37Hz) and /proc/acpi/button/lid/LID/state gives correct values ('open' when it's open and 'closed' when it's closed).

- With the modified dsdt, I have a single lid event when I close it, and another one when I open it, but /proc/acpi/button/lid/LID/state always returns 'open'.

In both cases, the lid events aren't really usable, but the modified dsdt is still better since it minimizes the CPU usage.

The same change should be possible for your laptop: replace

```
            Method (_LID, 0, NotSerialized)

            {

                ...

            }
```

by

```
            Method (_LID, 0, NotSerialized)

            {

                Return (One)

            }
```

Otherwise, for acpid, you can disable logging and tell it to ignore lid events (on Debian, I rename '/etc/acpi/events/lid' to '/etc/acpi/events/#lid') to reduce CPU usage a little.

BTW, iasl 20060127 and iasl 20060912 produces different outputs so it's difficult to compare with diff.

----------

## Crono81

 *Quote:*   

> Ouch! Did you copy this code from SDark's dsdt? That won't help him.

 

i got that piece of code from the dsdt of an Acer laptop...

----------

## SDark

Guys have a look at this.

There seems to be a full suite to test the ACPI behavior on your machine ... I just found out that my acpi thermal throttling support is "passive"... Same goes for fan stuff. A lot is missing here (not sure if in windows this is present).

I'm going to start at the linux-acpi mailing lists to see if someone "inside" can tip me on this.

I've been reading a lot about this and I have a bunch of questions.

1- Ok so the MS compiler is in fact one of the problems when it comes to original buggy dsdt right  :Question: 

2- However in Windows the ACPI works fine... Does that means they use some sort of custom dsdt too  :Question: 

3- From what I understood, if things work under windows, it means that the hardware is there. However is not being correctly addressed under Linux (right)  :Question: 

4- Does this means that ALL the problems or unsupported features about ACPI in Linux are due to bugged or incorrect ACPI tables (not only DSDT)  :Question: 

5- If one of the problems is knowing what to address when it comes to the hardware, isn't there any way to figure this out (even if it means trying to get info from within windows)  :Question: 

6- And finally, ACPI is supposed to have standards, however things aren't always addressed as they should partially due to Microsoft faulty compiler, then what and how can a user solve this problem  :Question:  or should this be left for the kernel team  :Question:  

About the 6th question, I did what the howto pointed and got a dsdt with only one warning that I don't know how to fix:

```
dsdt.custom.lid-hack.dsl  7598:                             And (0xFE, Local7)

Warning  1104 -          Result is not used, operator has no effect ^ 
```

But even after fixing the errors there are still missing features.

About the lid, I did what lcld suggested but haven't tested it yet.

----------

## lcld

 *SDark wrote:*   

> 
> 
> ```
> dsdt.custom.lid-hack.dsl  7598:                             And (0xFE, Local7)
> 
> ...

 The line belongs to the _BST method. If you look at the ACPI specs at page 321, you'll see: *Quote:*   

> _BST: Returns the current battery status (in other words, dynamic information about the battery, such as whether the battery is currently charging or discharging, an estimate of the remaining battery capacity, and so on).

 So fixing this warning may only improve battery monitoring. If it already works perfectly, ignore it (or remove the line since it doesn't do anything). Otherwise, you can try:

```
-                            And (0xFE, Local7)

+                            And (Local7, 0xFE, Local7)
```

Without understanding what _BST does, that's all I can suggest.

Edit: I should have wait a little before posting. Local7 is the 1st value returned by _BST, and according to the specs, bit 0 means 'discharging', bit 1 'charging' and bit 2 'critical energy state'. Line 7598 is executed if and only if the battery is in the critical energy state (see the following line: Or (Local7, 0x04, Local7) ; there is no other reference of Local7.2 elsewhere). Therefore, 'And (0xFE, Local7)' must be removed (or left as is).

----------

## SDark

Actually I do have a small issue with the battery monitor, but it isn't that harsh. The issue only happens when the battery is charging, reporting a "present rate:" value that is way off scale.

This was a problem with conky battery monitor, and the estimate time to fully charged.

But that was never a real problem because the percentage is still correct.

About the Edit, you mean that in this case, I should keep that line untouched or remove it?

----------

## lcld

 *SDark wrote:*   

> you mean that in this case, I should keep that line untouched or remove it?

 I don't understand. If that line does nothing, it is obvious that leaving it untouched or removing it are exactly the same thing.

And what I was writing in my previous post is that this warning is a false alert: there is nothing wrong there.

 *Quote:*   

> The issue only happens when the battery is charging, reporting a "present rate:" value that is way off scale.

 The value is computed in Local3. An example of value way off scale would help.

----------

## SDark

Discharging state:

```
present:                 yes

capacity state:          ok

charging state:          discharging

present rate:            1208 mA

remaining capacity:      3429 mAh

present voltage:         1 mV
```

Charging state:

```
present:                 yes

capacity state:          ok

charging state:          charging

present rate:            63699 mA   <----

remaining capacity:      2544 mAh

present voltage:         2 mV
```

----------

## lcld

Huh?? I wasn't expecting such a value. I don't understand how _BST can return a rate of 63699 mA. Note that the correct value is probably 64k-63699 ~ 1837 mA.

The DSDT supports 2 batteries. I suppose it's BAT1. I think the present rate is ajusted at lines 7348-7356:

```
                    If (LAnd (Local3, 0x8000))

                    {

                        If (LNot (LEqual (Local3, 0xFFFF)))

                        {

                            Not (Local3, Local3)

                            Increment (Local3)

                            And (Local3, 0xFFFF, Local3)

                        }

                    }
```

It might be interesting to delete them.

A part from that, there's an error for the present voltage (1&2 mV). Here is a fix (lines 7345 and 7611):

```
-                        Store (Local7, Index (PBST, 0x03))

+                        Store (Local2, Index (PBST, 0x03))
```

----------

## SDark

Tried the lid patch, to return always 1. But that didn't solve the event number. In fact the lid always showed up as open, but the high number of events was still generated while the lid was closed. I guess the notification is looped elsewhere.

Applied the BAT patch and removed that part as suggested and here are the results:

discharging_BAT1_info

```

present:                 yes

design capacity:         4300 mAh

last full capacity:      3470 mAh

battery technology:      rechargeable

design voltage:          14800 mV

design capacity warning: 300 mAh

design capacity low:     132 mAh

capacity granularity 1:  32 mAh

capacity granularity 2:  32 mAh

model number:            ZL08

serial number:           20617

battery type:            LION

OEM info:                SONY

```

discharging_BAT1_state

```

present:                 yes

capacity state:          ok

charging state:          discharging

present rate:            62961 mA

remaining capacity:      3043 mAh

present voltage:         15049 mV

```

charging_BAT1_info

```

present:                 yes

design capacity:         4300 mAh

last full capacity:      3470 mAh

battery technology:      rechargeable

design voltage:          14800 mV

design capacity warning: 300 mAh

design capacity low:     132 mAh

capacity granularity 1:  32 mAh

capacity granularity 2:  32 mAh

model number:            ZL08

serial number:           20617

battery type:            LION

OEM info:                SONY

```

charging_BAT1_state

```

present:                 yes

capacity state:          ok

charging state:          charging

present rate:            1285 mA

remaining capacity:      2968 mAh

present voltage:         16374 mV

```

With these values conky's estimate time for empty bat was about 2m 53s.

When charging conky showed up about 22 min to full.

I must say that it seems that the behavior was inverted. I remember conky doing the opposite. The time calculations when charging was incorrect and when discharging was correct. Now with the dsdt patch the time when charging seems correct but when discharging isn't.

Any ideas?

Thanks for all the help and effort

EDIT: Inserting back the code that was removed makes everything like was before. i.e. like in the previous post.

----------

## lcld

At least, there's something fixed: present voltage  :Smile: 

 *SDark wrote:*   

> I guess the notification is looped elsewhere.

 I see nothing so  perhaps that a variable needs to be ajusted, as in the example of the ACPI specs. So: LIDS or LIDP ? If the variables of well-named, the example would say LIDP. But according to the original code, only LIDS would be writeable. Another strange thing  :Sad: 

Unfortunately, we don't know if writing to LIDP, or clearing LIDS are safe.

We only know that setting LIDS and reading LIDS/LIDP are safe. You can still debug safely in _LID and try to understand LIDS and LIDP better. Here are several examples :

```
            Method (_LID, 0, NotSerialized)

            {

                Return (LIDS)

            }
```

```
            Method (_LID, 0, NotSerialized)

            {

                Return (LIDP)

            }
```

```
            Method (_LID, 0, NotSerialized)

            {

                Store (One, LIDS)

                Return (LIDS)

            }
```

These pieces of code might help to simplify the original code.

To test the lid, I usually use the following command:

```
# acpi_listen | while read; do cat /proc/acpi/button/lid/LID/state; done
```

For the present rate, I think I'm blind  :Wink:  Try this (lines 7348 and 7614):

```
-                    If (LAnd (Local3, 0x8000))

+                    If (And (Local3, 0x8000))
```

----------

## SDark

 *lcld wrote:*   

>  *SDark wrote:*   I guess the notification is looped elsewhere. I see nothing so

 

Could line 449 have something to do with the notifications? Do you have any idea what I could change this to and test if something changes?

I'm testing the stuff you mentioned before, will post the results in some minutes...

----------

## lcld

Yes, this line is related to lid events but it seems correct. On my laptop, with:

```
                    Method (_L12, 0, Serialized)

                    {

                        Notify (\_SB.LID, 0x80)

                    }

                    ...

                        Method (_LID, 0, NotSerialized)

                        {

                            Return (One)

                        }
```

I don't have repeated events.

If you delete the Notify line, you should have no event at all.

----------

## SDark

According to your code It seems that you have "Serialized" Method. Here is:

```
Method (_L1B, 0, NotSerialized)

        {

            Notify (\_SB.LID, 0x80)

        }
```

Is this the answer?

----------

## lcld

I didn't notice. The difference is explained at page 503 of the specs but that doesn't help me a lot.

I think you can try Serialized without any risk.

----------

## SDark

Some results:

The "present rate:" seems fixed  :Very Happy: 

charging:

```
present:                 yes

capacity state:          ok

charging state:          charging

present rate:            1213 mA

remaining capacity:      1081 mAh

present voltage:         15782 mV
```

discharging:

```
present:                 yes

capacity state:          ok

charging state:          discharging

present rate:            1713 mA

remaining capacity:      1083 mAh

present voltage:         14629 mV
```

Now for the lid parts:

```

Method (_LID, 0, NotSerialized)

            {

                Return (LIDS)

            }

```

Results:

When not pressing, no event is logged and state is closed

When pressing, the flooding starts and the state changes to open

Basically state is reversed but the events are still only when pressing the lid key.

```

Method (_LID, 0, NotSerialized)

            {

                Return (LIDP)

            }

```

When not pressing, no event is logged and state is open

When pressing, the flooding starts and the state remains open

Basically state doesn't change but the events are still flooding when pressing the lid key.

```

Method (_LID, 0, NotSerialized)

            {

                Store (One, LIDS)

                Return (LIDS)

            }

```

Same as 1st case.

Next will try the Serialized with the original code and then with the Return 1

----------

## lcld

Interesting. Here is a possible fix:

```
            Method (_LID, 0, NotSerialized)

            {

                If (LIDS)

                {

                    Not (LIDP, LIDP)

                }

                Return (LIDP)

            }
```

About the 'Not (LIDP, LIDP)' instruction, be aware that we don't know if writing to LIDP is safe.

----------

## SDark

Ok tried the Serialized stuff, but nothing worked.

I'm going to try what you suggested about LIDP.

What could be the results by writing to something that "is not safe" ? Hardware damage?

----------

## lcld

 *Quote:*   

> What could be the results by writing to something that "is not safe" ?

 The million-dollar question... I mean that LIDP and LIDS aren't simple variables. The 'Store (0x01, LIDS); If/Return (LIDS)' show this well: even if a 1 has been written, reading it may return 0.

I suppose LIDS and LIDP are ports and they may command/read electrical levels (of what?). In that case, this is not computer science anymore, but electronics.

So what could be the results if my code is wrong? I don't know.

Hardware should be designed so that it can't be destroyed by software but sometimes, conceptors/constructors do their job badly. I read several people killed their machine (or only a component) after having modified their dsdt incorrectly. I wonder which kind of error they did.

My intuition (and nothing else) is that writing to LIDP is safe. I would have post that piece of code otherwise.

----------

## SDark

Ok I trust in your expertise  :Smile:  however explain this  :Razz: 

Did the changes about LIDP and what happened was:

Computer starts. ACPI logs are clean, i.e. no events generated. Lid state is open.

1- Tap the key. Lid state changes to closed and a few of events showed up in acpid (no fix yet).

2- After releasing the key the Lid state becomes open and events stopped.

3- Hold the key for a few seconds. Events flood while pressing the key. lid shows closed.

4- Release the key. lid shows open. however events keep coming and continue even when the key is not pressed.

I tried to release and press again but nothing changed. It "seems" that the events where generated at a slower rate while not pressing the button, but the fact that they show up when not pressing seems the opposite to what we want.

I noticed one thing that haven't noticed before. Every event in lid increments 1 to the last number count. This does not happen with AC events. In fact AC with value 0 means unplugged and AC with value 1 means plugged.

LID just keeps counting 1,2,3 ...

I also tried to toggle that Serialize part but nothing changed either.

I uploaded an acpid log with the events generated in the last tests. Link here

I'm off for today, will be back tomorrow around 4pm (GMT)

----------

## lcld

 :Sad: 

What can I conclude from such a random behaviour? That's not encouraging.

I don't know what to tell apart from suggesting you to test more rigorously. I mean that even if a piece of code is not the solution, we should learn something from it.

I would stop acpid during tests and, for example, use the following command:

```
/proc/acpi/button/lid/LID# acpi_listen | while read a; do echo -e "`cat state`\t$a"; done
```

and the following actions:

- close the lid

- open the lid

- press an acpi key while it is closed, several times (at a higher rate than the lid events, if possible)

- press an acpi key while it is open, several times (...)

The reason is when _LID has side effects (that's the case for my suggested fix), it is important to see the results of consecutive calls.

Oh and use the following code instead, to prevent a possible bouncing effect:

```
            Method (_LID, 0, NotSerialized)

            {

                Sleep (16)

                If (LIDS)

                {

                    Not (LIDP, LIDP)

                    Sleep (16)

                }

                Return (LIDP)

            }
```

Note that for my laptop, I have given up. I found a workaround but it stops working after a suspend/resume.

Edit: Oops, acpi_listen doesn't work if acpid is stopped.

----------

## SDark

Used the code with the Sleep entries. Tried to do several tests but the results aren't very clear because there seems to be a lot of randomness here.

I added a time stamp to the command to better check how fast the events are and the relation between events and time. Time is in format: date +%T.%N

log downloads here

I tried to include echos in the file to show the moment when I stopped or changed an action.

On some logs I released the keys and there where events still coming up. I ended the logs only when the events stopped.

Files:

```
hold_and_nothing - Just holding the lid button and then release

hold_and_sleep - Holding the button and tapping the sleep key during the process

tap_and_nothing_else - Tapping the lid button and then stop tapping

tap_and_sleep - Tapping the lid and the sleep button (tried to tap them both at the same time)

tap_hold_release_with_comments - Tapped the lid, then hold and after a while released. Added comments every time I changed an action.
```

Hope this helps... To me this makes no sense as I don't see direct relations from events.

----------

## lcld

 *Quote:*   

> however events keep coming and continue even when the key is not pressed

  *Quote:*   

> On some logs I released the keys and there where events still coming up. I ended the logs only when the events stopped.

 Do you mean that when the lid is open, there's always a moment when events stop coming? Or (still when it's open), does it happen that flooding never stops?

Just to be sure... what's the difference between "tap" and "hold"? Is the lid switch not "internal" to the laptop? Is it a sort a key? On mine, if I want to test what happened if I close the lid, I really have to close it: not very handy for the tests, because I see nothing.

hold_and_nothing:

I see that when it's closed, the state toggles between 'closed' and 'open'.

Same thing when it's open, as long as events keep coming.

tap_and_sleep:

16:02:58 -> 16:03:13: There is no lid event for 15 seconds whereas it's closed? Do that mean that reading the state may inhibit flooding?

For the moment, I have no idea of which code could be tested to understand LIDS/LIDP better.

----------

## SDark

The lid button is on the LCD lid but is accessible and I can press it. Its a small key under the LID. This way I managed to press or tap it and the sleep button during the process.

By tap I mean I press and release several times in the same second.

By hold I mean that I press and hold the lid button until "release".

 *lcld wrote:*   

> Do you mean that when the lid is open, there's always a moment when events stop coming? Or (still when it's open), does it happen that flooding never stops?

 

As far as I tested the events eventually stop. In this case I stopped the logging when the events ended. And yes, the events happen when the lid is open after a close period, like they are delayed and shown after some time... I did notice that they come in packs of 2 seconds after the release or the tapping:

```
Time: 16:05:21.614780445  state:      closed    button/lid LID 00000080 000008b9

Time: 16:05:23.495548519  state:      closed    button/lid LID 00000080 000008ba

Time: 16:05:25.496927602  state:      closed    button/lid LID 00000080 000008be

```

 *lcld wrote:*   

> hold_and_nothing:
> 
> I see that when it's closed, the state toggles between 'closed' and 'open'.
> 
> Same thing when it's open, as long as events keep coming.

 

That is part of the randomness that I don't understand. When I hold or when I release shouldn't you expect always the same event? always close or always open?

 *lcld wrote:*   

> tap_and_sleep:
> 
> 16:02:58 -> 16:03:13: There is no lid event for 15 seconds whereas it's closed? Do that mean that reading the state may inhibit flooding?

 

Did you mean the hold_and_sleep log? I can't find that timestamp in the log you mentioned.

hold_and_sleep:

It looks that way, I held the lid key and kept tapping the sleep key. I dunno what conclusion can be made about this.

I had another log that I held the lid key (and pressed no sleep key) and no event came out during about 15 seconds. After that time I released the lid key and some "delayed" events came out...

I can do some more tests but I dunno what to test nor how to be more precise... The events are mass triggered in nanoseconds, and sometimes randomized...

Anyway, thanks for all your help, If you have any ideas I will be glad to test them.

----------

## SDark

lcld I thought of something that will not fix the problem but could remove the unwanted flooding.

Instead of removing the Notifications code, would it be possible to use a big Sleep() number and reduce the number of events?

I haven't understood the Sleep() command. Does it causes the cycle to only happen from time to time or simply delays the event X seconds since the event entered the cycle?

If the case is the 1st option, then by using the Sleep inside the notify cycle I could reduce the number of events... That is one of the goals!

If the case is the 2nd, then nothing changes as the flooding would still be there, with the only difference of being delayed X seconds...

If you understand better how this works, and can answer this question I could try that... If not, I think I will remove the notification part so that no events pop up at all!

EDIT: Need to know what is the maximum value I can use in the Sleep setting ... I think a big number can take it to my goal and keep the lid events...

EDIT2: Yup Sleep can do the job, unlike Stall it holds the processor and so blocks the flooding. By using something like Sleep(300000) I have only 1 event every 5 minutes. I still need to test if opening the lid reports the event right away or if everything is stopped ... I don't want the sleep button to only report the event once in 5 minutes :\

----------

## SDark

Ok no go  :Sad: 

It seems that the Sleep event holds the whole process and Sleep keys are delayed until timeout.

I'm giving up on this ... Commenting out the notification code!

No lid events but at least no high CPU loads nor huge logs.

Thanks for all the help you gave me.

----------

## Animatrix

Hello,

I would like to set a custom DSDT file directly in the kernel.

I am using a 2.6.20-r6 kernel.

Do you know where I can find a patch to add this option ?

Or, do you know how to create a *.aml file, and how to correct it.

Thanks

----------

## SDark

 *Animatrix wrote:*   

> I would like to set a custom DSDT file directly in the kernel.
> 
> I am using a 2.6.20-r6 kernel.
> 
> Do you know where I can find a patch to add this option ?

 

If you are using the gentoo-sources, the patch is already included. If you are using plain vanilla-sources, you will have to patch it yourself. Please have a look at the 1st post in this thread. It has all the info you need.

----------

## Animatrix

 *SDark wrote:*   

>  *Animatrix wrote:*   I would like to set a custom DSDT file directly in the kernel.
> 
> I am using a 2.6.20-r6 kernel.
> 
> Do you know where I can find a patch to add this option ? 
> ...

 I am using the gentoo-sources, but I don't see the option.

Are-you sure it is included ?

----------

## SDark

It should ... I've got this in my config

CONFIG_ACPI_CUSTOM_DSDT=y

CONFIG_ACPI_CUSTOM_DSDT_FILE="/etc/acpi/dsdt_table.h"

----------

## emmerp

I have a Acer Travelmate, and was fighting with DSTD and sbs-linux to get it all work. But now I see on their site (http://sourceforge.net/projects/sbs-linux/) that smart battery system is supported from kernel 2.6.18. 

The strange thing is that I can't find any SBS modules or whatsover in the .config (possibly it's just really really built in even without module  :Wink: ), but secondly, I see people on this forum wrambling with the DSTD things where it should be all supported in the kernel now...

Also, I can't find any release notes for the kernel which mention Smart Battery system support..

Can someone explain?

Edit: found the experimental sbs driver, now building new kernel, but still wondering why people don't use this...or is it a very unknown option?

----------

## SDark

 *emmerp wrote:*   

> I have a Acer Travelmate, and was fighting with DSTD and sbs-linux to get it all work. But now I see on their site (http://sourceforge.net/projects/sbs-linux/) that smart battery system is supported from kernel 2.6.18. 
> 
> The strange thing is that I can't find any SBS modules or whatsover in the .config (possibly it's just really really built in even without module ), but secondly, I see people on this forum wrambling with the DSTD things where it should be all supported in the kernel now...
> 
> Also, I can't find any release notes for the kernel which mention Smart Battery system support..
> ...

 

I may be wrong but I think the smart battery stuff is deprecated, and now everything is going towards ACPI. I read somewhere that smart battery was something in the middle of APM and ACPI and was dropped since ACPI offered it all and with better organization.

----------

## beatryder

Hello,

I didn't have time to read all 13 pages of this thread but I have a Dell D620 with the following DSDT Errors.

Has anyone seen them before?

```

Lisa ~ # cat /proc/acpi/dsdt > dsdt.dat

Lisa ~ # iasl -d dsdt.dat

Intel ACPI Component Architecture

AML Disassembler version 20060912 [Jan 21 2007]

Copyright (C) 2000 - 2006 Intel Corporation

Supports ACPI Specification Revision 3.0a

Loading Acpi table from file dsdt.dat

Acpi table [DSDT] successfully installed and loaded

Pass 1 parse of [DSDT]

Pass 2 parse of [DSDT]

Parsing Deferred Opcodes (Methods/Buffers/Packages/Regions)

.........................................................................................................................................................................................

.........................................................................................................................................................................................

.........................................................................................................................................

Parsing completed

Disassembly completed, written to "dsdt.dsl"

Lisa ~ # iasl -tc dsdt.dsl

Intel ACPI Component Architecture

ASL Optimizing Compiler version 20060912 [Jan 21 2007]

Copyright (C) 2000 - 2006 Intel Corporation

Supports ACPI Specification Revision 3.0a

dsdt.dsl  2928:                             Name (_T_0, Zero)

Error    4081 -                 Use of reserved word ^  (_T_0)

dsdt.dsl  2980:                                                         Name (_T_1, "")

Error    4081 -                                             Use of reserved word ^  (_T_1)

dsdt.dsl  3012:                             Name (_T_2, Zero)

Error    4081 -                 Use of reserved word ^  (_T_2)

dsdt.dsl  3039:                         Name (_T_0, Zero)

Error    4081 -             Use of reserved word ^  (_T_0)

dsdt.dsl  3215:                             Name (_T_0, Zero)

Error    4081 -                 Use of reserved word ^  (_T_0)

dsdt.dsl  3404:                             Name (_T_1, Zero)

Error    4081 -                 Use of reserved word ^  (_T_1)

dsdt.dsl  4324:                         And (Local0, 0x0F)

Warning  1104 -                                   ^ Result is not used, operator has no effect

dsdt.dsl  4382:                         And (Local0, 0x0F)

Warning  1104 -                                   ^ Result is not used, operator has no effect

dsdt.dsl  4440:                         And (Local0, 0x0F)

Warning  1104 -                                   ^ Result is not used, operator has no effect

dsdt.dsl  4498:                         And (Local0, 0x0F)

Warning  1104 -                                   ^ Result is not used, operator has no effect

dsdt.dsl  4556:                         And (Local0, 0x0F)

Warning  1104 -                                   ^ Result is not used, operator has no effect

dsdt.dsl  4614:                         And (Local0, 0x0F)

Warning  1104 -                                   ^ Result is not used, operator has no effect

dsdt.dsl  4672:                         And (Local0, 0x0F)

Warning  1104 -                                   ^ Result is not used, operator has no effect

dsdt.dsl  4730:                         And (Local0, 0x0F)

Warning  1104 -                                   ^ Result is not used, operator has no effect

dsdt.dsl  5362:                     Return (Package (0x00) {})

Remark   5070 -    Effective AML package length is zero ^

dsdt.dsl  5540:                             Wait (EJTD, 0xA000)

Warning  1103 -         Possible operator timeout is ignored ^

ASL Input:  dsdt.dsl - 6349 lines, 226760 bytes, 1989 keywords

Compilation complete. 7 Errors, 9 Warnings, 1 Remarks, 677 Optimizations

```

----------

## atrus123

 *beatryder wrote:*   

> Hello,
> 
> I didn't have time to read all 13 pages of this thread but I have a Dell D620 with the following DSDT Errors.
> 
> Has anyone seen them before?
> ...

 

I'm currently working on the 'Use of reserved word' issue in my own file.  You're getting that error because leading a word with an underscore isn't permitted apparently.  Just take out the underscore and you're golden (I think -- still testing it myself.)

----------

## atrus123

I've managed to clear up all but one of my thirteen errors and warnings.  This one remains:

```
Intel ACPI Component Architecture

ASL Optimizing Compiler version 20061109 [May 15 2007]

Copyright (C) 2000 - 2006 Intel Corporation

Supports ACPI Specification Revision 3.0a

dsdt.dsl  7288:             Method (EVNT, 1, NotSerialized)

Warning  1086 -                        ^ Not all control paths return a value (EVNT)

ASL Input:  dsdt.dsl - 8698 lines, 322281 bytes, 3478 keywords

AML Output: /home/atrus/Desktop/acpitests-unix-20061109/tests/dsdt.aml - 32133 bytes 782 named objects 2696 executable opcodes

Compilation complete. 0 Errors, 1 Warnings, 0 Remarks, 1235 Optimizations

```

And the code itself reads:

```
            Method (EVNT, 1, NotSerialized)

            {

                While (VZOK)

                {

                    If (LEqual (VZOK, 0x01))

                    {

                        Store (Arg0, VZOK)

                        Notify (\_SB.VALZ, 0x80)

                        Return (Zero)

                    }

                    Else

                    {

                        Sleep (0x05)

                    }

                }

            }

```

Any suggestions?  I'm not a coder so hacking this stuff does not come natural to me.

----------

## SDark

Guys can anyone clear this out for me, I'm a bit confused.

I'm using a debugged dsdt on my default gentoo instalation and the main reason why I (and those who helped) started messing with the dsdt was the lack of battery status. No info on current charge status.

Today I tried a liveCD of the latest kubuntu series, and I was surprised to see that the battery display was working just fine there... Same goes for slax (another liveCD). So it kinda hit me... How did they do it? I think that including custom dsdt's in the kernel would be impossible so how did they managed to make it work just like that?

Anyone has any ideas?

----------

## atrus123

 *SDark wrote:*   

> Guys can anyone clear this out for me, I'm a bit confused.
> 
> I'm using a debugged dsdt on my default gentoo instalation and the main reason why I (and those who helped) started messing with the dsdt was the lack of battery status. No info on current charge status.
> 
> Today I tried a liveCD of the latest kubuntu series, and I was surprised to see that the battery display was working just fine there... Same goes for slax (another liveCD). So it kinda hit me... How did they do it? I think that including custom dsdt's in the kernel would be impossible so how did they managed to make it work just like that?
> ...

 

Newer kernel perhaps?

----------

## SDark

 *atrus123 wrote:*   

> Newer kernel perhaps?

 

Nope ... the same with ubuntu and older with slax. Probably some custom patch, but I would like to see what is capable of and if possible request to be included in gentoo default patches.

----------

## Gex

@atrus123

the solution for your prob :

^ Not all control paths return a value

#######insert a Return at the end of this method:

Return (Package(0x02){0x00,0x00})

#######you can find details here: http://home.fhtw-berlin.de/~s0502837/r31/

----------

## JuPiTeR15

My battery status works just fine with A6T and gentoo.

I've put my .config at https://forums.gentoo.org/viewtopic-t-560048-highlight-a6t.html  perhaps it could help.

----------

## SDark

It seems that the custom laptop support in the kernel addresses some of the battery status I mentioned before.

I'm not sure which module does the job, but when booting the liveCDs there are several acpi modules loaded. These correspond to asus acpi, toshiba acpi, and others... all of them included in the vanilla kernel.

Loading these modules seems to workaround the battery problem, at least in my case. And Acer is not listed nor mentioned in the kernel so I just left those modules out...

----------

## atrus123

Thanks to all that helped.  I've uploaded a working dsdt for the Toshiba Satellite P105-S6177 to acpi.sourceforge.net.  My system is dualbooted with both Gentoo and openSUSE, and sound now works in both.

----------

## cyko_1

so can anyone tell me if removing the underscores fixes the reserved word error...you never actually say in any of the reading.

I have a few errors..mostly around the reserved word

```

mNet micro # iasl -tc dsdt.dsl

Intel ACPI Component Architecture

ASL Optimizing Compiler version 20060912 [Jun  6 2007]

Copyright (C) 2000 - 2006 Intel Corporation

Supports ACPI Specification Revision 3.0a

dsdt.dsl  1773:                                 Name (_T_0, 0x00)

Error    4081 -                     Use of reserved word ^  (_T_0)

dsdt.dsl  1851:                                 Name (_T_0, 0x00)

Error    4081 -                     Use of reserved word ^  (_T_0)

dsdt.dsl  2145:                             Name (_T_0, 0x00)

Error    4081 -                 Use of reserved word ^  (_T_0)

dsdt.dsl  2223:                             Name (_T_0, 0x00)

Error    4081 -                 Use of reserved word ^  (_T_0)

dsdt.dsl  6516:             Method (BTST, 0, NotSerialized)

Warning  1086 -                        ^ Not all control paths return a value (B                                                                                                TST)

dsdt.dsl  6543:             Name (_HID, "*PNP0C14")

Error    4001 -                                  ^ String must be entirely alpha                                                                                                numeric (*PNP0C14)

ASL Input:  dsdt.dsl - 6731 lines, 236548 bytes, 2496 keywords

Compilation complete. 5 Errors, 1 Warnings, 0 Remarks, 862 Optimizations

```

I was looking around in http://acpi.sourceforge.net/dsdt/view.php?manufacturer=Toshiba for an already ready fixed version. It seems my laptop model isn't shown there.

I am going to have to do this myself but I don't want to kill my laptop.

----------

## Ice_Berg_

 *SDark wrote:*   

> It should ... I've got this in my config
> 
> CONFIG_ACPI_CUSTOM_DSDT=y
> 
> CONFIG_ACPI_CUSTOM_DSDT_FILE="/etc/acpi/dsdt_table.h"

 

I have the same problem these options do not appear in my .config or in menuconfig

Kernel version: 2.6.20-gentoo-r8

I am going to upgrade to 2.6.21 to see if that solves the problem, but it should be noted that the option isnt there on that kernel version.

----------

## Shoikan

That option actually IS there.. But you have to look for the options that have to do with firmware. If I recall correctly (can't get to a gentoo machine right now), you have to disable something called 'don't build drivers that require firmware' plus the option right underneath or above that. This is 'hidden' in the drivers section, not in the acpi one. When you've done that, the items you were looking for will appear in the acpi section.

I've had a hard time finding them too  :Very Happy: 

----------

## sydney

Can someone Help me to Fix my broken DSDT? or a Howto where i can finde a solution for this Erros.

```

Intel ACPI Component Architecture

ASL Optimizing Compiler version 20061109 [Apr 25 2007]

Copyright (C) 2000 - 2006 Intel Corporation

Supports ACPI Specification Revision 3.0a

dsdt.dsl  1970:                     Method (DRUL, 1, NotSerialized)

Warning  1086 -                                ^ Not all control paths return a value (DRUL)

dsdt.dsl  2624:                         Method (_DCK, 1, NotSerialized)

Warning  1086 -                                    ^ Not all control paths return a value (_DCK)

dsdt.dsl  2624:                         Method (_DCK, 1, NotSerialized)

Warning  1079 -                                    ^ Reserved method must return a value (_DCK)

dsdt.dsl  7623:                             And (0xFE, Local7)

Warning  1104 -                                     ^ Result is not used, operator has no effect

ASL Input:  dsdt.dsl - 7770 lines, 288199 bytes, 3198 keywords

AML Output: dsdt.aml - 27435 bytes 675 named objects 2523 executable opcodes

```

Thanks you a lot  :Smile: 

----------

## sydney

Can someone Help me to Fix my broken DSDT? or a Howto where i can find a solution for this Erros.

```

Intel ACPI Component Architecture

ASL Optimizing Compiler version 20061109 [Apr 25 2007]

Copyright (C) 2000 - 2006 Intel Corporation

Supports ACPI Specification Revision 3.0a

dsdt.dsl  1970:                     Method (DRUL, 1, NotSerialized)

Warning  1086 -                                ^ Not all control paths return a value (DRUL)

dsdt.dsl  2624:                         Method (_DCK, 1, NotSerialized)

Warning  1086 -                                    ^ Not all control paths return a value (_DCK)

dsdt.dsl  2624:                         Method (_DCK, 1, NotSerialized)

Warning  1079 -                                    ^ Reserved method must return a value (_DCK)

dsdt.dsl  7623:                             And (0xFE, Local7)

Warning  1104 -                                     ^ Result is not used, operator has no effect

ASL Input:  dsdt.dsl - 7770 lines, 288199 bytes, 3198 keywords

AML Output: dsdt.aml - 27435 bytes 675 named objects 2523 executable opcodes

```

Thanks a lot  :Smile: 

----------

## Pandor

Could someone help me out, with my dsdt?

```
iasl -tc dsdt.dsl

Intel ACPI Component Architecture

ASL Optimizing Compiler version 20060912 [Jul  2 2007]

Copyright (C) 2000 - 2006 Intel Corporation

Supports ACPI Specification Revision 3.0a

dsdt.dsl   172:     Method (_WAK, 1, NotSerialized)

Warning  1079 -                ^ Reserved method must return a value (_WAK)

dsdt.dsl  1057:                                 If (Local1)

Error    4049 - Method local variable is not initialized ^  (Local1)

dsdt.dsl  3164:                     Field (ERAM, AnyAcc, Lock, Preserve)

Error    4074 -                               ^ Host Operation Region requires ByteAcc access

ASL Input:  dsdt.dsl - 4694 lines, 183539 bytes, 2049 keywords

Compilation complete. 2 Errors, 1 Warnings, 0 Remarks, 646 Optimizations
```

So, on to fixing it:

```
nano +172 dsdt.dsl

 Method (_WAK, 1, NotSerialized)

    {

        Store (0x01, BATN)

        If (LEqual (Arg0, 0x03)) {}

        If (LEqual (Arg0, 0x04))

        {

            Notify (\_SB.PWRB, 0x02)

            \_SB.PCI0.LPC0.PHSS (0x0F)

        }

        If (LGreaterEqual (OSTP, 0x01))

        {

            Notify (\_SB.PCI0.IDEC.SECD, 0x00)

            Notify (\_SB.PCI0.IDEC.SECD.S_D0, 0x01)

        }

    }
```

Replaced with:

```

Method (_WAK, 1, NotSerialized)

    {

        Store (0x01, BATN)

        If (LEqual (Arg0, 0x03)) {}

        If (LEqual (Arg0, 0x04))

        {

            Notify (\_SB.PWRB, 0x02)

            \_SB.PCI0.LPC0.PHSS (0x0F)

        }

        If (LGreaterEqual (OSTP, 0x01))

        {

            Notify (\_SB.PCI0.IDEC.SECD, 0x00)

            Notify (\_SB.PCI0.IDEC.SECD.S_D0, 0x01)

        }

        Return (Package (0x02)

        {

             0x00,

             0x00

        })

    }
```

```
nano +3164 dsdt.dsl

                    OperationRegion (ERAM, EmbeddedControl, 0x00, 0xFF)

                    Field (ERAM, AnyAcc, Lock, Preserve)

                    {

```

Replaced with:

```

                    OperationRegion (ERAM, EmbeddedControl, 0x00, 0xFF)

                    Field (ERAM, ByteAcc, Lock, Preserve)

                    {

```

The only thing that's still bugging me is line 1057, Local1 not being initialized.

```

 Device (LPC0)

            {

                Method (SWAP, 0, NotSerialized)

                {

                    \_SB.PCI0.LPC0.PHSS (0x0A)

                    Store (BAYS, Local0)

                    If (LOr (LEqual (Local0, 0x04), LEqual (Local0, 0x08)))

                    {

                        If (LEqual (\_SB.PCI0.LPC0.SPWR, 0x00))

                        {

                            Store (0x01, \_SB.PCI0.LPC0.SPWR)

                            Sleep (0x1E)

                            And (\_SB.PCI0.IDEC.ICR4, 0x03, \_SB.PCI0.IDEC.ICR4)

                            Sleep (0x1E)

                            Store (0x01, \_SB.PCI0.LPC0.SRST)

                        }

                        If (LGreaterEqual (OSTP, 0x01))

                        {

                            Sleep (0x09C4)

                            If (LEqual (OSTP, 0x01))

                            {

                                If (Local1)

                                {

                                    Sleep (0x09C4)

                                }

                            }

                        }

                    }

                    Else

                    {

                        \_SB.PCI0.LPC0.EJSE ()

                    }

                    If (LGreaterEqual (OSTP, 0x01))

                    {

                        Notify (\_SB.PCI0.IDEC.SECD, 0x00)

                        Notify (\_SB.PCI0.IDEC.SECD.S_D0, 0x01)

                    }

                }

```

The full dsdt.dsl can be found @ http://members.lycos.nl/pandoriaantje/files/linux/dsdt.dsl

----------

## sonaatti

After upgrading to gentoo-sources-2.6.22-r1 my ecdt is missing, worked in 2.6.20.

```

ACPI Error (evregion-0316): No handler for Region [EC__] (ffff81005e908560) [EmbeddedControl] [20070126]

ACPI Error (exfldio-0289): Region EmbeddedControl(3) has no handler [20070126]

ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.PCI0.SBRG.EC__.BAT1._STA] (Node ffff81005e910670), AE_NOT_EXIST

```

Any suggestions ? I assume the patch in the first post does not work any more since it's a couple of years old.

----------

## pyrotek

Hello all,

I've fixed all of my issues but one.

"  Statement is unreachable "

```

Context:-

dsdt.dsl   888:                         Name (PSIZ, 0x00)

Warning  1098 -         Statement is unreachable ^ 

```

Part taken from dsdt.dsl

```

       Name (PSIZ, 0x00)

                        Name (PPTR, 0x00)

                        \_SB.SSMI (0x82, 0x02)

                        Store (CADL, Local0)

                        Store (CADL, Local1)

                        Store (CADL, PADL)

                        While (Local1)

```

I've googled for  quite sometime but can't seem to locate what to do to fix this. I've had some pointers at returning the PSIZ value but not sure how or even if this needs to be stored somewhere.

Anyone Have any ideas??

Thanks

----------

## zeroQ

Guys...  plz help somebody with this errors....    try use info about this error from others post...  but i`m not programmer...  it`s too hard for me...    can help....    my machine Toshiba Satellite L100-173 (no in acpi.source database)...   here my dsdt.dsl - http://pastebin.ca/641035

and here error code.... 

```
Intel ACPI Component Architecture

ASL Optimizing Compiler version 20060912 [Jul 29 2007]

Copyright (C) 2000 - 2006 Intel Corporation

Supports ACPI Specification Revision 3.0a

acpi.dsl   158:     Method (_WAK, 1, NotSerialized)

Warning  1079 -                ^ Reserved method must return a value (_WAK)

acpi.dsl  1642:                 Field (SMB, WordAcc, NoLock, Preserve)

Error    4026 -                          ^ Access width is greater than region size

acpi.dsl  1644:                     SIRQ,   8

Error    4027 -                        ^ Access width of Field Unit extends beyond region limit

acpi.dsl  4048:                                 Name (_T_0, 0x00)

Error    4081 -                     Use of reserved word ^  (_T_0)

acpi.dsl  4126:                                 Name (_T_0, 0x00)

Error    4081 -                     Use of reserved word ^  (_T_0)

acpi.dsl  4602:             Method (EVNT, 1, NotSerialized)

Warning  1086 -                        ^ Not all control paths return a value (EVNT)

acpi.dsl  4929:                     Name (_T_0, 0x00)

Error    4081 -         Use of reserved word ^  (_T_0)

ASL Input:  acpi.dsl - 5275 lines, 186422 bytes, 2160 keywords

Compilation complete. 5 Errors, 2 Warnings, 0 Remarks, 917 Optimizations

```

thanks for any advice or fixing...   sorry for my eng.  :Wink: 

----------

## oshecho

 *zeroQ wrote:*   

> Guys...  plz help somebody with this errors....    try use info about this error from others post...  but i`m not programmer...  it`s too hard for me...    can help....    my machine Toshiba Satellite L100-173 (no in acpi.source database)...   here my dsdt.dsl - http://pastebin.ca/641035
> 
> and here error code.... 
> 
> ```
> ...

 

For the 'Use of reserved word' errors, just rename all ocurrances of it with something else. I think I renamed all my '_T_0' to 'T_0'. I'm not sure about the access width. For the 'Not all control paths return a value', you need to stick a return in there. But I dont remember what it should be returning. You should be able to find what to return by searching around.

----------

## retroman

can anyone here provice a dsdt for a laptop with a turion 64 x2 processor who currently has more than 1 c-state.  The dv6000 pavilion only shows 1 but i believe there are more.

thanx

j

----------

## lobo_it

Hello all,

this is my first time as writer in this forum (but not my first time as reader).

I have a Acer 5720 notebook, and I have already fixed nearly all the bugs of my DSDT (many thanks to all the writers of this post, of course   :Wink:  ).

It remains just the following Warning:

 *Quote:*   

> 
> 
> dsdt.dsl   906:             Method (_OSC, 5, NotSerialized)
> 
> Warning  1075 -                        ^ Reserved method has too many arguments (_OSC requires 4)
> ...

 

Unfortunately I cannot change the "5" with a "4" in the method declaration, since the fifth param is used into the method body!

Here is the method body (note the usage of the "Store (Arg4, BUF1)"):

```

            Method (_OSC, 5, NotSerialized)

            {

                Store (Arg3, Local0)

                Multiply (Local0, 0x04, Local1)

                Name (BUF1, Buffer (Local1) {})

                Store (Arg4, BUF1)

                Store (Zero, Local1)

                Store (Zero, Local2)

                While (Local0)

                {

                    Multiply (Local1, 0x04, Local2)

                    CreateDWordField (BUF1, Local2, CAPB)

                    If (Arg2)

                    {

                        If (LEqual (Local1, Zero))

                        {

                            And (CAPB, 0xFFFFFFFC)

                        }

                    }

                    Else

                    {

                    }

                    Increment (Local1)

                    Decrement (Local0)

                }

                Return (BUF1)

            }

```

any idea?

thanks in advance

----------

## eccerr0r

Anyone know what to do to fix sillyness like:

```
ouka.dsl   332:             Store (Local0, Local0)

Error    4049 -                         ^ Method local variable is not initialized (Local0)
```

This of course makes absolutely no sense... Has anyone figured out a way to figure out what this statement was initially trying to accomplish?  Or what to do to fix something like this?

(This showed up on my Abit IS7 and Foxconn G9657MA motherboards, eerily similar errors.  Both use Award BIOS I think.)

My Foxconn's WOL doesn't work (there seems to be another warning related to that) as well as hangs randomly on boot while detecting ACPI... wonderring if this is related...

----------

## ferreirafm

I would appreciate if someone could help me to track this warning down.

Thanks! 

```

Intel ACPI Component Architecture

ASL Optimizing Compiler version 20061109 [Sep 14 2007]

Copyright (C) 2000 - 2006 Intel Corporation

Supports ACPI Specification Revision 3.0a

dsdt.dsl  1528:                     Acquire (MUT0, 0x0FFF)

Warning  1103 -    Possible operator timeout is ignored ^

ASL Input:  dsdt.dsl - 3536 lines, 115967 bytes, 1313 keywords

AML Output: dsdt.aml - 11384 bytes 452 named objects 861 executable opcodes

Compilation complete. 0 Errors, 1 Warnings, 0 Remarks, 22 Optimizations

```

I believe such warning has something to do with hibernation/sleeping. My box just turn off after the sleeping time with no issues to syslog. Any clues are welcome.

Thanks.

----------

## Satan Klaus

 *SDark wrote:*   

> 
> 
> I'm giving up on this ... Commenting out the notification code!
> 
> No lid events but at least no high CPU loads nor huge logs.
> ...

 

Hi! Maybe I'm posting a little late but I didn't pay attention to the A6T lid problem until recently.

I've read the whole discussion about A6T lid events and came to conclusion that the approach of modifying \SB.LID._LID() method was completely wrong. The real source of problem with events flood is straightforward approach to notification in \_GPE._L12 method. So, I've changed

```

                Scope (\_GPE)

                {

                    Method (_L12, 0, NotSerialized)

                    {

                        Notify (\_SB.LID, 0x80)

                    }

                }

```

to this:

```

                Scope (\_GPE)

                {

                    Name (LSTR, 0xFF)

                    Method (_L12, 0, Serialized)

                    {

                        While(LEqual (\_SB.LID._LID (), LSTR)) {

                            Sleep(0x80)

                        }

                        Store(\_SB.LID._LID (), LSTR)

                        Notify (\_SB.LID, 0x80)

                    }

                }

```

and voila! - it works as expected generating only one event per lid opening/closing respectively.

Maybe Sleep() argument needs adjusment though.

And for other Asus A6T users experiencing the same problem when the the CPU fan keeps running all the time if CPU temperature doesn't reach the threshold of about 50C I have working solution too: there's a need to add a call to \_GPE._L02 method (may be \_TZ.STRP will suffice - it's called from \_GPE._L02) to some code which is executed during either OS start and resume fom suspend/hibernation. So I've decided to put it in \_TZ._TMP before Return() statement:

```

                        Method (_TMP, 0, NotSerialized)

                        {

                            Store (0x05, Local1)

                            While (Local1)

                            {

                                Store (RTMP (), Local0)

                                If (LGreater (Local0, TCRT))

                                {

                                    Decrement (Local1)

                                }

                                Else

                                {

                                    Store (0x00, Local1)

                                }

                            }

                            \_GPE._L02 ()

                            Return (KELV (Local0))

                        }

```

The result is that fan works as expected running only when CPU temperature is really high.

----------

## Fuzzo

I think i'm one step far away the solution:

```
dell ~ # iasl -tc dsdt.dsl

Intel ACPI Component Architecture

ASL Optimizing Compiler version 20060912 [Jan  2 2008]

Copyright (C) 2000 - 2006 Intel Corporation

Supports ACPI Specification Revision 3.0a

dsdt.dsl  1681:                 Method (_S0D, 0, NotSerialized)

Warning  1097 -      Unknown reserved name ^  (_S0D)

dsdt.dsl  1723:                 Method (_S0D, 0, NotSerialized)

Warning  1097 -      Unknown reserved name ^  (_S0D)

dsdt.dsl  1777:                 Method (_S0D, 0, NotSerialized)

Warning  1097 -      Unknown reserved name ^  (_S0D)

dsdt.dsl  1819:                 Method (_S0D, 0, NotSerialized)

Warning  1097 -      Unknown reserved name ^  (_S0D)

dsdt.dsl  2111:                         And (Local0, 0x0F)

Warning  1104 -                                   ^ Result is not used, operator has no effect

dsdt.dsl  2169:                         And (Local0, 0x0F)

Warning  1104 -                                   ^ Result is not used, operator has no effect

dsdt.dsl  2227:                         And (Local0, 0x0F)

Warning  1104 -                                   ^ Result is not used, operator has no effect

dsdt.dsl  2285:                         And (Local0, 0x0F)

Warning  1104 -                                   ^ Result is not used, operator has no effect

dsdt.dsl  2343:                         And (Local0, 0x0F)

Warning  1104 -                                   ^ Result is not used, operator has no effect

dsdt.dsl  2401:                         And (Local0, 0x0F)

Warning  1104 -                                   ^ Result is not used, operator has no effect

ASL Input:  dsdt.dsl - 2744 lines, 80008 bytes, 981 keywords

AML Output: dsdt.aml - 8594 bytes 385 named objects 596 executable opcodes

Compilation complete. 0 Errors, 10 Warnings, 0 Remarks, 279 Optimizations

```

Anyone can help me with these 2 warnings? Thanks!

----------

## _Stevie_

hello all,

i fear i wont get any help, since no one answers questions in this thread

but im gonna try anyway.

my case is described here:

http://ubuntuforums.org/showthread.php?t=681887

greets,

stevie

----------

## mimosinnet

 *_Stevie_ wrote:*   

> i fear i wont get any help, since no one answers questions in this thread
> 
> but im gonna try anyway.
> 
> my case is described here:
> ...

 

You are right. There are many people asking questions not willing to answer them, even if they have found the solution. 

I was having these errors, some of them similar to yours:

```
# iasl -tc dsdt.dsl

Intel ACPI Component Architecture

ASL Optimizing Compiler version 20060912 [Jan 24 2008]

Copyright (C) 2000 - 2006 Intel Corporation

Supports ACPI Specification Revision 3.0a

dsdt.dsl  2893:                     Method (_CRS, 0, Serialized)

Warning  1086 -                                ^ Not all control paths return a value (_CRS)

dsdt.dsl  2893:                     Method (_CRS, 0, Serialized)

Warning  1079 -                                ^ Reserved method must return a value (_CRS)

dsdt.dsl  3553:     Method (_WAK, 1, NotSerialized)

Warning  1079 -                ^ Reserved method must return a value (_WAK)

ASL Input:  dsdt.dsl - 3608 lines, 125528 bytes, 1401 keywords

AML Output: dsdt.aml - 13236 bytes 436 named objects 965 executable opcodes
```

I have been able to solve all of them by reading the posts in this thread: adding at the end of the method:

```
Return (Package (0x02) 

        { 

             0x00, 

             0x00 

        }) 
```

Hope it is helpful. 

Cheers!

----------

## _Stevie_

hi mimosinnet!

thanks for your reply    :Very Happy: 

im gonna try this and will post feedback here!

greets,

stevie

----------

## _Stevie_

^^^^^^^^^^^^^^^^

this is spam, delete account

----------

## _Stevie_

hi mimosinnet!

unfortuneately the "package return fix" does only work for 

the first function.

im still not able to solve these:

```
Intel ACPI Component Architecture

ASL Optimizing Compiler version 20061109 [May 16 2007]

Copyright (C) 2000 - 2006 Intel Corporation

Supports ACPI Specification Revision 3.0a

dsdt.dsl   218:         Method (_L10, 0, NotSerialized)

Warning  1086 -                    ^ Not all control paths return a value (_L10)

dsdt.dsl  2886:                     Method (NVIF, 3, NotSerialized)

Warning  1086 -                                ^ Not all control paths return a value (NVIF)

dsdt.dsl  3067:                     Method (_EJ0, 0, NotSerialized)

Warning  1076 -                                ^ Reserved method has too few arguments (_EJ0 requires 1)

dsdt.dsl  4544:                 Store (\_SB.PCI0.LPC0.PMRD (0xFA), Local0)

Warning  1098 -                 Statement is unreachable ^ 

ASL Input:  dsdt.dsl - 4971 lines, 163408 bytes, 2323 keywords

AML Output: dsdt.aml - 17714 bytes 583 named objects 1740 executable opcodes

Compilation complete. 0 Errors, 4 Warnings, 0 Remarks, 544 Optimizations
```

here the code:

http://ubuntuusers.de/paste/31886/

----------

## mimosinnet

Steve,

If I understand correctly, for the first error "Not all control paths return a value" in the code, you included the return lines shown below (the ones without numbers) and the warning still appears. If this is the case, I am very sorry I do not know what else you should do.

```
213        Method (_L10, 0, NotSerialized)

  214        {

  215            Store (0xB0, DBUG)

  216            Acquire (\_GPE.GLCK, 0xFFFF)

  217            Store (\_SB.PCI0.LPC0.PMRD (0xAB), Local0)

  218            Store (\_SB.PCI0.LPC0.PMRD (0xAF), Local4)

  219            And (Local4, 0x04, Local7)

[...]

  247                Else

  248                {

  249                   \_SB.Z004 (0x51)

  250                }

                       Return (Package (0x02) 

                       { 

                        0x00, 

                        0x00 

                        }) 

  251            }
```

----------

## _Stevie_

hi mimosinnet!

Yup thats right, I think theres a different fix needed there.

But thanks for your help!

Best,

Stevie

----------

## sonicbhoc

Hey, my computer displays 2 batteries and I only have 1 installed. The second battery indicator is useless and is always wrong...

----------

## boda2004

 *sonicbhoc wrote:*   

> Hey, my computer displays 2 batteries and I only have 1 installed. The second battery indicator is useless and is always wrong...

 

Hope that will help.

----------

## P0w3r3d

hi , I got this output when tried to compile my DSDT (on HAIER H53):

 *Quote:*   

> 
> 
> Intel ACPI Component Architecture
> 
> ASL Optimizing Compiler version 20060912 [Apr  6 2008]
> ...

 

any idea about those errors? I can't find clues

----------

## kreon28

In a Wiki chapter I found out that I can use windows dsdt.dsl :

 *Quote:*   

> Hopefully you ended up with a fully readable dsdt.dsl file that you could move into your Gentoo install.

 

That's great but where should I move that file, just to let Gentoo use it instead of my old broken file?

----------

## thegigistouch

Hi everybody,

I've got an HP Compaq 6715 b (ATI SB 600 chip, ATI Express 1200, Sempron 3300+) and installing linux on this is making me totally crazy!

I tried many distribs, and it's all the time the same problem...

When I boot without any parameter, the screen goes black and the system hang while booting.

With acpi=off, the system boots quickly (about 1 min 30) and everyhting is working great, without power management (fans don't stop turning loudly).

With noapic or noapic nolapic the system work great, the power management is great, but the system is veeeeryyyy slooooow (about 4 minutes to start up). The Gnome applet showing cpu frequency seems to work correctly too (from 800 mhz = 40 % to 2 ghz = 100%).

I've got a buggy DSDT:

```

dsdt.dsl  2188:                             Return (C15F (0x00, Arg0))

Error    4059 -         Called method returns no value ^ 

dsdt.dsl  2287:                             Return (C15F (0x01, Arg0))

Error    4059 -         Called method returns no value ^ 

dsdt.dsl  2310:                             Return (C15F (0x02, Arg0))

Error    4059 -         Called method returns no value ^ 

dsdt.dsl  2333:                             Return (C15F (0x03, Arg0))

Error    4059 -         Called method returns no value ^ 

dsdt.dsl  2356:                             Return (C15F (0x04, Arg0))

Error    4059 -         Called method returns no value ^ 

dsdt.dsl  7036:                         Wait (\_SB.C161, 0x10)

Warning  1103 -        Possible operator timeout is ignored ^ 

dsdt.dsl 10472:                         If (LEqual (C315 (0x00), 0x01))

Warning  1091 -                                        ^ Called method may not always return a value

dsdt.dsl 10496:                         If (LEqual (C315 (0x01), 0x01))

Warning  1091 -                                        ^ Called method may not always return a value

dsdt.dsl 11652:             Method (C315, 1, NotSerialized)

Warning  1086 -                        ^ Not all control paths return a value (C315)

ASL Input:  dsdt.dsl - 14466 lines, 531038 bytes, 6816 keywords

Compilation complete. 5 Errors, 4 Warnings, 0 Remarks, 2375 Optimizations

```

Could you please help me to debug this, I'm a totaly n00b in ASL, and totaly desperate about having a working system...

Don't hesitate to ask me for more informations!

Thanks for helping!   :Very Happy: 

thegigistouch

----------

## twalter

 *eccerr0r wrote:*   

> Anyone know what to do to fix sillyness like:
> 
> ```
> ouka.dsl   332:             Store (Local0, Local0)
> 
> ...

 

It looks as if they were trying to push a value on the stack, doesn't it?.  It should be safe to comment it out, as local variables are destroyed on exit and I typically find these at the end of methods.   (According to the spec from Intel which, I might add, is 631 pages of incomprehensible @!#$%!!    :Evil or Very Mad:  It's either poorly written or really well obfuscated.)  My mobo uses an Award BIOS as well so I'll assume that's the common link.  It may be possible to follow the methods backwards and see if they are expecting a return (as opposed to twiddling a local variable the way you would a global.)

- Todd

----------

## kernelhacker

I've got a rather buggy dsdt here with my Cybersystem Notebook which is a clevo 570ru barebone. At first compilation failed with a LOT of errors:

```
Maximum error count (200) exceeded

ASL Input:  d - 6335 lines, 222080 bytes, 2313 keywords

Compilation complete. 201 Errors, 0 Warnings, 0 Remarks, 2 Optimizations

Maximum error count (200) exceeded

Segmentation fault 
```

changing     

```
External (^CPU0._PPC)
```

to

```
    External (CPU0._PPC)
```

reduced the errors to "only" 12. But now i'm helpless  :Sad: 

Maybe someone can help me, the original dsdt.dsl file is here: http://www.stefanpokorny.de/dsdt.dsl and my patched version is here: http://www.stefanpokorny.de/dsdt.dsl.patched.

Output from "iasl -tc dsdt.dsl.patched" is here:

```
Intel ACPI Component Architecture

ASL Optimizing Compiler version 20080701 [Sep 15 2008]

Copyright (C) 2000 - 2008 Intel Corporation           

Supports ACPI Specification Revision 3.0a             

dsdt.dsl.patched   574:                     If (LGreater (^CPU0._PPC, Zero))

Error    4063 -      Object not found or not accessible from scope ^  (^CPU0._PPC)

dsdt.dsl.patched   576:                         Subtract (^CPU0._PPC, One, ^CPU0._PPC)

Error    4063 -      Object not found or not accessible from scope ^  (^CPU0._PPC)    

dsdt.dsl.patched   576:                         Subtract (^CPU0._PPC, One, ^CPU0._PPC)

Error    4063 -                       Object not found or not accessible from scope ^  (^CPU0._PPC)

dsdt.dsl.patched   578:                         Add (^CPU0._PPC, One, ^CPU0._PPC)

Error    4063 - Object not found or not accessible from scope ^  (^CPU0._PPC)    

dsdt.dsl.patched   578:                         Add (^CPU0._PPC, One, ^CPU0._PPC)

Error    4063 -                  Object not found or not accessible from scope ^  (^CPU0._PPC)

dsdt.dsl.patched   583:                         Add (^CPU0._PPC, One, ^CPU0._PPC)

Error    4063 - Object not found or not accessible from scope ^  (^CPU0._PPC)

dsdt.dsl.patched   583:                         Add (^CPU0._PPC, One, ^CPU0._PPC)

Error    4063 -                  Object not found or not accessible from scope ^  (^CPU0._PPC)

dsdt.dsl.patched   585:                         Subtract (^CPU0._PPC, One, ^CPU0._PPC)

Error    4063 -      Object not found or not accessible from scope ^  (^CPU0._PPC)

dsdt.dsl.patched   585:                         Subtract (^CPU0._PPC, One, ^CPU0._PPC)

Error    4063 -                       Object not found or not accessible from scope ^  (^CPU0._PPC)

dsdt.dsl.patched   603:                     Store (Local0, ^CPU0._PPC)

Error    4063 -       Object not found or not accessible from scope ^  (^CPU0._PPC)

dsdt.dsl.patched   614:                         Store (Local0, ^CPU0._PPC)

Error    4063 -           Object not found or not accessible from scope ^  (^CPU0._PPC)

dsdt.dsl.patched   618:                         Store (Zero, ^CPU0._PPC)

Error    4063 -         Object not found or not accessible from scope ^  (^CPU0._PPC)

dsdt.dsl.patched  6289:             Method (WMBB, 3, NotSerialized)

Warning  1086 -                                ^ Not all control paths return a value (WMBB)

ASL Input:  dsdt.dsl.patched - 6335 lines, 222079 bytes, 2313 keywords

Compilation complete. 12 Errors, 1 Warnings, 0 Remarks, 47 Optimizations
```

Any help is appreciated!

Thanks,

Stefan

----------

## kernelhacker

 *kernelhacker wrote:*   

> I've got a rather buggy dsdt here with my Cybersystem Notebook which is a clevo 570ru barebone. At first compilation failed with a LOT of errors:
> 
> ```
> Maximum error count (200) exceeded
> 
> ...

 

Bump

Anybody here who can help me with this? 

Thanks,

Stefan

----------

## jetblack

I'm a little out of practice, but it looks like your 11 errors are still related to that ^CPU0._PPC call. I think I'd try replacing the remaining ^CPU0._PPC references with CPU0._PPC, especially since you've redefined the function call). That's probably why it's saying it can't find the function now. I'd see if that gets you down to the one warning about the WMBB call. I think you're ok at that point. All the warning is saying is that not all of the branches in the WMBB function return values. If the function doesn't hit those branches, it should be fine.

----------

## jetblack

Also, if you want to get rid of the warning, I'd throw in some "Return (Zero)" statements in this block of the WMBB function:

```

If (LEqual (Arg1, 0x02)) {}

                If (LEqual (Arg1, 0x03)) {}

                If (LEqual (Arg1, 0x04)) {}

                If (LEqual (Arg1, 0x05)) {}

                If (LEqual (Arg1, 0x06)) {}

                If (LEqual (Arg1, 0x07)) {}

                If (LEqual (Arg1, 0x08)) {}

                If (LEqual (Arg1, 0x09)) {}

```

That should at least clear up the warning. To be fair, though, I haven't really looked at what that function is supposed to be doing. I'm assuming, though, that if they didn't bother putting return values in those branches at all, then they can't be too big of a deal.

----------

## kernelhacker

 *jetblack wrote:*   

> I'm a little out of practice, but it looks like your 11 errors are still related to that ^CPU0._PPC call. I think I'd try replacing the remaining ^CPU0._PPC references with CPU0._PPC, especially since you've redefined the function call). That's probably why it's saying it can't find the function now. I'd see if that gets you down to the one warning about the WMBB call. I think you're ok at that point. All the warning is saying is that not all of the branches in the WMBB function return values. If the function doesn't hit those branches, it should be fine.

 

I tried some things, but changing ^CPU0 to CPU0 was probably not a good idea. I guess i just created a new error, which inhibited the detection of the old errors.

The first error is 

```

ACPI Error (nsaccess-0531): ACPI path has too many parent prefixes (^) - reached beyond root node [20080701]                                                    

```

and is followed by this one 

```

Maximum error count (200) exceeded

dsdt.dsl    24:     External (^CPU0._PPC)

Error    4014 -  From ACPI CA Subsystem ^  (AE_NOT_FOUND Failure from lookup %s

)                                                                              

```

and a lot of these 

```

dsdt.dsl    26:     Mutex (MUTX, 0x00)

Error    4062 -               ^ Object does not exist (MUTX)

```

Unfortunately i have absolutely no idea, what to do. I wrote to the clevo support, but they did not even answer. I just can't believe, that nearly every board has buggy dsdt tables....

Thanks for your help!

Stefan

----------

## kodiakmax

I have a Clevo M570RU Laptop as well.

Here is mine if anyone has any ideas?  I have over 200 of them.  Just about all of them are error 4062 but I can't seem to find anything on that.

because the files are quite long I'll upload them to the net.  I don't see an attachment button for the forum.  I hope I'm not going blind...

dsdt.dsl (216KB)--> http://www.sendspace.com/file/88f6mf

compile errors (21KB)--> http://www.sendspace.com/file/2wq5wc

here is a quick excerpt of the compile errors.

```
Intel ACPI Component Architecture

ASL Optimizing Compiler version 20060912 [Jan 25 2008]

Copyright (C) 2000 - 2006 Intel Corporation

Supports ACPI Specification Revision 3.0a

ACPI Error (nsaccess-0531): ACPI path has too many parent prefixes (^) - reached beyond root node [20060912]

Maximum error count (200) exceeded

dsdt.dsl    23:     External (^CPU0._PPC)

Error    4014 -  From ACPI CA Subsystem ^  (AE_NOT_FOUND Failure from lookup %s

)

dsdt.dsl    25:     Mutex (MUTX, 0x00)

Error    4062 -               ^ Object does not exist (MUTX)

dsdt.dsl    26:     OperationRegion (PRT0, SystemIO, 0x80, 0x04)

Error    4062 -   Object does not exist ^  (PRT0)

dsdt.dsl    27:     Field (PRT0, DWordAcc, Lock, Preserve)

Error    4062 -               ^ Object does not exist (PRT0)

dsdt.dsl    29:         P80H,   32

Error    4062 -            ^ Object does not exist (P80H)

dsdt.dsl    32:     Method (P8XH, 2, Serialized)

Error    4062 -                ^ Object does not exist (P8XH)

dsdt.dsl    36:             Store (Or (And (P80D, 0xFFFFFF00), Arg1), P80D)

Error    4062 -          Object does not exist ^  (P80D)

dsdt.dsl    36:             Store (Or (And (P80D, 0xFFFFFF00), Arg1), P80D)

Error    4062 -                                    Object does not exist ^  (P80D)

dsdt.dsl    41:             Store (Or (And (P80D, 0xFFFF00FF), ShiftLeft (Arg1, 0x08)

Error    4062 -          Object does not exist ^  (P80D)

dsdt.dsl    42:                 ), P80D)

Error    4062 - Object does not exist ^  (P80D)

dsdt.dsl    47:             Store (Or (And (P80D, 0xFF00FFFF), ShiftLeft (Arg1, 0x10)

Error    4062 -          Object does not exist ^  (P80D)

dsdt.dsl    48:                 ), P80D)

Error    4062 - Object does not exist ^  (P80D)

```

----------

## kodiakmax

OK I changed all ^CPU0._PPC calls to CPU0.PPC and now only get 12 errors.  the new list is below.

It looks like kernelhacker is having the same issue I am.  Although I'm not suprised.  He has the same laptop it looks like lol. Damn Clevo and their buggy DSDT lol.

edited dsdt --> http://www.sendspace.com/file/9wgvv4

new errors -

```

Intel ACPI Component Architecture

ASL Optimizing Compiler version 20060912 [Jan 25 2008]

Copyright (C) 2000 - 2006 Intel Corporation

Supports ACPI Specification Revision 3.0a

dsdt.dsl   573:                     If (LGreater (CPU0._PPC, Zero))

Error    4063 -                                           ^ Object not found or not accessible from scope (CPU0._PPC)

dsdt.dsl   575:                         Subtract (CPU0._PPC, One, CPU0._PPC)

Error    4063 -                                           ^ Object not found or not accessible from scope (CPU0._PPC)

dsdt.dsl   575:                         Subtract (CPU0._PPC, One, CPU0._PPC)

Error    4063 -             Object not found or not accessible from scope ^  (CPU0._PPC)

dsdt.dsl   577:                         Add (CPU0._PPC, One, CPU0._PPC)

Error    4063 -                                      ^ Object not found or not accessible from scope (CPU0._PPC)

dsdt.dsl   577:                         Add (CPU0._PPC, One, CPU0._PPC)

Error    4063 -        Object not found or not accessible from scope ^  (CPU0._PPC)

dsdt.dsl   582:                         Add (CPU0._PPC, One, CPU0._PPC)

Error    4063 -                                      ^ Object not found or not accessible from scope (CPU0._PPC)

dsdt.dsl   582:                         Add (CPU0._PPC, One, CPU0._PPC)

Error    4063 -        Object not found or not accessible from scope ^  (CPU0._PPC)

dsdt.dsl   584:                         Subtract (CPU0._PPC, One, CPU0._PPC)

Error    4063 -                                           ^ Object not found or not accessible from scope (CPU0._PPC)

dsdt.dsl   584:                         Subtract (CPU0._PPC, One, CPU0._PPC)

Error    4063 -             Object not found or not accessible from scope ^  (CPU0._PPC)

dsdt.dsl   602:                     Store (Local0, CPU0._PPC)

Error    4063 -                                            ^ Object not found or not accessible from scope (CPU0._PPC)

dsdt.dsl   613:                         Store (Local0, CPU0._PPC)

Error    4063 -  Object not found or not accessible from scope ^  (CPU0._PPC)

dsdt.dsl   617:                         Store (Zero, CPU0._PPC)

Error    4063 -                                              ^ Object not found or not accessible from scope (CPU0._PPC)

dsdt.dsl  6288:             Method (WMBB, 3, NotSerialized)

Warning  1086 -                        ^ Not all control paths return a value (WMBB)

ASL Input:  dsdt.dsl - 6334 lines, 222048 bytes, 2313 keywords

Compilation complete. 12 Errors, 1 Warnings, 0 Remarks, 47 Optimizations

```

----------

## kodiakmax

OK I now have the following report.

```
Intel ACPI Component Architecture

ASL Optimizing Compiler version 20060912 [Jan 25 2008]

Copyright (C) 2000 - 2006 Intel Corporation

Supports ACPI Specification Revision 3.0a

ASL Input:  dsdt.dsl2 - 6339 lines, 222212 bytes, 2314 keywords

AML Output: dsdt.aml - 22841 bytes 664 named objects 1650 executable opcodes

Compilation complete. 0 Errors, 0 Warnings, 0 Remarks, 59 Optimizations

```

weeeeee!!!!!

I replaced all ^CPU0._PPC with \_PR_.CPU0._PPC

and then added a Return function for the WMBB warning.

here is my fixed dsdt (untested) --> http://www.sendspace.com/file/srkcob

laptop Sager NP5790 (a.k.a. CLEVO M570RU)

here is the bios image I am using as well.  ver- 1.00.12aSL ; current as of 15JAN2009 --> http://www.sendspace.com/file/5xc9k9

I have not yet tried it but will edit this post when I do.Last edited by kodiakmax on Wed Feb 11, 2009 7:10 pm; edited 1 time in total

----------

## riczan

Help, I also have a sager 5793, same bugs and same fix.

However, when I replace the dsdt in the kernel (I'm using the hex file method), after booting up I get the same errors.

Also if I check the current /proc/acpi/dsdt file I see that it is not patched!!! what is going on?

dmesg reports that I'm using the new dsdt:

```

ACPI: Override [DSDT-CRESTLNE], this is unsafe: tainting kernel

ACPI: Table DSDT replaced by host OS

```

Also dmesg says that,

```

DSDT override uses original SSDTs unless acpi_no_auto_ssdt

```

I've tried with and without this flag and I get the same result.

this is very strange. What did I do wrong.

For the hex method there are 3 flags that must be set. All the guides said that 

CONFIG_ACPI_CUSTOM_DSDT=y

CONFIG_ACPI_CUSTOM_DSDT_FILE="/usr/src/dsdts/mydsdt.hex"

CONFIG_STANDALONE=n

The last option in gentoo looks like this:

# CONFIG_STANDALONE is not set

is this the same as =n, could this be the problem. However, I don't get compilation errors and the dsdt seems to be loaded but is not working...

Please help, I feel we are so close now.

----------

## kodiakmax

Well, I'm having problems compiling mine into the kernel.  So I'm going to try the initramfs method.  Probably better that way anyway, so I can test different changes to the dsdt more easily.

----------

## riczan

did you have the flags set as I described above?

First you need to unset the STANDALONE option. You find it in device drivers/general setup/

only then you will see the other option in the acpi menu.

I'm using 2.6.28-tuxonice-r1 sources. Let me know if the initrd method works. I haven't tried it because I think the kernel needs to be patched, so I would need a vanilla kernel (I think).

Good luck, 

anyone else? suggestions are wellcomed...

----------

## kodiakmax

Yes I did try the following kernel options

CONFIG_ACPI_CUSTOM_DSDT=y

CONFIG_ACPI_CUSTOM_DSDT_FILE="/home/kodiakmax/iasl/work/dsdt.hex"

CONFIG_STANDALONE=n 

However, When I reboot I do not get a dmesg output notifying me that custom dsdt is in use.

I have now just tried the initramfs support with the following patch --> http://gaugusch.at/kernel.shtml

I then enabled the following kernel option

CONFIG_ACPI_CUSTOM_DSDT_INITRD=y

I then used this script --> http://gaugusch.at/acpi-dsdt-initrd-patches/initrd-add-dsdt

to append the dsdt to the initramfs,  when I reboot again there is still no dmesg notifying me of a custom dsdt in use.

 *Quote:*   

> I haven't tried it because I think the kernel needs to be patched, so I would need a vanilla kernel (I think). 

 

You shouldn't need vanilla kernel sources for this patch.  Just follow steps 9b on page1 of this thread if interested.  Use the patch for kernel 2.6.28 with the link I provided above.

Although with neither method working for me, take my advice with a grain of salt! lol

----------

## riczan

Are you sure your dmesg before and after are identical? Did you compare line by line? I find it hard to believe that there are absolutely no changes... you should at least get somehting saying that you are using a custom dsdt... or failed to use custom dsd or something.

did you recompiled the kernel?

did you updated your grub?

I also want to report that I tried the acpi_os_name="Windows 2001 SP2" with no apparent effect. (I read the dsdt.dsl to get the "Windows 2001 SP2").

Finally, I contacted Sager customer service just for the sake of it, requesting a BIOS upgrade  :Smile: . They told me to disable the robson option in the bios... I don't see how that is related but you may want to try that. (I think this is the automatic response to the word "Linux")

I have it on because that enables the AHCI support for hardrives but I will disable it and see what happens on a gentoo bootup CD. I don't know if that will brake my current linux installation (that's why I want to try the CD first)

You can try that too.

Don't give up. Since this is not a threat, just a discussion, perhaps we would get more help on a different forum.

I'll see were I go with the initrd but your tests don't seem very encouraging.

good luck

----------

## kodiakmax

I have had the robson disabled for quite some time now.  So, that's not it for me.  The BIOS image in my post above is the most current straight from sager tech support.  Clevo's most current BIOS image is actually 1.00.11 So, sager has done something to it.  However, I am unable to find out what.

I too find it very strange that I can't get the custom dsdt loaded with either the kernel or initramfs method.

here is a quick output after kernel reconfig and reboot.  This time I tried both .hex method and initramfs method together.

```
DarkComet kodiakmax # zcat /proc/config.gz > /usr/src/config                                                           

DarkComet kodiakmax # cat /usr/src/config |grep DSDT

CONFIG_ACPI_CUSTOM_DSDT_FILE="/home/kodiakmax/iasl/work/dsdt.hex"

CONFIG_ACPI_CUSTOM_DSDT=y

CONFIG_ACPI_CUSTOM_DSDT_INITRD=y

DarkComet kodiakmax # cat /usr/src/config |grep STANDALONE

# CONFIG_STANDALONE is not set

DarkComet kodiakmax # dmesg |grep DSDT

DarkComet kodiakmax # dmesg |grep dsdt

DarkComet kodiakmax # dmesg |grep ACPI

[    1.106890] ACPI Error (psargs-0358): [^CPU0._PPC] Namespace lookup failure, AE_NOT_FOUND

[    1.106895] ACPI Error (psparse-0524): Method parse/execution failed [\_PR_.POWC] (Node ffff88015fa2e400), AE_NOT_FOUND

[    1.106946] ACPI Error (psparse-0524): Method parse/execution failed [\_SB_.AC__._PSR] (Node ffff88015fa2e800), AE_NOT_FOUND

[    1.106974] ACPI Exception (ac-0135): AE_NOT_FOUND, Error reading AC Adapter state [20080926]

[    1.125262] ACPI: Battery Slot [BAT0] (battery present)

[    1.128255] ACPI: Power Button (FF) [PWRF]

[    1.131254] ACPI: Power Button (CM) [PWB]

[    1.134263] ACPI: Sleep Button (CM) [SLPB]

[    1.134928] ACPI: Lid Switch [LID]

[    1.135497] ACPI: SSDT 9FED71FD, 027A (r1  PmRef  Cpu0Ist     3000 INTL 20050624)

[    1.135890] ACPI: SSDT 9FED6CCE, 04AA (r1  PmRef  Cpu0Cst     3001 INTL 20050624)

[    1.138586] ACPI: CPU0 (power states: C1[C1] C2[C2] C3[C3])

[    1.138622] processor ACPI_CPU:00: registered as cooling_device0

[    1.138625] ACPI: Processor [CPU0] (supports 8 throttling states)

[    1.138987] ACPI: SSDT 9FED7477, 00C8 (r1  PmRef  Cpu1Ist     3000 INTL 20050624)

[    1.139275] ACPI: SSDT 9FED7178, 0085 (r1  PmRef  Cpu1Cst     3000 INTL 20050624)

[    1.140104] ACPI: CPU1 (power states: C1[C1] C2[C2] C3[C3])

[    1.140137] processor ACPI_CPU:01: registered as cooling_device1

[    1.140140] ACPI: Processor [CPU1] (supports 8 throttling states)

[    1.159797] ACPI: Thermal Zone [THRM] (52 C)

[   11.686372] ACPI: Video Device [VGA] (multi-head: yes  rom: no  post: no)

[   12.218194] ACPI: I/O resource 0000:00:1f.3 [0x1c00-0x1c1f] conflicts with ACPI region SMBI [0x1c00-0x1c0f]

[   12.218196] ACPI: Device needs an ACPI driver

[   13.233337] nvidia 0000:01:00.0: power state changed by ACPI to D0

DarkComet kodiakmax #

```

My grub does not really require updating as my /boot is not on a seperate partition.  However, I did edit the grub.conf to use the modded initramfs.  The modded initramfs does include the DSDT.aml in it's file list as well verified through the following command

```
DarkComet kodiakmax # cd /boot

DarkComet kodiakmax # zcat initramfs*28-sabayon-dsdt |cpio -t > zcat.log

DarkComet kodiakmax # cat zcat.log |grep DSDT

DSDT.aml

DarkComet kodiakmax #

```

----------

## riczan

I see the light at the end of the tunnel...

I rebooted with the gentoo CD and dmesg reports no errors!!! The /proc/acpi/ac_adapter directory is not empty anymore!!!

This is good news... but I'm not sure how to interpret this yet. Is my current kernel buggy? or is it a option in the .config that I'm missing?

I'll try both aproaches and I'll report back. It will take me some time to go through all the config file... can some one suggest what could be the possible relevant sections that should be identical? (other than the obvious ACPI section).

But this is good, if I don't get it we can always use the genkernel and have full ACPI functionality... of course, if I wanted a genkernel I would be using ubuntu instead.

cheers

Unfortunately I don't see the kernel version in the dmesg of the gentoo boot CD. But I see some obvious differences already,

gentoo CD:

```

ACPI: DMI System Vendor: SAGER

ACPI: DMI Product Name: M570RU

ACPI: DMI Product Version: CLEVO:M570RU-1.00.12S

ACPI: DMI Board Name: SANTA ROSA

ACPI: DMI BIOS Vendor: Phoenix

ACPI: DMI BIOS Date: 01/14/2009

```

my current 2.6.28-tuxonice-r1

```

DMI present

```

That's it  :Sad: 

This looks more like a flag I'm missing.

I also checked the dsdt.dsl file used by the gentoo CD and the "bad" code is there External (^CPU0._PPC) and yet, the gentooCD kernel has no problem with that... this makes me very suspicious of the whole compiling of the dsdt.dsl to check for errors.

enough for now.

----------

## kodiakmax

I just downloaded the gentoo 2008 amd64 live cd and my ac_adapter folder is still empty.  I still get the same AE_NOT_FOUND errors but I get a few more ACPI entries above them.

Which live cd are you using? Are you entering any kernel parameter's at boot?

----------

## riczan

I'm using 32-bit CD. the config says its version

 Linux kernel version: 2.6.24-gentoo-r5

I opened a threat in the kernel forum hoping to get help but it looks like it is just you and me pal. I reported some more unsuccesful experiments there. 

Actually, I created a liveUSB with sys-boot/unetbootin (in Windows XP, shame on me) so I don't know if those are the same versions as the CDs this days...

let me know how it goes. No special flags on kernel, just default option in grub menu.

I'm going to have to install a genkernel  :Sad:  my head hurts just to think on all those useless modules, but I see no other way out. If it works I'll try to get rid of modules little by little. I'll let you know how that goes.

----------

## riczan

and these are the kernel flags used by genkernel... I don't see anything related to the ACPI so I don't know how it does it.

```

Kernel command line: initrd=/ubninit root=/dev/ram0 init=/linuxrc  dokeymap loop

type=squashfs loop=/image.squashfs  cdroot vga=791 BOOT_IMAGE=/ubnkern

```

just to wet your apetite, I do a grep ACPI on the usblive config:

```

ACPI: RSDP 000F69F0, 0024 (r2 PTLTD )

ACPI: XSDT 9FED6E9D, 008C (r1 MIDERN MIDERN    6040000  LTP        0)

ACPI: FACP 9FEDDBD2, 00F4 (r3 INTEL  CRESTLNE  6040000 ALAN        1)

ACPI: DSDT 9FED8220, 593E (r2 INTEL  CRESTLNE  6040000 INTL 20050624)

ACPI: FACS 9FEDEFC0, 0040

ACPI: APIC 9FEDDCC6, 0068 (r1 INTEL  CRESTLNE  6040000 LOHR       5A)

ACPI: HPET 9FEDDD2E, 0038 (r1 INTEL  CRESTLNE  6040000 LOHR       5A)

ACPI: MCFG 9FEDDD66, 003C (r1 INTEL  CRESTLNE  6040000 LOHR       5A)

ACPI: TCPA 9FEDDDA2, 0032 (r1 Intel   CRESTLN  6040000          5A52)

ACPI: TMOR 9FEDDDD4, 0026 (r1 PTLTD            6040000 PTL         3)

ACPI: APIC 9FEDDDFA, 0068 (r1 PTLTD      APIC    6040000  LTP        0)

ACPI: SLIC 9FEDDE62, 0176 (r1 MIDERN MIDERN    6040000  LTP        0)

ACPI: BOOT 9FEDDFD8, 0028 (r1 PTLTD  $SBFTBL$  6040000  LTP        1)

ACPI: SSDT 9FED7F43, 02DD (r1 SataRe SataAhci     1000 INTL 20050624)

ACPI: SSDT 9FED74B5, 025F (r1  PmRef  Cpu0Tst     3000 INTL 20050624)

ACPI: SSDT 9FED740F, 00A6 (r1  PmRef  Cpu1Tst     3000 INTL 20050624)

ACPI: SSDT 9FED6F29, 04E6 (r1  PmRef    CpuPm     3000 INTL 20050624)

ACPI: BIOS bug: multiple APIC/MADT found, using 0

ACPI: If "acpi_apic_instance=2" works better, notify linux-acpi@vger.kernel.org

ACPI: PM-Timer IO Port: 0x1008

ACPI: Local APIC address 0xfee00000

ACPI: LAPIC (acpi_id[0x00] lapic_id[0x00] enabled)

ACPI: LAPIC (acpi_id[0x01] lapic_id[0x01] enabled)

ACPI: LAPIC_NMI (acpi_id[0x00] high edge lint[0x1])

ACPI: LAPIC_NMI (acpi_id[0x01] high edge lint[0x1])

ACPI: IOAPIC (id[0x01] address[0xfec00000] gsi_base[0])

ACPI: INT_SRC_OVR (bus 0 bus_irq 0 global_irq 2 dfl dfl)

ACPI: INT_SRC_OVR (bus 0 bus_irq 9 global_irq 9 high level)

ACPI: IRQ9 used by override.

ACPI: HPET id: 0x8086a201 base: 0xfed00000

Using ACPI (MADT) for SMP configuration information

ACPI: Core revision 20070126

ACPI: bus type pci registered

ACPI: EC: Look up EC in DSDT

ACPI: BIOS _OSI(Linux) query ignored

ACPI: DMI System Vendor: SAGER

ACPI: DMI Product Name: M570RU

ACPI: DMI Product Version: CLEVO:M570RU-1.00.12S

ACPI: DMI Board Name: SANTA ROSA

ACPI: DMI BIOS Vendor: Phoenix

ACPI: DMI BIOS Date: 01/14/2009

ACPI: Please send DMI info above to linux-acpi@vger.kernel.org

ACPI: If "acpi_osi=Linux" works better, please notify linux-acpi@vger.kernel.org

ACPI: Interpreter enabled

ACPI: (supports S0 S3 S4 S5)

ACPI: Using IOAPIC for interrupt routing

ACPI: EC: non-query interrupt received, switching to interrupt mode

ACPI: EC: GPE = 0x18, I/O: command/status = 0x66, data = 0x62

ACPI: EC: driver started in interrupt mode

ACPI: PCI Root Bridge [PCI0] (0000:00)

PCI quirk: region 1000-107f claimed by ICH6 ACPI/GPIO/TCO

ACPI: PCI Interrupt Routing Table [\_SB_.PCI0._PRT]

ACPI: PCI Interrupt Link [LNKA] (IRQs 1 3 4 *5 6 7 10 12 14 15)

pnp: PnP ACPI init

ACPI: bus type pnp registered

pnp: PnP ACPI: found 12 devices

ACPI: ACPI bus type pnp unregistered

PCI: Using ACPI for IRQ routing

ACPI: PCI Interrupt 0000:00:01.0[A] -> GSI 16 (level, low) -> IRQ 16

ACPI: PCI Interrupt 0000:0c:09.0[A] -> GSI 19 (level, low) -> IRQ 19

ACPI: SSDT 9FED7C43, 0238 (r1  PmRef  Cpu0Ist     3000 INTL 20050624)

ACPI: SSDT 9FED7714, 04AA (r1  PmRef  Cpu0Cst     3001 INTL 20050624)

ACPI: CPU0 (power states: C1[C1] C2[C2] C3[C3])

ACPI: Processor [CPU0] (supports 8 throttling states)

ACPI: SSDT 9FED7E7B, 00C8 (r1  PmRef  Cpu1Ist     3000 INTL 20050624)

ACPI: SSDT 9FED7BBE, 0085 (r1  PmRef  Cpu1Cst     3000 INTL 20050624)

ACPI: CPU1 (power states: C1[C1] C2[C2] C3[C3])

ACPI: Processor [CPU1] (supports 8 throttling states)

ACPI: Power Button (FF) [PWRF]

ACPI: Power Button (CM) [PWB]

ACPI: Sleep Button (CM) [SLPB]

ACPI: Lid Switch [LID]

ACPI: Battery Slot [BAT0] (battery present)

ACPI: Invalid passive threshold

ACPI: Thermal Zone [THRM] (47 C)

ACPI: PCI Interrupt 0000:08:00.0[A] -> GSI 19 (level, low) -> IRQ 19

ACPI: AC Adapter [AC] (on-line)

ACPI: PCI Interrupt 0000:00:1f.3[C] -> GSI 19 (level, low) -> IRQ 19

ACPI: Video Device [VGA] (multi-head: yes  rom: no  post: no)

ACPI: PCI Interrupt 0000:00:1b.0[A] -> GSI 22 (level, low) -> IRQ 22

ACPI: Invalid passive threshold

```

NOTE: I removed some repeated IRQ, PCI lines

See? no "bugs", and AC is online! 

We need expert counseling here... where is everybody?

----------

## kodiakmax

I just downloaded Ubuntu 8.10 amd64 live cd.  It appears that acpi is working properly with it as well. The proc/acpi/ac_adapter folder is populated. No errors apper in dmesg.

However, if you notice there is a bios bug identified...

```
[    0.000000] ACPI: BIOS bug: multiple APIC/MADT found, using 0

[    0.000000] ACPI: If "acpi_apic_instance=2" works better, notify linux-acpi@vger.kernel.org 
```

As well as a thermal error:

```
[  270.581487] ACPI Exception (thermal-0469): AE_ERROR, ACPI thermal trip point state changed 
```

```
ubuntu@ubuntu:~$ uname -a

Linux ubuntu 2.6.27-7-generic #1 SMP Fri Oct 24 06:40:41 UTC 2008 x86_64 GNU/Linux

ubuntu@ubuntu:~$ dmesg |grep DSDT

[    0.000000] ACPI: DSDT 9FED8220, 593E (r2 INTEL  CRESTLNE  6040000 INTL 20050624)

[    0.008284] ACPI: Checking initramfs for custom DSDT

[    0.490204] ACPI: EC: Look up EC in DSDT

ubuntu@ubuntu:~$ dmesg |grep ACPI

[    0.000000]  BIOS-e820: 000000009fed0000 - 000000009fedf000 (ACPI NVS)

[    0.000000] ACPI: RSDP 000F69F0, 0024 (r2 PTLTD )

[    0.000000] ACPI: XSDT 9FED644F, 0094 (r1 MSTEST TESTONLY  6040000  LTP        0)

[    0.000000] ACPI: FACP 9FEDDBD2, 00F4 (r3 INTEL  CRESTLNE  6040000 ALAN        1)

[    0.000000] ACPI: DSDT 9FED8220, 593E (r2 INTEL  CRESTLNE  6040000 INTL 20050624)

[    0.000000] ACPI: FACS 9FEDEFC0, 0040

[    0.000000] ACPI: APIC 9FEDDCC6, 0068 (r1 INTEL  CRESTLNE  6040000 LOHR       5A)

[    0.000000] ACPI: HPET 9FEDDD2E, 0038 (r1 INTEL  CRESTLNE  6040000 LOHR       5A)

[    0.000000] ACPI: MCFG 9FEDDD66, 003C (r1 INTEL  CRESTLNE  6040000 LOHR       5A)

[    0.000000] ACPI: TCPA 9FEDDDA2, 0032 (r1 Intel   CRESTLN  6040000          5A52)

[    0.000000] ACPI: TMOR 9FEDDDD4, 0026 (r1 PTLTD            6040000 PTL         3)

[    0.000000] ACPI: APIC 9FEDDDFA, 0068 (r1 PTLTD      APIC    6040000  LTP        0)

[    0.000000] ACPI: SLIC 9FEDDE62, 0176 (r1 MSTEST TESTONLY  6040000  LTP        0)

[    0.000000] ACPI: BOOT 9FEDDFD8, 0028 (r1 PTLTD  $SBFTBL$  6040000  LTP        1)

[    0.000000] ACPI: SSDT 9FED7BD1, 064F (r1 SataRe  SataPri     1000 INTL 20050624)

[    0.000000] ACPI: SSDT 9FED753F, 0692 (r1 SataRe  SataSec     1000 INTL 20050624)

[    0.000000] ACPI: SSDT 9FED6A6F, 025F (r1  PmRef  Cpu0Tst     3000 INTL 20050624)

[    0.000000] ACPI: SSDT 9FED69C9, 00A6 (r1  PmRef  Cpu1Tst     3000 INTL 20050624)

[    0.000000] ACPI: SSDT 9FED64E3, 04E6 (r1  PmRef    CpuPm     3000 INTL 20050624)

[    0.000000] ACPI: BIOS bug: multiple APIC/MADT found, using 0

[    0.000000] ACPI: If "acpi_apic_instance=2" works better, notify linux-acpi@vger.kernel.org

[    0.000000] ACPI: DMI detected: Clevo

[    0.000000] ACPI: PM-Timer IO Port: 0x1008

[    0.000000] ACPI: Local APIC address 0xfee00000

[    0.000000] ACPI: LAPIC (acpi_id[0x00] lapic_id[0x00] enabled)

[    0.000000] ACPI: LAPIC (acpi_id[0x01] lapic_id[0x01] enabled)

[    0.000000] ACPI: LAPIC_NMI (acpi_id[0x00] high edge lint[0x1])

[    0.000000] ACPI: LAPIC_NMI (acpi_id[0x01] high edge lint[0x1])

[    0.000000] ACPI: IOAPIC (id[0x01] address[0xfec00000] gsi_base[0])

[    0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 0 global_irq 2 dfl dfl)

[    0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 9 global_irq 9 high level)

[    0.000000] ACPI: IRQ0 used by override.

[    0.000000] ACPI: IRQ2 used by override.

[    0.000000] ACPI: IRQ9 used by override.

[    0.000000] ACPI: HPET id: 0x8086a201 base: 0xfed00000

[    0.000000] Using ACPI (MADT) for SMP configuration information

[    0.006351] ACPI: Core revision 20080609

[    0.008284] ACPI: Checking initramfs for custom DSDT

[    0.480325] ACPI: bus type pci registered

[    0.490204] ACPI: EC: Look up EC in DSDT

[    0.494610] ACPI: BIOS _OSI(Linux) query ignored via DMI

[    0.495800] ACPI: Interpreter enabled

[    0.495803] ACPI: (supports S0 S3 S4 S5)

[    0.495816] ACPI: Using IOAPIC for interrupt routing

[    0.496340] ACPI: EC: non-query interrupt received, switching to interrupt mode

[    0.516729] ACPI: EC: GPE = 0x18, I/O: command/status = 0x66, data = 0x62

[    0.516729] ACPI: EC: driver started in interrupt mode

[    0.516729] ACPI: PCI Root Bridge [PCI0] (0000:00)

[    0.520800] pci 0000:00:1f.0: quirk: region 1000-107f claimed by ICH6 ACPI/GPIO/TCO

[    0.522412] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0._PRT]

[    0.522840] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PEGP._PRT]

[    0.522987] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.RP01._PRT]

[    0.523127] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.RP02._PRT]

[    0.523266] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.RP03._PRT]

[    0.523407] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.RP04._PRT]

[    0.523547] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.RP05._PRT]

[    0.523687] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.RP06._PRT]

[    0.523843] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PCIB._PRT]

[    0.536446] ACPI: PCI Interrupt Link [LNKA] (IRQs 1 3 4 *5 6 7 10 12 14 15)

[    0.536446] ACPI: PCI Interrupt Link [LNKB] (IRQs 1 3 4 5 6 7 11 12 14 15) *10

[    0.536446] ACPI: PCI Interrupt Link [LNKC] (IRQs 1 3 4 5 6 *7 10 12 14 15)

[    0.536494] ACPI: PCI Interrupt Link [LNKD] (IRQs 1 3 4 5 6 7 11 12 14 15) *10

[    0.536611] ACPI: PCI Interrupt Link [LNKE] (IRQs 1 3 4 5 6 7 10 12 14 15) *0, disabled.

[    0.536728] ACPI: PCI Interrupt Link [LNKF] (IRQs 1 3 4 5 6 7 *11 12 14 15)

[    0.536844] ACPI: PCI Interrupt Link [LNKG] (IRQs 1 3 4 5 6 7 10 12 14 15) *11

[    0.536961] ACPI: PCI Interrupt Link [LNKH] (IRQs 1 3 4 5 6 7 11 12 14 15) *10

[    0.537034] pnp: PnP ACPI init

[    0.537034] ACPI: bus type pnp registered

[    0.540526] pnp: PnP ACPI: found 11 devices

[    0.540526] ACPI: ACPI bus type pnp unregistered

[    0.540526] PCI: Using ACPI for IRQ routing

[    1.608529] ACPI: SSDT 9FED71FD, 027A (r1  PmRef  Cpu0Ist     3000 INTL 20050624)

[    1.608955] ACPI: SSDT 9FED6CCE, 04AA (r1  PmRef  Cpu0Cst     3001 INTL 20050624)

[    1.611505] ACPI: CPU0 (power states: C1[C1] C2[C2] C3[C3])

[    1.611563] processor ACPI0007:00: registered as cooling_device0

[    1.611567] ACPI: Processor [CPU0] (supports 8 throttling states)

[    1.611929] ACPI: SSDT 9FED7477, 00C8 (r1  PmRef  Cpu1Ist     3000 INTL 20050624)

[    1.612266] ACPI: SSDT 9FED7178, 0085 (r1  PmRef  Cpu1Cst     3000 INTL 20050624)

[    1.633438] ACPI: CPU1 (power states: C1[C1] C2[C2] C3[C3])

[    1.633493] processor ACPI0007:01: registered as cooling_device1

[    1.633496] ACPI: Processor [CPU1] (supports 8 throttling states)

[    1.664422] ACPI: Thermal Zone [THRM] (48 C)

[  143.247086] ACPI: Battery Slot [BAT0] (battery present)

[  210.289820] ACPI: AC Adapter [AC] (on-line)

[  210.409221] ACPI: Power Button (FF) [PWRF]

[  210.473161] ACPI: Power Button (CM) [PWB]

[  210.586212] ACPI: Sleep Button (CM) [SLPB]

[  210.617681] ACPI: Lid Switch [LID]

[  211.039525] ACPI: WMI: Mapper loaded

[  211.480167] ACPI: Video Device [VGA] (multi-head: yes  rom: no  post: no)

[  270.581487] ACPI Exception (thermal-0469): AE_ERROR, ACPI thermal trip point state changed

[    0.006351] ACPI: Core revision 20080609

[    0.008284] ACPI: Checking initramfs for custom DSDT

[    0.480325] ACPI: bus type pci registered

[    0.490204] ACPI: EC: Look up EC in DSDT

[    0.494610] ACPI: BIOS _OSI(Linux) query ignored via DMI

[    0.495800] ACPI: Interpreter enabled

[    0.495803] ACPI: (supports S0 S3 S4 S5)

[    0.495816] ACPI: Using IOAPIC for interrupt routing

[    0.496340] ACPI: EC: non-query interrupt received, switching to interrupt mode

[    0.516729] ACPI: EC: GPE = 0x18, I/O: command/status = 0x66, data = 0x62

[    0.516729] ACPI: EC: driver started in interrupt mode

[    0.516729] ACPI: PCI Root Bridge [PCI0] (0000:00)

[    0.520800] pci 0000:00:1f.0: quirk: region 1000-107f claimed by ICH6 ACPI/GPIO/TCO

[    0.522412] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0._PRT]

[    0.522840] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PEGP._PRT]

[    0.522987] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.RP01._PRT]

[    0.523127] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.RP02._PRT]

[    0.523266] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.RP03._PRT]

[    0.523407] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.RP04._PRT]

[    0.523547] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.RP05._PRT]

[    0.523687] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.RP06._PRT]

[    0.523843] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PCIB._PRT]

[    0.536446] ACPI: PCI Interrupt Link [LNKA] (IRQs 1 3 4 *5 6 7 10 12 14 15)

[    0.536446] ACPI: PCI Interrupt Link [LNKB] (IRQs 1 3 4 5 6 7 11 12 14 15) *10

[    0.536446] ACPI: PCI Interrupt Link [LNKC] (IRQs 1 3 4 5 6 *7 10 12 14 15)

[    0.536494] ACPI: PCI Interrupt Link [LNKD] (IRQs 1 3 4 5 6 7 11 12 14 15) *10

[    0.536611] ACPI: PCI Interrupt Link [LNKE] (IRQs 1 3 4 5 6 7 10 12 14 15) *0, disabled.

[    0.536728] ACPI: PCI Interrupt Link [LNKF] (IRQs 1 3 4 5 6 7 *11 12 14 15)

[    0.536844] ACPI: PCI Interrupt Link [LNKG] (IRQs 1 3 4 5 6 7 10 12 14 15) *11

[    0.536961] ACPI: PCI Interrupt Link [LNKH] (IRQs 1 3 4 5 6 7 11 12 14 15) *10

[    0.537034] pnp: PnP ACPI init

[    0.537034] ACPI: bus type pnp registered

[    0.540526] pnp: PnP ACPI: found 11 devices

[    0.540526] ACPI: ACPI bus type pnp unregistered

[    0.540526] PCI: Using ACPI for IRQ routing

[    1.608529] ACPI: SSDT 9FED71FD, 027A (r1  PmRef  Cpu0Ist     3000 INTL 20050624)

[    1.608955] ACPI: SSDT 9FED6CCE, 04AA (r1  PmRef  Cpu0Cst     3001 INTL 20050624)

[    1.611505] ACPI: CPU0 (power states: C1[C1] C2[C2] C3[C3])

[    1.611563] processor ACPI0007:00: registered as cooling_device0

[    1.611567] ACPI: Processor [CPU0] (supports 8 throttling states)

[    1.611929] ACPI: SSDT 9FED7477, 00C8 (r1  PmRef  Cpu1Ist     3000 INTL 20050624)

[    1.612266] ACPI: SSDT 9FED7178, 0085 (r1  PmRef  Cpu1Cst     3000 INTL 20050624)

[    1.633438] ACPI: CPU1 (power states: C1[C1] C2[C2] C3[C3])

[    1.633493] processor ACPI0007:01: registered as cooling_device1

[    1.633496] ACPI: Processor [CPU1] (supports 8 throttling states)

[    1.664422] ACPI: Thermal Zone [THRM] (48 C)

[  143.247086] ACPI: Battery Slot [BAT0] (battery present)

[  210.289820] ACPI: AC Adapter [AC] (on-line)

[  210.409221] ACPI: Power Button (FF) [PWRF]

[  210.473161] ACPI: Power Button (CM) [PWB]

[  210.586212] ACPI: Sleep Button (CM) [SLPB]

[  210.617681] ACPI: Lid Switch [LID]

[  211.039525] ACPI: WMI: Mapper loaded

[  211.480167] ACPI: Video Device [VGA] (multi-head: yes  rom: no  post: no)

[  270.581487] ACPI Exception (thermal-0469): AE_ERROR, ACPI thermal trip point state changed
```

----------

## riczan

About that first bug (about existing 2 modes) I've seen it before and I don't think it is a real problem. I tried the suggested kernel option with no improvements (so no need to email anybody  :Smile:  ). As for the thermal bug I've also seen it but I haven't noticed any issues with my fans or temperatures so I'm not worried about that either. All I need is AC adapter so I can have a battery mode and have the nvidia card working with ACPI.

Are you moving to ubuntu? It is tempting... I've already done all the compiling here in gentoo (X, kde, gimp, firefox, etc etc) and are more familiar with portage so I'm going to give thi genkernel a chance and see how it goes. But my point remains... there is no such bug in DSDT for it works in the bootCDs so there is no need to patch it. I wonder where can we get help or report this? Nothing seems to be going on here.

I'll report back when I'm done with genkernel.

----------

## kodiakmax

Well, I don't plan to move to Ubuntu but you never know.   I like the way gentoo works.  Currently I'm using the Sabayon overlay for the quick binary installs of large packages.  So, I would like to get the ACPI working properly in my current setup.  It does seem to be a distro specific issue though if your 32bit gentoo live and the ubuntu 64bit work with the issue.  I sure would like to figure out the reason though; you know what I mean?

A quick search on the internet about that bios bug error says this

 *Quote:*   

> As this says, it is a BIOS bug, which means your hardware is broken, not the kernel.

 

So, it does look like the bios does have issues,  however some distros appear to be able to work around it...

*rant on*

It's too bad the smarter people around here don't pipe up though.   All I ever see in forums is "just google it." "did you search the forum" "It's in the wiki"  But if you ever have a real problem, nobody bothers to offer any help lol.  Not only that but we've offered a lot of info and dug into the intertubes for answers.  We've been doing a lot of testing of different things as well.  You'd think the devs would be interested wouldn't you?  Especially if other distros are not having the problem.  I'm tempted to check out Suse and redhat and fc and such just to see how they handle it.  In which case I might just jump ship to another distro.  I've posted in the Sabayon forums as well.  Guess what... No reply there either lol.  I'm carrying on a thread there by myself with progress reports and no replies yet lol.

*rant off*

Anyway,  I'll probably work this issue till I got no more ideas.  Then I'll see what I do.  I'll keep updating this thread with my progress at any rate.  Probably take a break from this problem for a day or so and clear my head.  Start fresh with a new persective; ya know?

I wish I could figure out why my machine is not loading that custom dsdt though.  Too wierd.

----------

## riczan

Ok, here are some more experiments I have done.

I emerge genkernel, emerge and "old" gentoo source 2.6.24 (because this is the same version as by liveUSB) and simply proceed as the gentoo handbook indicates, 

```

eselect kernel list

eselect kernel set X (where X is the number of the 2.6.24 kernel version)

genkernel --kerner-config config_from_liveUSB --menuconfig all

```

The --menuconfig option above is needed in my case because I'm using AHCI in the bios (activated by leaving the robson flag on). So I have to compile AHCI in the kernel, not as a module (the default in liveUSB).

This automatically copies 3 files to the boot directory (or partition) and you have to let grub.conf about them (instruction on the handbook)

I boot up my new genkernel and voila`, I get full support of ACPI. Problem is that the new genkernel directory is 2.2 Gb!!! and boot up is slow (not to mention the pentium-pro processor, read below).

With this kernel as the control experiment (hereafter referred to as genny), I have done the following variations to determine why exactly this is successful and not the customized kernel.

- Disable initrd (hardware autodetection) to see if we still get functional ACPI.

modify grub.conf to create an entry that load the same genny kernel but disabling hardware autodetection (disabling initrd in the kernel option, this is discussed in handbook).

result: same ACPI errors as before genny.

- initrd detects and loads a bunch of modules so try loading all modules detected and loaded by genny's initrd:

Get a copy of all modules loaded by genny: lsmod >modules. Copy those to /etc/modules.autoload/kernel-2.6, and reboot again into the genny-notinitrd grub entry

result: same ACPI errors as before genny. Very puzzling but ** Maybe the order in which modules are loaded is important... I have to test this yet. I took pictures with a digital camera to see the booting process in detail... desperate measures... 

- genny uses CPU: Pentium Pro, I want to use Core2. Change this and only this in the config file and reboot.

result: same ACPI errors! I tried this with the initrd on. This could be the main problem... the new DSDT table can only use Pentium Pro and not Core2... this would make sense in the WindowsXP philosophy, one OS for all possible PCs. They have to go after compatibility and not optimization.

My current conclusion is that we need 2 things: the Pentium Pro processor option and a module or initrd that I still need to figure out. This would also imply that the DSDT is not compatible with Core2 and needs to be patched. And the reason why it is still not working (our patched DSDT) is because we also need a module or the initrd that we still have to figure out.

Future work:

-Figure out what exactly initrd is doing for us, in the best of worlds it would be just module so we wouldn't need the autodetection every time.

- Try genkernel on a recent kernel, possibly tuxonice where I have hibernate working.

- come back to the patched DSDT and implement it together with the misterious initrd/module still to be identified.

If this doesn't work, decide if I really want to switch to pentium-pro and recompile everything just to have ac_adapter working. I'm sure a switch script could be used as a replacement of the missing ac_adapter error... after all, the battery directory is populated, that should be enough.

As for your other insights, I agree with you, I also feel kind of lonely here  :Smile: 

----------

## riczan

I think I got it and the solution is so simple you won't believe it.

I noticed that sometimes even "genny" would show ACPI errors in dmesg. So I traced down that to me sometimes forgetting to clear up the /etc/modules.autoload/kernel-2.6 file.

So my current theory is that... if you compile into the kernel the ACPI modules, they get loaded in the wrong order... specially the AC module seems to be loaded before something in the kernel is "ready".

This didn't happen in the genkernel because 1.- they are compiled as modules and 2.- they seem to be loaded in the right order (by the initrd hardware autodetection). But when I loaded those modules myself in the module.autoload/kernel-2.6 they might be loaded in the wrong order (even in genkernel) and they would generate ACPI errors.

The solution is therefore, to put them as loadable modules in the kernel (what ever version, it doesn't matter (I'm using tuxonice 2.6.28 )). I'm also using core2, so you can forget about my theories in previous messages.

And, if you get error messages, then simply modprobe -r ac, and reload and the /proc/acpi/ac_adapter will be populated.

So I guess we just need to figure out how we can convice the kernel to boot up the modules in the order we want... for instance it bothers me that even if my module.autoload/kernel-2.6 is empty, gentoo still loads some modules!!! I don't know how to disable that automatic feature. Time to google some more.

regards

I wanted to ask you about your nvidia driver. See my post here:

[url]

https://forums.gentoo.org/viewtopic-t-674819.html

[/url]

perhaps you can give me some feedback there about that issue.

Thanks

----------

## riczan

Some final tweaking I did:

Since the only ACPI module with problems is the ac I left only that as a module and the rest I compiled in the kernel (battery, dock, etc etc).

And I leave the ac until the very end of my modules.autoload.d/kernel-2.6 list, after agpgart, nvidia, alsa modules etc etc...

This seems to have left the ac module just enough time to loads when the kernel is ready for it. I got no error messages in dmesg.

good luck.

----------

## kodiakmax

OK I'll give that a try.  It makes sense As the ubuntu live cd that works for me also loads most of the ACPI config as modules.  It didn't even occur to me that the order might be screwing things up.

*Off Topic*

As for the nvidia issue.  I am having issues with nvidia drivers as well.  The only way for me to get it to work was install the binary nvidia drivers via the Sabayon overlay.  If I try to install from source I get all kinds of errors.  I could post up my xorg.conf for you if your interested.  But I'd try adding the Sabayon overlay and installing the binary real quick see if that works for you.  if you want a quick command-how-to let me know.

----------

## kodiakmax

Huh, how about that.  All I did was compile the ac adapter as module, leave the rest compiled into the kernel and reboot.  I didn't even have to adjust the load order of the module.

```
kodiakmax@DarkComet ~ $ dmesg |grep ACPI

[    1.128661] ACPI: Battery Slot [BAT0] (battery present)

[    1.131007] ACPI: Power Button (FF) [PWRF]

[    1.134006] ACPI: Power Button (CM) [PWB]

[    1.137013] ACPI: Sleep Button (CM) [SLPB]

[    1.137679] ACPI: Lid Switch [LID]

[    1.138239] ACPI: SSDT 9FED71FD, 027A (r1  PmRef  Cpu0Ist     3000 INTL 20050624)

[    1.138620] ACPI: SSDT 9FED6CCE, 04AA (r1  PmRef  Cpu0Cst     3001 INTL 20050624)

[    1.141239] ACPI: CPU0 (power states: C1[C1] C2[C2] C3[C3])

[    1.141276] processor ACPI_CPU:00: registered as cooling_device0

[    1.141279] ACPI: Processor [CPU0] (supports 8 throttling states)

[    1.141634] ACPI: SSDT 9FED7477, 00C8 (r1  PmRef  Cpu1Ist     3000 INTL 20050624)

[    1.141916] ACPI: SSDT 9FED7178, 0085 (r1  PmRef  Cpu1Cst     3000 INTL 20050624)

[    1.142741] ACPI: CPU1 (power states: C1[C1] C2[C2] C3[C3])

[    1.142773] processor ACPI_CPU:01: registered as cooling_device1

[    1.142776] ACPI: Processor [CPU1] (supports 8 throttling states)

[    1.162264] ACPI: Thermal Zone [THRM] (50 C)

[   11.629770] ACPI: AC Adapter [AC] (on-line)

[   11.834384] ACPI: Video Device [VGA] (multi-head: yes  rom: no  post: no)

[   12.016403] ACPI: I/O resource 0000:00:1f.3 [0x1c00-0x1c1f] conflicts with ACPI region SMBI [0x1c00-0x1c0f]

[   12.016405] ACPI: Device needs an ACPI driver

[   13.332303] nvidia 0000:01:00.0: power state changed by ACPI to D0

```

Things seem to be working OK so far.  But, I wonder why there are so few ACPI messages though.

----------

## IncredibleMrT

Sorry to hijack this thread. I have an ASUS X51RL series laptop. Over the past  few weeks it hangs under elevated cpu usage - particularly when doing a big emerge. I've done a little research and it appears it might be ACPI related. From dmesg, I see that my ACPI is tarnished by being compiled with MS compiler :

```

ACPI: RSDP 000F7F50, 0024 (r2 ACPIAM)

ACPI: XSDT 77FB0100, 0054 (r1 _ASUS_ Notebook  2000825 MSFT       97)

ACPI: FACP 77FB0290, 00F4 (r3 A.M.I  OEMFACP   2000825 MSFT       97)

ACPI: DSDT 77FB0630, 77A4 (r1  T12R0 T12R0000        0 INTL 20051117)

ACPI: FACS 77FBE000, 0040

ACPI: APIC 77FB0390, 005C (r1 A.M.I  OEMAPIC   2000825 MSFT       97)

ACPI: MCFG 77FB03F0, 003C (r1 A.M.I  OEMMCFG   2000825 MSFT       97)

ACPI: SLIC 77FB0430, 0176 (r1 _ASUS_ Notebook  2000825 MSFT       97)

ACPI: BOOT 77FB0600, 0028 (r1 A.M.I  OEMBOOT   2000825 MSFT       97)

ACPI: OEMB 77FBE040, 005B (r1 A.M.I  AMI_OEM   2000825 MSFT       97)

ACPI: Local APIC address 0xfee00000

```

I'm trying to rebuild my DSDT using 

```
iasl -tc dsdt.dsl
```

----------

## IncredibleMrT

(cont'd)

and here is the output from the iasl command

```

Intel ACPI Component Architecture

ASL Optimizing Compiler version 20090123 [Mar 18 2009]

Copyright (C) 2000 - 2009 Intel Corporation

Supports ACPI Specification Revision 3.0a

dsdt.dsl    31:                 Return (MNAM)

Error    4063 -      Object does not exist ^  (MNAM)

dsdt.dsl    36:                 Store (IKFG, Local0)

Error    4063 -     Object does not exist ^  (IKFG)

dsdt.dsl    37:                 If (ACPF)

Error    4063 -  Object does not exist ^  (ACPF)

dsdt.dsl    47:                 Store (\_TZ.RTMP (), Local0)

Error    4063 -          Object does not exist ^  (\_TZ.RTMP)

dsdt.dsl    48:                 Store (\_TZ.RFAN (), Local1)

Error    4063 -          Object does not exist ^  (\_TZ.RFAN)

dsdt.dsl    50:                 Add (\_TZ.KELV (Local0), Local1, Local0)

Error    4063 -        Object does not exist ^  (\_TZ.KELV)

dsdt.dsl    69:                 Store (Arg0, OSFG)

Error    4063 -           Object does not exist ^  (OSFG)

dsdt.dsl    74:                 Return (LBTN)

Error    4063 -      Object does not exist ^  (LBTN)

dsdt.dsl    79:                 Store (Arg0, LBTN)

Error    4063 -           Object does not exist ^  (LBTN)

dsdt.dsl    80:                 ^^PCI0.SBRG.EC0.STBR ()

Error    4064 -                                    ^ Object not found or not accessible from scope (^^PCI0.SBRG.EC0.STBR)

dsdt.dsl    85:                 OWLD (Arg0)

Error    4063 -                    ^ Object does not exist (OWLD)

dsdt.dsl    90:                 OBTD (Arg0)

Error    4063 -                    ^ Object does not exist (OBTD)

dsdt.dsl    95:                 Return (ORST ())

Error    4063 -      Object does not exist ^  (ORST)

dsdt.dsl   100:                 If (NATK ())

Error    4063 -  Object does not exist ^  (NATK)

dsdt.dsl   102:                     SWHG (Arg0)

Error    4063 -  Object does not exist ^  (SWHG)

dsdt.dsl   108:                 Return (LCDR)

Error    4063 -      Object does not exist ^  (LCDR)

dsdt.dsl   113:                 Return (OHWR ())

Error    4063 -      Object does not exist ^  (OHWR)

dsdt.dsl   118:                 Return (LCDV)

Error    4063 -      Object does not exist ^  (LCDV)

dsdt.dsl   133:                     Store (PTIM, PCDV)

Error    4063 -         Object does not exist ^  (PTIM)

dsdt.dsl   139:                     If (^^LID._LID ())

Error    4064 -                                  ^ Object not found or not accessible from scope (^^LID._LID)

dsdt.dsl   141:                         Store (PTIM, PCDV)

Error    4063 -             Object does not exist ^  (PTIM)

dsdt.dsl   145:                     If (LLess (\_TZ.RLTM (), PTMP))

Error    4063 -                  Object does not exist ^  (\_TZ.RLTM)

dsdt.dsl   145:                     If (LLess (\_TZ.RLTM (), PTMP))

Error    4063 -                           Object does not exist ^  (PTMP)

dsdt.dsl   147:                         Store (PTIM, PCDV)

Error    4063 -             Object does not exist ^  (PTIM)

dsdt.dsl   154:                         Store (PTIM, PCDV)

Error    4063 -             Object does not exist ^  (PTIM)

dsdt.dsl   173:                     ShiftLeft (QFAN, 0x10, Local0)

Error    4063 -             Object does not exist ^  (QFAN)

dsdt.dsl   188:                 Store (ASMI (Arg0), Local0)

Error    4063 -     Object does not exist ^  (ASMI)

dsdt.dsl   196:                     Return (PSTN)

Error    4063 -          Object does not exist ^  (PSTN)

dsdt.dsl   199:                 If (ACPF)

Error    4063 -  Object does not exist ^  (ACPF)

dsdt.dsl   201:                     ShiftRight (PSTN, 0x08, Local0)

Error    4063 -              Object does not exist ^  (PSTN)

dsdt.dsl   205:                     And (PSTN, 0xFF, Local0)

Error    4063 -       Object does not exist ^  (PSTN)

dsdt.dsl   213:                 Store (Arg0, SLMT)

Error    4063 -           Object does not exist ^  (SLMT)

dsdt.dsl   231:                     Return (RBYT (Local1, Local0))

Error    4063 -          Object does not exist ^  (RBYT)

dsdt.dsl   235:                     Return (WBYT (Local1, Local0, Local2))

Error    4063 -          Object does not exist ^  (WBYT)

dsdt.dsl   247:                     Return (RWRD (Local1, Local0))

Error    4063 -          Object does not exist ^  (RWRD)

dsdt.dsl   251:                     Return (WWRD (Local1, Local0, Local2))

Error    4063 -          Object does not exist ^  (WWRD)

dsdt.dsl   268:                         RBLK (Local1, Local0, Local3)

Error    4063 -      Object does not exist ^  (RBLK)

dsdt.dsl   272:                         WBLK (Local1, Local0, Local3)

Error    4063 -      Object does not exist ^  (WBLK)

dsdt.dsl   284:                         Return (DerefOf (Index (RBUF, Local2)))

Error    4063 -                              Object does not exist ^  (RBUF)

dsdt.dsl   289:                         Store (Local1, Index (RBUF, Local2))

Error    4063 -                            Object does not exist ^  (RBUF)

dsdt.dsl   304:                 If (LNotEqual (Acquire (P4SM, 0xFFFF), Zero))

Error    4063 -                      Object does not exist ^  (P4SM)

dsdt.dsl   309:                 Store (Local0, ^^PCI0.SBRG.EC0.CDT3)

Error    4064 -     Object not found or not accessible from scope ^  (^^PCI0.SBRG.EC0.CDT3)

dsdt.dsl   310:                 Store (Local1, ^^PCI0.SBRG.EC0.CDT2)

Error    4064 -     Object not found or not accessible from scope ^  (^^PCI0.SBRG.EC0.CDT2)

dsdt.dsl   311:                 Store (Local2, ^^PCI0.SBRG.EC0.CDT1)

Error    4064 -     Object not found or not accessible from scope ^  (^^PCI0.SBRG.EC0.CDT1)

dsdt.dsl   312:                 Store (Local3, ^^PCI0.SBRG.EC0.CMD1)

Error    4064 -     Object not found or not accessible from scope ^  (^^PCI0.SBRG.EC0.CMD1)

dsdt.dsl   314:                 While (LAnd (Local0, ^^PCI0.SBRG.EC0.CMD1))

Error    4064 -           Object not found or not accessible from scope ^  (^^PCI0.SBRG.EC0.CMD1)

dsdt.dsl   320:                 Store (^^PCI0.SBRG.EC0.CDT3, Local0)

Error    4064 -                                           ^ Object not found or not accessible from scope (^^PCI0.SBRG.EC0.CDT3)

dsdt.dsl   321:                 Store (^^PCI0.SBRG.EC0.CDT2, Local1)

Error    4064 -                                           ^ Object not found or not accessible from scope (^^PCI0.SBRG.EC0.CDT2)

dsdt.dsl   322:                 Store (^^PCI0.SBRG.EC0.CDT1, Local2)

Error    4064 -                                           ^ Object not found or not accessible from scope (^^PCI0.SBRG.EC0.CDT1)

dsdt.dsl   323:                 Store (^^PCI0.SBRG.EC0.CMD1, Local3)

Error    4064 -                                           ^ Object not found or not accessible from scope (^^PCI0.SBRG.EC0.CMD1)

dsdt.dsl   324:                 Release (P4SM)

Error    4063 -       Object does not exist ^  (P4SM)

dsdt.dsl   792:         If (DTSE)

Error    4063 -                ^ Object does not exist (DTSE)

dsdt.dsl   802:             If (LAnd (DTSE, MPEN))

Error    4063 -    Object does not exist ^  (DTSE)

dsdt.dsl   802:             If (LAnd (DTSE, MPEN))

Error    4063 -          Object does not exist ^  (MPEN)

dsdt.dsl   822:             Notify (\_TZ.THRM, 0x80)

Error    4063 -       Object does not exist ^  (\_TZ.THRM)

dsdt.dsl  1033:                 LNKA, 

Error    4063 -                    ^ Object does not exist (LNKA)

dsdt.dsl  1041:                 LNKB, 

Error    4063 -                    ^ Object does not exist (LNKB)

dsdt.dsl  1049:                 LNKC, 

Error    4063 -                    ^ Object does not exist (LNKC)

dsdt.dsl  1057:                 LNKD, 

Error    4063 -                    ^ Object does not exist (LNKD)

dsdt.dsl  1065:                 LNKA, 

Error    4063 -                    ^ Object does not exist (LNKA)

dsdt.dsl  1073:                 LNKB, 

Error    4063 -                    ^ Object does not exist (LNKB)

dsdt.dsl  1081:                 LNKC, 

Error    4063 -                    ^ Object does not exist (LNKC)

dsdt.dsl  1089:                 LNKD, 

Error    4063 -                    ^ Object does not exist (LNKD)

dsdt.dsl  1097:                 LNKG, 

Error    4063 -                    ^ Object does not exist (LNKG)

dsdt.dsl  1181:                 LNKC, 

Error    4063 -                    ^ Object does not exist (LNKC)

dsdt.dsl  1189:                 LNKD, 

Error    4063 -                    ^ Object does not exist (LNKD)

dsdt.dsl  1197:                 LNKA, 

Error    4063 -                    ^ Object does not exist (LNKA)

dsdt.dsl  1205:                 LNKB, 

Error    4063 -                    ^ Object does not exist (LNKB)

dsdt.dsl  1249:                 LNKD, 

Error    4063 -                    ^ Object does not exist (LNKD)

dsdt.dsl  1257:                 LNKA, 

Error    4063 -                    ^ Object does not exist (LNKA)

dsdt.dsl  1265:                 LNKB, 

Error    4063 -                    ^ Object does not exist (LNKB)

dsdt.dsl  1273:                 LNKC, 

Error    4063 -                    ^ Object does not exist (LNKC)

dsdt.dsl  1317:                 LNKA, 

Error    4063 -                    ^ Object does not exist (LNKA)

dsdt.dsl  1325:                 LNKB, 

Error    4063 -                    ^ Object does not exist (LNKB)

dsdt.dsl  1333:                 LNKC, 

Error    4063 -                    ^ Object does not exist (LNKC)

dsdt.dsl  1341:                 LNKD, 

Error    4063 -                    ^ Object does not exist (LNKD)

dsdt.dsl  1385:                 LNKB, 

Error    4063 -                    ^ Object does not exist (LNKB)

dsdt.dsl  1393:                 LNKC, 

Error    4063 -                    ^ Object does not exist (LNKC)

dsdt.dsl  1401:                 LNKD, 

Error    4063 -                    ^ Object does not exist (LNKD)

dsdt.dsl  1409:                 LNKA, 

Error    4063 -                    ^ Object does not exist (LNKA)

dsdt.dsl  1453:                 LNKC, 

Error    4063 -                    ^ Object does not exist (LNKC)

dsdt.dsl  1461:                 LNKD, 

Error    4063 -                    ^ Object does not exist (LNKD)

dsdt.dsl  1469:                 LNKA, 

Error    4063 -                    ^ Object does not exist (LNKA)

dsdt.dsl  1477:                 LNKB, 

Error    4063 -                    ^ Object does not exist (LNKB)

dsdt.dsl  1521:                 LNKD, 

Error    4063 -                    ^ Object does not exist (LNKD)

dsdt.dsl  1529:                 LNKA, 

Error    4063 -                    ^ Object does not exist (LNKA)

dsdt.dsl  1537:                 LNKB, 

Error    4063 -                    ^ Object does not exist (LNKB)

dsdt.dsl  1545:                 LNKC, 

Error    4063 -                    ^ Object does not exist (LNKC)

dsdt.dsl  1589:                 LNKA, 

Error    4063 -                    ^ Object does not exist (LNKA)

dsdt.dsl  1597:                 LNKB, 

Error    4063 -                    ^ Object does not exist (LNKB)

dsdt.dsl  1605:                 LNKC, 

Error    4063 -                    ^ Object does not exist (LNKC)

dsdt.dsl  1613:                 LNKD, 

Error    4063 -                    ^ Object does not exist (LNKD)

dsdt.dsl  1621:                 LNKB, 

Error    4063 -                    ^ Object does not exist (LNKB)

dsdt.dsl  1629:                 LNKC, 

Error    4063 -                    ^ Object does not exist (LNKC)

dsdt.dsl  1637:                 LNKD, 

Error    4063 -                    ^ Object does not exist (LNKD)

dsdt.dsl  1645:                 LNKA, 

Error    4063 -                    ^ Object does not exist (LNKA)

dsdt.dsl  1653:                 LNKB, 

Error    4063 -                    ^ Object does not exist (LNKB)

dsdt.dsl  1661:                 LNKC, 

Error    4063 -                    ^ Object does not exist (LNKC)

dsdt.dsl  1669:                 LNKD, 

Error    4063 -                    ^ Object does not exist (LNKD)

dsdt.dsl  1677:                 LNKA, 

Error    4063 -                    ^ Object does not exist (LNKA)

dsdt.dsl  1785:                 LNKE, 

Error    4063 -                    ^ Object does not exist (LNKE)

dsdt.dsl  1793:                 LNKF, 

Error    4063 -                    ^ Object does not exist (LNKF)

dsdt.dsl  1801:                 LNKG, 

Error    4063 -                    ^ Object does not exist (LNKG)

dsdt.dsl  1809:                 LNKH, 

Error    4063 -                    ^ Object does not exist (LNKH)

dsdt.dsl  4041:                 If (STHP)

Error    4095 -                  ^ syntax error, unexpected PARSEOP_IF

dsdt.dsl  4176:                 If (STHP)

Error    4095 -                  ^ syntax error, unexpected PARSEOP_IF

dsdt.dsl  4189:                                 Notify (\_SB.PCI0.SATA.PRID.P_D0, One)

Error    4063 -                                          Object does not exist ^  (\_SB.PCI0.SATA.PRID.P_D0)

dsdt.dsl  4200:                                 Notify (\_SB.PCI0.SATA.SECD.S_D0, One)

Error    4063 -                                          Object does not exist ^  (\_SB.PCI0.SATA.SECD.S_D0)

dsdt.dsl  4211:                                 Notify (\_SB.PCI0.SATA.PRID.P_D1, One)

Error    4063 -                                          Object does not exist ^  (\_SB.PCI0.SATA.PRID.P_D1)

dsdt.dsl  4222:                                 Notify (\_SB.PCI0.SATA.SECD.S_D1, One)

Error    4063 -                                          Object does not exist ^  (\_SB.PCI0.SATA.SECD.S_D1)

dsdt.dsl  4309:                         Return (AR05)

Error    4067 -                                    ^ Object is not accessible from this scope (AR05)

dsdt.dsl  4312:                     Return (PR05)

Error    4067 -                                ^ Object is not accessible from this scope (PR05)

dsdt.dsl  4316:     }, NotSerialized)

Error    4095 -     ^ syntax error, unexpected '}', expecting $end

ASL Input:  dsdt.dsl - 8724 lines, 246574 bytes, 1465 keywords

Compilation complete. 113 Errors, 0 Warnings, 0 Remarks, 0 Optimizations

```

As you can see, 113 errors. The vast majority seem to be trying to reference something that doesn't exist.Last edited by IncredibleMrT on Wed Mar 18, 2009 2:24 pm; edited 1 time in total

----------

## IncredibleMrT

(cont'd)

Here is the dsdt.dsl file that was used to generate the above set of errors

http://pastebin.com/f2368a2bb

Is there anyone who could help me sort this or perhaps anyone with a working DSDT for an ASUS X51RL?

Thanks in advance

----------

## lazaro

Please help me,

I'm having trouble repairing my dsdt.dsl, 8 errors are found, follow the steps performed:

  cat / proc / acpi / dsdt> dsdt.jca

  iasl-d dsdt.jca

Intel ACPI Component Architecture

AML disassembler version 20061109 [May 18 2007]

Copyright (C) 2000 - 2006 Intel Corporation

Supports ACPI Specification Revision 3.0a

Loading ACPI table from file dsdt.jca

Acpi table [DSDT] successfully installed and loaded

Pass 1 parse of [DSDT]

Pass 2 parse of [DSDT]

Deferred Parsing opcodes (Methods / Buffers / Packages / Regions)

.................................................. .................................................. .................................................. .................................................. .................................................. .................................................. .................................................. .................................................. ............................

Parsing completed

Found 1 external control methods, reparsing with new information

Pass 1 parse of [DSDT]

Pass 2 parse of [DSDT]

Deferred Parsing opcodes (Methods / Buffers / Packages / Regions)

.................................................. .................................................. .................................................. .................................................. .................................................. .................................................. .................................................. .................................................. ............................

Parsing completed

Disassembly completed, written to "dsdt.dsl"

Phoenix:  iasl-tc dsdt.dsl

Intel ACPI Component Architecture

ASL Optimizing Compiler version 20061109 [May 18 2007]

Copyright (C) 2000 - 2006 Intel Corporation

Supports ACPI Specification Revision 3.0a

dsdt.dsl 3622: Name (_T_0, Zero)

Error 4081 - Use of reserved word ^ (_T_0)

dsdt.dsl 3821: Name (_T_0, Zero)

Error 4081 - Use of reserved word ^ (_T_0)

dsdt.dsl 3907: Name (_T_1, Zero)

Error 4081 - Use of reserved word ^ (_T_1)

dsdt.dsl 3968: Name (_T_2, Zero)

Error 4081 - Use of reserved word ^ (_T_2)

dsdt.dsl 4327: Name (_T_0, Zero)

Error 4081 - Use of reserved word ^ (_T_0)

dsdt.dsl 4396: Name (_T_1, Zero)

Error 4081 - Use of reserved word ^ (_T_1)

dsdt.dsl 4457: Name (_T_2, Zero)

Error 4081 - Use of reserved word ^ (_T_2)

dsdt.dsl 6021: Name (_T_0, Zero)

Error 4081 - Use of reserved word ^ (_T_0)

ASL Input: dsdt.dsl - 7299 lines, 231,614 bytes, 2845 keywords

Compilation complete. 8 Errors, 0 Warnings, 0 Remarks, 3 Optimizations

I am grateful if someone can work, what happens is that the keys ñ functions work, eg if I disable the acpi in the boot devices (wireless / webcam / network .....) stop working, but the keys functions fn + F4 + F7 and fn + f8 fn return to work.

----------

## kernelhacker

Hi again,

 *kodiakmax wrote:*   

> OK I changed all ^CPU0._PPC calls to CPU0.PPC and now only get 12 errors.  the new list is below.
> 
> It looks like kernelhacker is having the same issue I am.  Although I'm not suprised.  He has the same laptop it looks like lol. Damn Clevo and their buggy DSDT lol.
> 
> 

 

Yeah, but i'm not sure if i should be happy, that we are two with the same problem now ;=

Well, compiling the ACPI parts as modules worked for some of my problems - especially my nvidia card now detects the powersource correctly and i finally have higher clock frequencies.

But: I'd like to have some more accurate battery information. I only get "current rate: unknown". Is there any way to fix that?

Thanks for help,

Stefan

----------

## Belliash

Where can i find iasl? It is available on intel website no longer ;(

----------

## jetblack

 *Belliash wrote:*   

> Where can i find iasl? It is available on intel website no longer ;(

 

It looks like the latest version is kept here. You'll have to build it from the source, but it seems straightforward enough.

----------

## salmonix

Hi there, 

I have an old Compaq Armada 1750 with broken ACPI (or simply written for Wintendo full of OS conditionals). Now, I can find a ? patch ? at

http://acpi.sourceforge.net/dsdt/view.php?id=168

reportedly worth to try but I do not know what to do with it. Patch against what? I have my dsdt caught, disassembled, even minor bugfix I could do, but no way have I been able to find out what to do with this patch. 

Unfortunately I need acpi on this box because its apm freezes X occasionally and it has ended up loosing some hours work.

It may also be responsible for some other minor issues, and I want to monitor batteries separately (yes, this old box has 2 battery bays !) to change a spare one, and so on.

----------

