From owner-acpi-jp@jp.freebsd.org  Wed Oct  3 16:31:27 2001
Received: (from daemon@localhost)
	by castle.jp.freebsd.org (8.9.3+3.2W/8.7.3) id QAA11239;
	Wed, 3 Oct 2001 16:31:27 +0900 (JST)
	(envelope-from owner-acpi-jp@jp.FreeBSD.org)
Received: from mass.dis.org (mass.dis.org [216.240.45.41])
	by castle.jp.freebsd.org (8.9.3+3.2W/8.7.3) with ESMTP id QAA11234
	for <acpi-jp@jp.freebsd.org>; Wed, 3 Oct 2001 16:31:26 +0900 (JST)
	(envelope-from msmith@mass.dis.org)
Received: from mass.dis.org (localhost [127.0.0.1])
	by mass.dis.org (8.11.6/8.11.3) with ESMTP id f937fHt07698;
	Wed, 3 Oct 2001 00:41:17 -0700 (PDT)
	(envelope-from msmith@mass.dis.org)
Message-Id: <200110030741.f937fHt07698@mass.dis.org>
X-Mailer: exmh version 2.1.1 10/15/1999
To: acpi-jp@jp.freebsd.org
cc: kabaev@bellatlantic.net
In-reply-to: Your message of "Sun, 30 Sep 2001 19:38:18 +0900."
             <20010930.193818.74757024.iwasaki@jp.FreeBSD.org> 
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Date: Wed, 03 Oct 2001 00:41:17 -0700
From: Mike Smith <msmith@freebsd.org>
Reply-To: acpi-jp@jp.freebsd.org
Precedence: list
X-Distribute: distribute version 2.1 (Alpha) patchlevel 24e+010328
X-Sequence: acpi-jp 1325
Subject: [acpi-jp 1325] Re: CURRENT crashes in acpi on IBM ThnkPad 77ED 
Errors-To: owner-acpi-jp@jp.freebsd.org
Sender: owner-acpi-jp@jp.freebsd.org
X-Originator: msmith@freebsd.org


Looking at this a bit more carefully, at least in some cases the BIOS is 
trying to use Fatal() to return an error to the OS.  For example:

                Method(_SRS, 1) {
                    CreateWordField(Arg0, 0x2, IOAR)
                    CreateWordField(Arg0, 0x9, IRQM)
                    If(LEqual(IOAR, 0x03f8)) {
                        Store(0xfe, Local0)
                        Store(0x0, Local1)
                    }
                    Else {
                        If(LEqual(IOAR, 0x02f8)) {
                            Store(0xbe, Local0)
                            Store(0x1, Local1)
                        }
                        Else {
                            If(LEqual(IOAR, 0x03e8)) {
                                Store(0xfa, Local0)
                                Store(0x7, Local1)
                            }
                            Else {
                                If(LEqual(IOAR, 0x02e8)) {
                                    Store(0xba, Local0)
                                    Store(0x5, Local1)
                                }
                                Else {
                                    Fatal(0x2, 0x90000002, 0x0)
                                }
                            }
                        }
                    }
...

This is checking the arguments to the _SRS method, and triggering a 
Fatal() exception if the argument is bogus.

It would help, of course, if they used a different set of arguments to 
Fatal() so that we knew what was going on, and particularly which one we 
had hit.  I find it disturbing that there's at least one Fatal() op in 
here that will trigger if the NVRAM is corrupted. 8(


-- 
... every activity meets with opposition, everyone who acts has his
rivals and unfortunately opponents also.  But not because people want
to be opponents, rather because the tasks and relationships force
people to take different points of view.  [Dr. Fritz Todt]
           V I C T O R Y   N O T   V E N G E A N C E


