From owner-freebsd-acpi@FreeBSD.ORG Tue Mar 11 11:30:07 2008 Return-Path: Delivered-To: freebsd-acpi@hub.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 98EA7106569B for ; Tue, 11 Mar 2008 11:30:07 +0000 (UTC) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2001:4f8:fff6::28]) by mx1.freebsd.org (Postfix) with ESMTP id 70D7F8FC20 for ; Tue, 11 Mar 2008 11:30:07 +0000 (UTC) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (gnats@localhost [127.0.0.1]) by freefall.freebsd.org (8.14.2/8.14.2) with ESMTP id m2BBU7xV014926 for ; Tue, 11 Mar 2008 11:30:07 GMT (envelope-from gnats@freefall.freebsd.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.14.2/8.14.1/Submit) id m2BBU7GV014923; Tue, 11 Mar 2008 11:30:07 GMT (envelope-from gnats) Date: Tue, 11 Mar 2008 11:30:07 GMT Message-Id: <200803111130.m2BBU7GV014923@freefall.freebsd.org> To: freebsd-acpi@FreeBSD.org From: Dan Lukes Cc: Subject: Re: kern/121558: Supermicro X7SB4 Fatal trap 12 when ACPI disabled X-BeenThere: freebsd-acpi@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: Dan Lukes List-Id: ACPI and power management development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 11 Mar 2008 11:30:07 -0000 The following reply was made to PR kern/121558; it has been noted by GNATS. From: Dan Lukes To: Leon Kos Cc: jhb@freebsd.org, volker@vwsoft.com, bug-followup@freebsd.org Subject: Re: kern/121558: Supermicro X7SB4 Fatal trap 12 when ACPI disabled Date: Tue, 11 Mar 2008 11:53:23 +0100 > ioapic_get_vector(0,13) at ioapic_get_vector+0x0a > mptable_pci_route_interrupt_handler(c009de3d,c1020890) at mptable_pci_route_interrupt_handler+0x35 The function implementation: ------------------ > ioapic_get_vector(void *cookie, u_int pin) > { > struct ioapic *io; > > io = (struct ioapic *)cookie; > if (pin >= io->io_numintr) ... ------------------ E.g. the ioapic_get_vector seems to be called with NULL cookie which is used as a valid pointer a dereferenced - exactly as I fabulate in previous email. The function implementation: ------------------ > mptable_pci_route_interrupt_handler(u_char *entry, void *arg) > { > ... > /* Make sure the APIC maps to a known APIC. */ > KASSERT(ioapics[intr->dst_apic_id] != NULL, > ("No I/O APIC %d to route interrupt to", intr->dst_apic_id)); > ... > vector = ioapic_get_vector(ioapics[intr->dst_apic_id], > intr->dst_apic_int); ------------------ As your kernel is compiled without INVARIANTS the KASSERT test become void and ioapic_get_vector may be called with NULL causing the abend later. It's because the intr->dst_apic_id point to APIC that doesn't exist (you can run kernel with INVARIANTS to display the dst_apic_id in question). Please note the MPTABLE generated by BIOS MAY change also when ACPI is (de)activated in BIOS. You may try to boot with ACPI enabled in BIOS but disabled in OS. It may (or may not) help to you. It may be problem with MPTABLE itself (eg. not in FreeBSD) or with it's parsing (e.g. in FreeBSD). MPTABLE is generated by BIOS. Look into BIOS if MPTABLE version can be set then use 1.4. Especially dont use "auto" as version even such option present. The output of mptable command may help to us. Dan