Hi, Maxim.  Thanks for reporting and reminding us.

I think this is very difficult to fix, because;
 1. Basically, this is a bug in BIOS, should be reported to vendor.
 2. ACPI CA is developed by Intel.  We'd like to have less local
    workaround changes as possible.
 3. I'm not sure whether suggested patches (buffer size dynamicaly expanding)
    in [acpi-jp 1315] is correct fix, maybe not.  Probably another approach
    can be considered (e.g. just ignore AE_AML_BUFFER_LIMIT and continue
    interpreter execution).

I'll describe again the problem.  This method is like this;
                Method(_CRS) {
                    Name(BUF0, Buffer(0x18) {0x47, 0x1, 0xf2, 0x3, 0xf2, 0x3,
                               0x0, 0x4, 0x47, 0x1, 0xf7, 0x3, 0xf7, 0x3, 0x0,
                               0x1, 0x22, 0x40, 0x0, 0x2a, 0x4, 0x0, 0x79, 0x0 })
                    CreateByteField(BUF0, 0x2, IOLO)
                    CreateByteField(BUF0, 0x3, IOHI)
                    CreateByteField(BUF0, 0x4, IORL)
                    CreateByteField(BUF0, 0x5, IORH)
                    CreateByteField(BUF0, 0x19, IRQL)
                    CreateByteField(BUF0, 0x1c, DMAV)
                    Return(BUF0)
                }

The problem is that this AML is trying to create a field at exceeded
position (0x19) of the Buffer (size is 0x18).
And strangely, this method just return the buffer w/o any changes
after CreateByteField operations. I guess that BIOS writer forgotten to
delete CreateByteField statements, or change the buffer size.

Now that we have DSDT override patches;
http://home.jp.freebsd.org/cgi-bin/showmail/acpi-jp/1347
or
http://home.jp.freebsd.org/cgi-bin/showmail/acpi-jp/1349

and AML disassembler (acpidump), and ASL compiler (iasl) in
ports/devel/acpicatools/.

Maxim, could you apply the following patches and try DSDT overriding?

Thanks

--- Tyan-S1590.asl.org  Wed Oct 24 22:00:44 2001
+++ Tyan-S1590.asl      Wed Oct 24 22:02:09 2001
@@ -884,12 +884,14 @@
                 }
                 Method(_CRS) {
                     Name(BUF0, Buffer(0x18) {0x47, 0x1, 0xf2, 0x3, 0xf2, 0x3, 0x0, 
0x4, 0x47, 0x1, 0xf7, 0x3, 0xf7, 0x3, 0x0, 0x1, 0x22, 0x40, 0x0, 0x2a, 0x4, 0x0, 0x79, 
0x0 })
+/*
                     CreateByteField(BUF0, 0x2, IOLO)
                     CreateByteField(BUF0, 0x3, IOHI)
                     CreateByteField(BUF0, 0x4, IORL)
                     CreateByteField(BUF0, 0x5, IORH)
                     CreateByteField(BUF0, 0x19, IRQL)
                     CreateByteField(BUF0, 0x1c, DMAV)
+*/
                     Return(BUF0)
                 }
                 Name(_PRS, Buffer(0x1a) {0x30, 0x47, 0x1, 0xf2, 0x3, 0xf2, 0x3, 0x0, 
0x4, 0x47, 0x1, 0xf7, 0x3, 0xf7, 0x3, 0x0, 0x1, 0x22, 0x40, 0x0, 0x2a, 0x4, 0x0, 0x38, 
0x79, 0x0 })

To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-current" in the body of the message

Reply via email to