Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 23 Dec 2003 15:34:50 -0000
From:      John Baldwin <jhb@FreeBSD.org>
To:        Peter Schultz <pmes@bis.midco.net>
Cc:        acpi-jp@jp.FreeBSD.org
Subject:   Re: new interrupts not working for me
Message-ID:  <XFMail.20031223103445.jhb@FreeBSD.org>
In-Reply-To: <3FE782FC.5040408@bis.midco.net>

next in thread | previous in thread | raw e-mail | index | archive | help

On 22-Dec-2003 Peter Schultz wrote:
> John Baldwin wrote:
>> On 22-Dec-2003 Peter Schultz wrote:
>> 
>>>John Baldwin wrote:
>>>
>>>>On 05-Nov-2003 Peter Schultz wrote:
>>>>
>>>>
>>>>>I have a Tyan S1832DL w/dual pii 350s and it's not able to boot.  Seems 
>>>>>to be having trouble with my adaptec scsi controller, I get a whole 
>>>>>bunch of output like this hand transcribed bit, it comes after "waiting 
>>>>>15 seconds for scsi devices to settle":
>>>>>
>>>>>ahc0 timeout SCB already complete interrupts may not be functioning
>>>>>Infinite interrupt loop INTSTAT=0(probe3:ahc0:0:3:0): SCB 0x6 - timed out
>>>>>
>>>>>Anyone else seeing this?  There are probably 100+ related lines of 
>>>>>output, I'll have to configure serial debugging if you need to see it.
>>>>
>>>>
>>>>The dmesg output excluding all the ahc0 errors would help figure out
>>>>why your interrupts aren't working.  However, I just committed a patch
>>>>that might fix your problem.
>>>>
>>>
>>>Here is the output I was able to capture:
>> 
>> 
>> Disable ACPI for now.  It looks like you have a buggy BIOS.
>> Can you put your ASL up at a URL somewhere?
>> 
> http://bis.midco.net/pmes/tyan_s1832dl.asl

Oh... my... goodness.  Go beat your BIOS writer UP!
NOW!

Basically, PCI interrupts are supposed to be routed differently
depending on whether or not we are using the old PIC or the newer
APIC mode.  We tell your BIOS that by executing the _PIC method
specifiying 0 for PIC and 1 for APIC.  Your BIOS does have that:

        Name (APIC, 0x00)
        Method (_PIC, 1, NotSerialized)
        {
            Store (Arg0, APIC)
        }

However, it ignores it.  Instead, it always uses the APIC for
Windows NT and uses the PIC for everything else:

            Method (_PRT, 0, NotSerialized)
            {
                ...
                If (MCTH (\_OS, "Microsoft Windows NT"))
                {
                    Return (PIC1)
                }
                Else
                {
                    Return (PIC0)
                }
            }

Does this board work in SMP mode in, say, XP or Linux?  From
the above it seems it wouldn't. :(  It needs to be testing
the value of the APIC variable to determine which table to use,
not the OS name.  See if there's a BIOS update.  If there isn't,
go complain to your motherboard manufacturer to get it fixed.
If you want to get your BIOS working for now, the guys on the
acpi-jp@ list (cc'd) can help you patch your AML to fix this
brain damage and get your machine working.  This is the worst
use of _OS I have seen to date myself.

-- 

John Baldwin <jhb@FreeBSD.org>  <><  http://www.FreeBSD.org/~jhb/
"Power Users Use the Power to Serve!"  -  http://www.FreeBSD.org/



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?XFMail.20031223103445.jhb>