Re: new MB = ACPI Errors?

From: Michael Edenfield <kutulu_at_kutulu.org>
Date: Mon, 8 Sep 2003 20:46:14 -0400
* Steve Ames <steve_at_energistic.com> [030908 20:26]:
> 
> Hey. I installed a new motherboard today and now I get a lot of ACPI
> errors (with a kernel from today and one from a few days back). This
> anything to worry about?

Not really, just annoying.  A fair number (all that I've seen!) of
motherboard ship with ACPI tables that are buggy.  Namely, they are
bug-for-bug compatible with Microsoft's much more lenient ACPI
interpreter.  The stricter one built into FreeBSD chokes on a lot of
things.

The short answer is, unless you have hardware that's actually not
functioning properly, you can usually ignore those messages.  You can
also just turn off ACPI and they'll go away.  (But you're likely to
replace them with a bunch of "PNP0501 Could not assign resources" type
messages, it's a toss-up.)

If you are so inclined, it's often very easy to fix these things.
Install the devel/acpicatools port, then use the ASL compiler and
decompiler like so:

acpidump -o foo.dsdt -d > foo.asl
iasl foo.asl

You will likely get a lot of errors at that point.  Not knowing anything
about ACPI I was able to figure out the really easy ones in a few hours.
In particular, watch for things like this:

  foo.asl  1577:                     Method (_STA, 0, NotSerialized)
  Warning  2019 -                               ^ Not all control paths
  return a value (_STA)

These are harmless but easy to fix.  Stick Return(0) inside the blocks
that are missing them.  The line numbers should give you a good idea.  

  foo.asl   857:                 Field (PSRG, DWordAcc, NoLock,
  Preserve)
  Error    1047 -                          ^ Access width is greater than
  region size

These are a bit tricker.  It means a field was defined inside of an ACPI
region that is bigger than the region itself.  The offending lines are:

                OperationRegion (PSRG, SystemMemory, 0x0410, 0x01)
                Field (PSRG, DWordAcc, NoLock, Preserve)

The 0x01 at the end of the first line means this region is 1 byte big;
the DWordAcc in the second line means there's a field that's 4 bytes big
in that region.  Not good :)  In my case simply making the region
bigger:

                OperationRegion (PSRG, SystemMemory, 0x0410, 0x04)
                Field (PSRG, DWordAcc, NoLock, Preserve)

Solved the compile problems.

Any more complex ACPI problems you can probably post here and get some
assistance from the numerous people who fixed their own ACPI tables.
There's also numerous examples on the web of fixed ASL code that may
solve similar problems to your own -- hit google and look for the error
messages.

After that, just copy the .aml file that iasl outputs into /boot and
put this in loader.conf:

acpi_dsdt_load="YES"            # DSDT Overriding
acpi_dsdt_type="acpi_dsdt"      # Don't change this
acpi_dsdt_name="/boot/foo.aml"

--Mike


Received on Mon Sep 08 2003 - 15:46:16 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:37:21 UTC